Sign in to follow this  
Followers 0
CygnusX1

Send ALT F4

10 posts in this topic

All I'm trying to do is send ALT + F4. For some reason I can seem to get it to work.

Please give me an example, yes, I did look and help and still couldn't figure it out :-/

Thanks


Cygnus

Share this post


Link to post
Share on other sites



All I'm trying to do is send ALT + F4. For some reason I can seem to get it to work.

Please give me an example, yes, I did look and help and still couldn't figure it out :-/

Thanks

Send ( "!{F4}")

When the words fail... music speaks

Share this post


Link to post
Share on other sites

All I'm trying to do is send ALT + F4. For some reason I can seem to get it to work.

Please give me an example, yes, I did look and help and still couldn't figure it out :-/

Thanks

Based on the documentation for Send in the help file I put this together

Send("#r")

WinWaitActive("Run")

Send("notepad.exe{Enter}")

WinWaitActive("Untitled -")

Send("!+{F4}",0)

It seems to work fine for me. Good luck with it.

1 person likes this

Share this post


Link to post
Share on other sites

Thank you!

My brain still hurts, glad it's Friday.


Cygnus

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Based on the documentation for Send in the help file I put this together

Send("#r")

WinWaitActive("Run")

Send("notepad.exe{Enter}")

WinWaitActive("Untitled -")

Send("!+{F4}",0)

It seems to work fine for me. Good luck with it.

A good practice WinTitleMatchMode

AutoItSetOption ( "WinTitleMatchMode",2)
Send("#r")
WinWaitActive("Run")
Send("notepad.exe {Enter}")
WinWaitActive("Notepad")
Send("!+{F4}",0)
Edited by Andreik

When the words fail... music speaks

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

A good practice WinTitleMatchMode

AutoItSetOption ( "WinTitleMatchMode",2)
Send("#r")
WinWaitActive("Run")
Send("notepad.exe {Enter}")
WinWaitActive("Notepad")
Send("!+{F4}",0)

Would not even better practice be to use ControlSend if possible?

Although I am probably thinking more advanced then it has to be...

AutoItSetOption ( "WinTitleMatchMode",2)
Send("#r")
WinWaitActive("Run")
ControlSend("Run", "", "", "notepad.exe {Enter}")
WinWaitActive("Notepad")
ControlSend("Untitled - Notepad", "", "", "!+{F4}")
Edited by archgriffin

"Human kind cannot gain anything without first giving something in return, to obtain; something of equal value must be lost."The Help File is truly your friend.

Share this post


Link to post
Share on other sites

Would not even better practice be to use ControlSend if possible?

Although I am probably thinking more advanced then it has to be...

AutoItSetOption ( "WinTitleMatchMode",2)
Send("#r")
WinWaitActive("Run")
ControlSend("Run", "", "", "notepad.exe {Enter}")
WinWaitActive("Notepad")
ControlSend("Untitled - Notepad", "", "", "!+{F4}")
My first impression is that CygnusX1 want to know how work Send(). muttley

When the words fail... music speaks

Share this post


Link to post
Share on other sites

I was desperate. I had this Explorer Server and I could not get it to close after clicking on some links. So I was trying to do ALT+F4 to see if that would close the window.

So I was indeed thinking about Send()

Thanks again.


Cygnus

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

Why not practice the use of Run, WinClose, and the advanced window mode instead?:

Run("notepad.exe")
WinWait("[CLASS:Notepad]")
WinClose("[LAST]")

Or why not really make it really accurate, and do this:

; Run Notepad
$iPid = Run("notepad.exe")

;wait for the process to load up
ProcessWait("notepad.exe")

;Wait for the window we're looking for to pop up, and aquire its window handle
Do
    $hNotepad = _ProcessGetWinEx($iPid, "Notepad")
Until $hNotepad[0] > 0 And WinExists($hNotepad[1])

; Close the window
WinClose($hNotepad[1])

Func _ProcessGetWinEx($ivPid, $svClass = "", $svTitle = "", $svText = "")
   
    $ivPid = ProcessExists($ivPid)
    If Not $ivPid Then Return(SetError(1, 0, 0))
    
    Local $avwArray = WinList()
    Local $avRet[1] = [0]
   
    For $i = 1 To $avwArray[0][0]
        $avClass = DllCall("User32.dll", "int", "GetClassName", "hwnd", $avwArray[$i][1], "str", "", "int", 4096)
        If WinGetProcess($avwArray[$i][1]) = $ivPid Then
            If $svClass = "" Or (IsArray($avClass) And $avClass[2] = $svClass) Then
                If ($svTitle = "" Or StringInStr($avwArray[$i][0], $svTitle)) And ($svText = "" Or StringInStr(WinGetText($avwArray[$i][1]), $svText)) Then
                    $avRet[0] += 1
                    ReDim $avRet[$avRet[0]+1]
                    $avRet[$avRet[0]] = $avwArray[$i][1]
                EndIf
            EndIf
        EndIf
    Next
   
    Return $avRet
   
EndFunc

Sorry... little to do..

Edited by FreeFry

Share this post


Link to post
Share on other sites

#10 ·  Posted

On 7/11/2008 at 4:52 PM, machalla said:

Thnx for the help. it worked like a charm...

 

Based on the documentation for Send in the help file I put this together

 

Send("#r")

WinWaitActive("Run")

Send("notepad.exe{Enter}")

WinWaitActive("Untitled -")

Send("!+{F4}",0)

 

It seems to work fine for me. Good luck with it.

 

Share this post


Link to post
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
Sign in to follow this  
Followers 0