Jump to content

winclose regular expression


Recommended Posts

I want to close all windows that have a similar path in their titles obtained from winlist() eg winclose("*/commonfiles/*")

I do not fully understand regular expressions, how might I do this?

I am wanting to close all open programs on my pen drive. If there is a way to find all window titles who's filepath is /somepath I could then use winclose?

Thank you

Edited by ozbodd
Link to comment
Share on other sites

Hi,

try something like :

closeWindowsByTitle('/commonfiles/')

Func closeWindowsByTitle($RegTitle)
    Local $opt = Opt('WinTitleMatchMode', 4)
    Do
    Until WinClose('RegExp=' & $RegTitle) = 0
    Opt('WinTitleMatchMode', $opt)
EndFunc   ;==>closeWindowsByTitle

So long,

Mega

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

@Mega

Thanks, I just figured a way out just before your post. But only works for windows that I know are open and are hard coded

$var = WinList()

For $i = 1 to $var[0][0]
If StringInStr($var[$i][0], "PortableApps Menu") Then WinClose("PortableApps Menu")
If StringInStr($var[$i][0], "EssentialPIM") Then WinClose("EssentialPIM Portable")
If StringInStr($var[$i][0], "\PortableApps\") Then WinClose($var[$i][0])
; If $var[$i][0] = "PortableApps Menu" Then WinClose("PortableApps Menu")
Next

I still would like to be able to find and close any windows from a specified path e.g. /portableapps/ Is there a function that can find window titles that are from programs that match a specified file path?

Link to comment
Share on other sites

Hi,

where do you start? The titles which include a word, or the path from the exe which elongs to the window?

So long,

Mega

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

Hi,

where do you start? The titles which include a word, or the path from the exe which elongs to the window?

So long,

Mega

To begin I need to search for all windows that are from a specified file path - /portableapps

I then need their titles to winclose() them.

Thanks

Link to comment
Share on other sites

Hi,

did you try my func?

So long,

Mega

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

Hi,

did you try my func?

So long,

Mega

Yes I did and it didn't do what I want unfortunately. The Window title doesn't always have the path in it (What I am searching for)

See my code - The first two are examples of windows that just have their application name only in the title, the third is a program without a title so it has the path to the exe instead in the title.

If I could only find the file paths to running applications ...

Edited by ozbodd
Link to comment
Share on other sites

Hi,

with this code, you get the windows from the pid/exe

#include<Array.au3>
$a = ProcessGetId('TOTALCMD.EXE')
ConsoleWrite(ProcessGetWindow($a[1]) & @CRLF)
WinSetState(ProcessGetWindow($a[1]), "", @SW_HIDE)
Sleep(2000)
WinSetState(ProcessGetWindow($a[1]), "", @SW_SHOW)


Func ProcessGetWindow($PId)
    If IsNumber($PId) = 0 Or ProcessExists(ProcessGetName($PId)) = 0 Then
        SetError(1)
    Else

        Local $WinList = WinList()
        Local $i = 1
        Local $WindowTitle = ""

        While $i <= $WinList[0][0] And $WindowTitle = ""
            If WinGetProcess($WinList[$i][0], "") = $PId Then
                $WindowTitle = $WinList[$i][0]
            Else
                $i = $i + 1
            EndIf
        WEnd

        Return $WindowTitle
    EndIf
EndFunc   ;==>ProcessGetWindow

Func ProcessGetId($Process)
    If IsString($Process) = 0 Then
        SetError(2)
    ElseIf ProcessExists($Process) = 0 Then
        SetError(1)
    Else

        Local $PList = ProcessList($Process)
        Local $i
        Local $PId[$PList[0][0] + 1]

        $PId[0] = $PList[0][0]

        For $i = 1 To $PList[0][0]
            $PId[$i] = $PList[$i][1]
        Next

        Return $PId
    EndIf
EndFunc   ;==>ProcessGetId

Func ProcessGetName($PId)
    If IsNumber($PId) = 0 Then
        SetError(2)
    ElseIf $PId > 9999 Then
        SetError(1)
    Else

        Local $PList = ProcessList()
        Local $i = 1
        Local $ProcessName = ""

        While $i <= $PList[0][0] And $ProcessName = ""
            If $PList[$i][1] = $PId Then
                $ProcessName = $PList[$i][0]
            Else
                $i = $i + 1
            EndIf
        WEnd

        Return $ProcessName
    EndIf
EndFunc   ;==>ProcessGetName

So long,

Mega

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

Hi,

with this code, you get the windows from the pid/exe

#include<Array.au3>
$a = ProcessGetId('TOTALCMD.EXE')
ConsoleWrite(ProcessGetWindow($a[1]) & @CRLF)
WinSetState(ProcessGetWindow($a[1]), "", @SW_HIDE)
Sleep(2000)
WinSetState(ProcessGetWindow($a[1]), "", @SW_SHOW)
Func ProcessGetWindow($PId)
    If IsNumber($PId) = 0 Or ProcessExists(ProcessGetName($PId)) = 0 Then
        SetError(1)
    Else

        Local $WinList = WinList()
        Local $i = 1
        Local $WindowTitle = ""

        While $i <= $WinList[0][0] And $WindowTitle = ""
            If WinGetProcess($WinList[$i][0], "") = $PId Then
                $WindowTitle = $WinList[$i][0]
            Else
                $i = $i + 1
            EndIf
        WEnd

        Return $WindowTitle
    EndIf
EndFunc   ;==>ProcessGetWindow

Func ProcessGetId($Process)
    If IsString($Process) = 0 Then
        SetError(2)
    ElseIf ProcessExists($Process) = 0 Then
        SetError(1)
    Else

        Local $PList = ProcessList($Process)
        Local $i
        Local $PId[$PList[0][0] + 1]

        $PId[0] = $PList[0][0]

        For $i = 1 To $PList[0][0]
            $PId[$i] = $PList[$i][1]
        Next

        Return $PId
    EndIf
EndFunc   ;==>ProcessGetId

Func ProcessGetName($PId)
    If IsNumber($PId) = 0 Then
        SetError(2)
    ElseIf $PId > 9999 Then
        SetError(1)
    Else

        Local $PList = ProcessList()
        Local $i = 1
        Local $ProcessName = ""

        While $i <= $PList[0][0] And $ProcessName = ""
            If $PList[$i][1] = $PId Then
                $ProcessName = $PList[$i][0]
            Else
                $i = $i + 1
            EndIf
        WEnd

        Return $ProcessName
    EndIf
EndFunc   ;==>ProcessGetName

So long,

Mega

Still only good for apps I know are running and code in - I want this to capture any app I leave open on my pen drive and close it. Like an eject button
Link to comment
Share on other sites

Hi,

now I got you! :)

