Jump to content

Keeping my GUI not focused


Info
 Share

Recommended Posts

  • Moderators

Info,

GUISetState(@SW_SHOWNOACTIVATE)

M23

P.S. The Search button is in the title bar to the right. :-)

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

Info,

That macro will only work if you create the GUI in Autoit - and you did say "my GUI". :-)

If you want to "unfocus" a third party GUI, try looking at _WinAPI_GetFocus and _WinAPI_SetFocus in the Help file. You use the first to find out which window has the focus, then you can click elsewhere and finally reset the focus to the original window with the second.

I am unsure quite what are trying to do in your code snippet - it seems to bear no relation to the link you provided - so I cannot really help there. Can you explain a little more?

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

Info,

If you want help, the onus is on you to explain - not for me to guess. :-)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

Info,

This will keep the focus on the "Focused" GUI even though you click on the "Test" GUI.

#include <GUIConstantsEx.au3>
#include <WinAPI.au3>

$hGUI2 = GUICreate("Focused", 200, 200, 100, 100)
GUISetState()
$hWnd = WinGetHandle("Focused")


$hGUI = GUICreate("Test", 500, 500)

$hButton = GUICtrlCreateButton("Test", 10, 10, 80, 30)

GUISetState()

_WinAPI_SetFocus($hWnd)

While 1

    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hButton
            ConsoleWrite("Hit" & @CRLF)
            _WinAPI_SetFocus($hWnd)
    EndSwitch

WEnd

Is this what you are looking for?

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Unfortunately, this is not what I'm looking for.

the Test GUI still gets focused for a bit when I'm pressing the button.

I want it to be unable to ever be focused.

Maybe something like this.

Note it only works with the latest beta 3.3.1.1

#include <windowsconstants.au3>

$gui = GUICreate("no focus", 400, 400, 400, 400)
WinSetOnTop($gui, "", 1)
GUISetState(@SW_SHOW)
ConsoleWrite(Hex($gui, 4) & @CRLF)
$ch = GUICreate("ch", 200, 200, 20, 40, $WS_POPUP, $WS_EX_MDICHILD, $gui)
GUISetState()
GUISetBkColor(0)
$btn = GUICtrlCreateButton("click me", 0, 0, 80, 22)
Global $setf = 0

While 1
    $Msg = GUIGetMsg()
    If $Msg = -3 Then Exit

    If $Msg = $btn Then ConsoleWrite("btn pressed" & @CRLF)

WEnd
Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
Link to comment
Share on other sites

  • Moderators

Info,

I am not sure that is possible. If the GUI with the button is never activated/focused, it cannot react to a click. Look at this:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>

$_NOACTIVATE=0x08000000

$hGUI2 = GUICreate("Focused", 200, 200, 100, 100)
GUISetState()
$hWnd = WinGetHandle("Focused")


$hGUI = GUICreate("Test", 500, 500)

$hButton = GUICtrlCreateButton("Test", 10, 10, 80, 30)

GUISetState(@SW_SHOWNOACTIVATE)

GUIRegisterMsg($WM_ACTIVATE, 'WM_EVENTS')

_WinAPI_SetFocus($hWnd)

While 1

    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hButton
            ConsoleWrite("Hit" & @CRLF)
    EndSwitch

WEnd

Func WM_EVENTS($hWndGUI, $MsgID, $WParam, $LParam)
    Switch $MsgID
        Case $WM_ACTIVATE
            GUISetStyle(-1, $_NOACTIVATE, $hGUI)
            WinActivate($hWnd)
    EndSwitch
EndFunc

The "Test" GUI is never activated - any attempt immediately reverts the activation to "Focused" via the WM_EVENTS function - but now you cannot get a reaction from the button.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

Info,

I am sure it is possible - I am just not sure that it is possible in AutoIt. ;-)

martin,

Nice try, but if I understand the OP correctly, it is less a matter of his GUI not getting focus then the third party GUI not losing it. Your code seems to keep the main GUI from getting focus - but the child does take it, which still results in the 3rd party losing it temporarily as shown here:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>

$hGUI2 = GUICreate("Focused", 200, 200, 100, 100)
GUISetState()
$hWnd = WinGetHandle("Focused")