$path = _WinGetPath()
MsgBox(0,WinGetTitle(""),$path)

Func _WinGetPath($Title="", $strComputer='localhost')
    $win = WinGetTitle($Title)
    $pid = WinGetProcess($win)
   $wbemFlagReturnImmediately = 0x10
   $wbemFlagForwardOnly = 0x20
   $colItems = ""
   $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
   $colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_Process WHERE ProcessId = " & $pid, "WQL", _
         $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
   If IsObj($colItems) Then
      For $objItem In $colItems
         If $objItem.ExecutablePath Then Return $objItem.ExecutablePath
      Next
   EndIf
EndFunc

So long,

Mega

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

@Mega you're a star - I'm almost there

$var = WinList()
For $i = 1 to $var[0][0]
$path = _WinGetPath($var[$i][0])
If StringInStr($path, "\PortableApps\") Then WinClose($var[$i][0])
ConsoleWrite("Path=" & $path & "Title=" & $var[$i][0] & @LF)
next
Func _WinGetPath($Title="", $strComputer='localhost')
   $win = WinGetTitle($Title)
   $pid = WinGetProcess($win)
   $wbemFlagReturnImmediately = 0x10
   $wbemFlagForwardOnly = 0x20
   $colItems = ""
   $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
   $colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_Process WHERE ProcessId = " & $pid, "WQL", _
         $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
   If IsObj($colItems) Then
      For $objItem In $colItems
         If $objItem.ExecutablePath Then Return $objItem.ExecutablePath
      Next
   EndIf
EndFunc

It works I just seem to be getting too many itterations Do I have an unnecessary loop in here somewhere? - See console output

Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\WINDOWS\Explorer.EXETitle=Start Menu
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Link to comment
Share on other sites

If I run this WinList() command

$var = WinList()
For $i = 1 to $var[0][0]
if $var[$i][0]<>"" AND StringInStr($var[$i][0], "Default IME")=false AND StringInStr($var[$i][0], "WAB ")=false then ConsoleWrite("Path=" & $var[$i][0] & @LF)
next

I get

...CONSOLE OUTPUT
Path=HiddenFaxWindow
Path=Available Networks
Path=Gsm Event Window
Path=WLKeeperWindow
Path=Tea Timer
Path=AVG Free Edition - Control Center
Path=Spybot - Search & Destroy
Path=VMware ACE Host Network Access Info
Path=ZoneAlarm Security Suite
Path=QuickSet
Path=SigmatelSysTray
Path=Powercinema service
Path=Connections Tray
Path=Power Meter
Path=MS_WebcheckMonitor
Path=TouchPad object helper window
Path=Touchpad driver tray icon window
Path=TouchPad object helper window
Path=Touchpad driver backward compatibility window
Path=Touchpad driver helper window
Path=Layered Hidden Window
...

I want to pass these titles to the function and close only specified paths.

$path = _WinGetPath($var[$i][0])
if $var[$i][0]<>"" AND StringInStr($var[$i][0], "Default IME")=false AND StringInStr($var[$i][0], "WAB ")=false Then $path = _WinGetPath($var[$i][0])
;If StringInStr($path, "\PortableApps\") Then WinClose($var[$i][0])
ConsoleWrite("Path=" & $path & "Title=" & $var[$i][0] & @LF)
next
Func _WinGetPath($Title="", $strComputer='localhost')
   $win = WinGetTitle($Title)
   $pid = WinGetProcess($win)
   $wbemFlagReturnImmediately = 0x10
   $wbemFlagForwardOnly = 0x20
   $colItems = ""
   $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
   $colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_Process WHERE ProcessId = " & $pid, "WQL", _
         $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
   If IsObj($colItems) Then
      For $objItem In $colItems
         If $objItem.ExecutablePath Then Return $objItem.ExecutablePath
      Next
   EndIf
EndFunc

It is working however as can be seen from the console output there appears some unnecessary duplication in the output and the script runs too long, I can't see where that is happening caan anyone help please.

...CONSOLE OUTPUT
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\AutoIt3\SciTE\SciTE.exeTitle=
Path=C:\Program Files\Internet Explorer\iexplore.exeTitle=Language Reference - Conditional Statements - Windows Internet Explorer
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService.exeTitle=WAB Notification Window
Path=C:\Program Files\Dell\MediaDirect\PCMService
....
Link to comment
Share on other sites

Sorted I was caling the function twice :/

$var = WinList()
For $i = 1 to $var[0][0]
If $var[$i][0]<>"" AND StringInStr($var[$i][0], "Default IME")=false AND StringInStr($var[$i][0], "WAB Notification Window")=false Then 
    $path = _WinGetPath($var[$i][0])
Else
    $path=""
EndIf
If StringInStr($path, "\PortableApps\") Then WinClose($var[$i][0])
;ConsoleWrite("Path=" & $path & "Title=" & $var[$i][0] & @LF)
next
Func _WinGetPath($Title="", $strComputer='localhost')
   $win = WinGetTitle($Title)
   $pid = WinGetProcess($win)
   $wbemFlagReturnImmediately = 0x10
   $wbemFlagForwardOnly = 0x20
   $colItems = ""
   $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
   $colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_Process WHERE ProcessId = " & $pid, "WQL", _
         $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
   If IsObj($colItems) Then
      For $objItem In $colItems
         If $objItem.ExecutablePath Then Return $objItem.ExecutablePath
      Next
   EndIf
EndFunc
Link to comment
Share on other sites

Hi,

try this way:

#include<Array.au3>

$ret = _getPathForProcessOnDrive(getUSBDrive('USB Mega'))
_ArrayDisplay($ret, "USB ProcessPathes")

Func getUSBDrive($driveLabel)
    Local $drives = DriveGetDrive("all")
    If @error Then Return -1
    For $i = 1 To $drives[0]
        If DriveGetType($drives[$i]) = "Removable" And DriveGetLabel($drives[$i]) = $driveLabel Then Return $drives[$i]
    Next
EndFunc   ;==>getUSBDrive

Func _getPathForProcessOnDrive($drive = "c:", $strComputer = 'localhost')
    Local $return[1]
    Local $wbemFlagReturnImmediately = 0x10
    Local $wbemFlagForwardOnly = 0x20
    Local $colItems = ""
    Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_Process", "WQL", _
            $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) Then
        For $objItem In $colItems
            If StringLeft($objItem.ExecutablePath, 2) = $drive Then _ArrayAdd($return, $objItem.ExecutablePath)
        Next
    EndIf
    If UBound($return) > 1 Then
        $return[0] = UBound($return) - 1
        Return $return
    Else
        Return -1
    EndIf
EndFunc   ;==>_getPathForProcessOnDrive

So long,

Mega

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

@Mage

Thanks for your help - I have it working though maybe in a round-about way, and I understand most of it. (I don't understand what is returned in the function query)

Dim $driveLetter
$var = WinList()

; Find the Drive Letter for portableApps
For $i = 1 to $var[0][0]
If $var[$i][0]="PortableApps Menu" Then
    $path = _WinGetPath($var[$i][0])
    $driveLetter = StringLeft($path, 2)
EndIf
Next    

;  Fetch the path for probable windows
For $i = 1 to $var[0][0]
If $var[$i][0]<>"" AND StringInStr($var[$i][0], "Default IME")=false AND StringInStr($var[$i][0], "WAB Notification Window")=false Then 
    $path = _WinGetPath($var[$i][0])
Else
    $path=""
EndIf

;ConsoleWrite("FOUND" & "Path=" & $path & "Title=" & $var[$i][0] & "Drive=" & $driveLetter & @LF)

; Close window IF Drive is matched in path or title - Ignore the script
If StringInStr($var[$i][0], $driveLetter) AND StringInStr($path, "Eject")=false Then
;ConsoleWrite("CLOSE" & "Path=" & $path & "Title=" & $var[$i][0] & "Drive=" & $driveLetter & @LF)
    WinClose($var[$i][0])
Else    
    If StringInStr($path, $driveLetter) AND StringInStr($path, "Eject")=false Then 
;ConsoleWrite("CLOSE" & "Path=" & $path & "Title=" & $var[$i][0] & "Drive=" & $driveLetter & @LF)
        WinClose($var[$i][0])
    EndIf
EndIf
next
MsgBox(0, "Eject USB", "Close any Exit Dialogue Boxes - Device is safe to remove")

; Fetch the process Path from the WindowTitle
Func _WinGetPath($Title="", $strComputer='localhost')
   $win = WinGetTitle($Title)
   $pid = WinGetProcess($win)
   $wbemFlagReturnImmediately = 0x10
   $wbemFlagForwardOnly = 0x20
   $colItems = ""
   $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
   $colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_Process WHERE ProcessId = " & $pid, "WQL", _
         $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
   If IsObj($colItems) Then
      For $objItem In $colItems
         If $objItem.ExecutablePath Then Return $objItem.ExecutablePath
      Next
   EndIf
EndFunc

I do have another question though about the function. It finds the path for parent processes fine, can it be modified to also find the paths of any child windows? For example Application Paint Shop Pro from the C: drive viewing a graphic whos path is F:\ (USB) - Hope that is clear?

Edited by ozbodd
Link to comment
Share on other sites

Hi,

why going to search the windows? Why not searching the processes which are started from your usbdrive?

So long,

Mega

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

Hi,

why going to search the windows? Why not searching the processes which are started from your usbdrive?

So long,

Mega

Mainly because this is my level of understanding :)

Would a word doc on a USB drive opened in MSWord running locally show as a usbdrive process?

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...