$hGUI = GUICreate("Test", 500, 500)
WinSetOnTop($hGUI, "", 1)
GUISetState(@SW_SHOW)
GUICreate("child", 200, 200, 20, 40, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
GUISetState()
GUISetBkColor(0)
$hButton = GUICtrlCreateButton("Test", 10, 10, 80, 30)

_WinAPI_SetFocus($hWnd)

While 1

    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hButton
            _WinAPI_SetFocus($hWnd)
            ConsoleWrite("Hit" & @CRLF)
    EndSwitch

WEnd

Standing by for incoming.....

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Info,

I am sure it is possible - I am just not sure that it is possible in AutoIt. ;-)

martin,

Nice try, but if I understand the OP correctly, it is less a matter of his GUI not getting focus then the third party GUI not losing it. Your code seems to keep the main GUI from getting focus - but the child does take it, which still results in the 3rd party losing it temporarily as shown here:

#include <GUIConstantsEx.au3>
 #include <WindowsConstants.au3>
 #include <WinAPI.au3>
 
 $hGUI2 = GUICreate("Focused", 200, 200, 100, 100)
 GUISetState()
 $hWnd = WinGetHandle("Focused")
 
 $hGUI = GUICreate("Test", 500, 500)
 WinSetOnTop($hGUI, "", 1)
 GUISetState(@SW_SHOW)
 GUICreate("child", 200, 200, 20, 40, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
 GUISetState()
 GUISetBkColor(0)
 $hButton = GUICtrlCreateButton("Test", 10, 10, 80, 30)
 
 _WinAPI_SetFocus($hWnd)
 
 While 1
 
     Switch GUIGetMsg()
         Case $GUI_EVENT_CLOSE
             Exit
         Case $hButton
             _WinAPI_SetFocus($hWnd)
             ConsoleWrite("Hit" & @CRLF)
     EndSwitch
 
 WEnd

Standing by for incoming.....

M23

Yes, I thought that like the on-screen keyboard, the wish was that the gui would not appear to have focus. Once a message from the gui has been processed focus can be set back to whatever window had it previously.

The on-screen keybopards don't appear to take focus from other windows and I don't know how that's done. If you try to set focus back as soon as possible to the previous window you will see that window flicker. I once posted a question about this myself when I wrote my own on-srceeen keyboard and I never got an answer. I simply put up with the flicker.

Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
Link to comment
Share on other sites

martin,

they GUI bugs and creates strange black squares for me.

Is that with Beta 3.3.1.1?
Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
Link to comment
Share on other sites

  • Moderators

Info,

Never give up on AutoIt! It is amazing what a good night's sleep can do for the "little grey cells": ;-)

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>

HotKeySet("{ESC}", "On_Exit")

Global $aKeys[48] = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", _
                     "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "[", "]", _
                     "A", "S", "D", "F", "G", "H", "J", "K", "L", ";", "'", "#", _
                     "Z", "X", "C", "V", "B", "N", "M", ",", ".", "/", "spc", "enter"]
Global $fClick = False

; Create GUI to hold focus
$hGUI2 = GUICreate("Focused", 200, 200, 100, 100)
$hEdit = GUICtrlCreateEdit("", 10, 10, 200, 200)
GUISetState()

; Create "keyboard" GUI
$hGUI = GUICreate("Test", 360, 120, 500, 100, $WS_POPUPWINDOW, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))

$hStart = GUICtrlCreateDummy()

$iCount = 0

For $j = 0 To 3
    For $i = 0 To 11
        GUICtrlCreateLabel("", $i * 30, $j * 30, 30, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
        GUICtrlSetData(-1, $aKeys[$iCount])
        $iCount += 1
        GUICtrlSetFont(-1, 10)
        GUICtrlSetBkColor(-1, 30000 + 2000 * ($i + 1) + 2000 * ($j + 1))
    Next
Next
GUISetState()

; Set focus
_WinAPI_SetFocus($hGUI2)
$hFocus_Handle = _WinAPI_GetFocus()

; Register the Click function
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")

While 1

    Sleep(10)

; If Click flag set
    If $fClick = True Then
    ; Reset focus
        _WinAPI_SetFocus($hFocus_Handle)
    ; Check mouse position
        $aMouse_Pos = GUIGetCursorInfo($hGUI)
    ; Get control index
        $iIndex = ($aMouse_Pos[4] - $hStart - 1)
    ; Write key
        If $iIndex = 46 Then
            ControlSend($hGUI2, "", $hEdit, "{SPACE}")
        ElseIf $iIndex = 47 Then
            ControlSend($hGUI2, "", $hEdit, "{ENTER}")
        Else
            ControlSend($hGUI2, "", $hEdit, $aKeys[$iIndex])
        EndIf
    ; Reset Click Flag
        $fClick = False
    EndIf

WEnd

Func MY_WM_COMMAND($hWnd, $MsgID, $wParam, $lParam)
    Local Const $STN_CLICKED = 0
    Local $nNotifyCode = BitShift($wParam, 16)
    Switch $nNotifyCode
        Case $STN_CLICKED
        ; Set Click flag
            $fClick = True
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND

Func On_Exit()
    Exit
EndFunc

Click on the "keys" and they print in the "Focused" GUI. Press "Escape" to exit as we are pretending the "Focused" GUI is a third party app. Over to you now to prettify it - please let us see the final result.

M23

Edited: Slight improvement over original code.

Edited by Melba23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Complicated code, can you help me putting it in my script?

$Form1 = GUICreate("GUI", 722, 194, 300, 300, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))
$Space = GUICtrlCreateButton("Space", 120, 160, 201, 33, $WS_GROUP)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Space
            $WindowTitle = WinGetTitle("","")
            ControlSend($WindowTitle,"","","{Space}")
    EndSwitch
WEnd

And huge thanks for not giving up!

Edited by Info
Link to comment
Share on other sites

  • Moderators

Info,

can you help me putting it in my script?

The short answer is NO. The longer answer is that you will have to modify your code to fit my suggested solution. For example, you cannot use buttons - you must use labels. Similarly you have to have certain styles for the main GUI. I have tried to get the following to match your code as closely as I can - as well as using WinActivate rather than the WinAPI call:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>

; Initialise Click flag
Global $fClick = False

; Set up exit HotKey - because there is no [X] button!
HotKeySet("{ESC}", "On_Exit")

; Create "keyboard" GUI
$hGUI = GUICreate("GUI", 722, 194, 300, 300, $WS_POPUPWINDOW, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
$hLabel = GUICtrlCreateLabel("X", 120, 160, 201, 33)
GUISetState()

; Set focus to the window you want to write in - here we use Notepad
Run("NotePad")
WinWait("Untitled - Notepad", "")
Global $hActivate_Handle = WinGetHandle("[active]")
WinActivate($hActivate_Handle)

; Register the Click function
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")

While 1

    Sleep(10)

; Check if Click flag is set
    If $fClick = True Then
    ; Get cursor info
        $aMouse_Pos = GUIGetCursorInfo($hGUI)
    ; If cursor is over label then write key
        If $aMouse_Pos[4] =  $hLabel Then ControlSend($hActivate_Handle, "", "Edit1", "X")
    ; Reset Click Flag
        $fClick = False
    EndIf
WEnd

Func MY_WM_COMMAND($hWnd, $MsgID, $wParam, $lParam)
; Speeded up version
    If BitShift($wParam, 16) = 0 Then
    ; Reset focus to Notepad
        WinActivate($hActivate_Handle)
    ; Set Click flag
        $fClick = True
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc;==>WM_COMMAND

Func On_Exit()
    Exit
EndFunc

I realise it is a bit complicated - but then you did ask for a complicated thing! The comments shoudl give you a good idea of what is going on. The MY_WM_COMMAND function looks for a mouse click and when it finds one sets a flag ($fClick). The While...WEnd loop checks for this flag and when it is set, uses GUIGetCursorInfo to see what control in the GUI was under the mouse. If it is the label, then the "X" is sent to Notepad and, very importantly, the $fClick flag is reset for the next time.

Play with the code a bit (and the other code I posted above) until you understand completely what is going on. Then you can develop it as you wish - it is about time you did some coding for yourself. ;-)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...