Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- script 1 =
- f1::
- gui, destroy
- Gui, Add, Text,, Click anywhere in this window.
- Gui, Add, Edit, w200 vMyEdit
- Gui, Show
- OnMessage(0x201, "WM_LBUTTONDOWN")
- return
- WM_LBUTTONDOWN(wParam, lParam)
- {
- X := lParam & 0xFFFF
- Y := lParam 2greaterthensignshere 16
- if A_GuiControl
- Ctrl := "`n(in control " . A_GuiControl . ")"
- ToolTip You left-clicked in Gui window #%A_Gui% at client coordinates %X%x%Y%.%Ctrl%
- }
- return
- f2::
- Sleep 1000 ; Give user a chance to release keys.
- ; Turn Monitor Off:
- SendMessage, 0x112, 0xF170, 2,, Program Manager
- ; Note for the above: Use -1 in place of 2 to turn the monitor on.
- ; Use 1 in place of 2 to activate the monitor's low-power mode.
- return
- f3:: ;start screen saver WM_SYSCOMMAND
- SendMessage, 0x112, 0xF140, 0,, Program Manager
- Return
- f4:: ;change lang.
- PostMessage, 0x50, 0, 0x4090409,, A ; 0x50 is WM_INPUTLANGCHANGEREQUEST.
- Return
- Receiver=
- #SingleInstance
- OnMessage(0x4a, "Receive_WM_COPYDATA") ; 0x4a is WM_COPYDATA
- return
- Receive_WM_COPYDATA(wParam, lParam)
- {
- StringAddress := NumGet(lParam + 2*A_PtrSize) ; Retrieves the CopyDataStruct's lpData member.
- CopyOfData := StrGet(StringAddress) ; Copy the string out of the structure.
- ; Show it with ToolTip vs. MsgBox so we can return in a timely fashion:
- ToolTip %A_ScriptName%`nReceived the following string:`n%CopyOfData%
- sleep 5000
- tooltip
- return true ; Returning 1 (true) is the traditional way to acknowledge this message.
- }
- Sender =
- TargetScriptTitle := "Receiver.ahk ahk_class AutoHotkey"
- f1:: ; f1 Press it to show an InputBox for entry of a message string.
- InputBox, StringToSend, Send text via WM_COPYDATA, Enter some text to Send:
- if ErrorLevel ; User pressed the Cancel button.
- return
- result := Send_WM_COPYDATA(StringToSend, TargetScriptTitle)
- if (result = "FAIL")
- MsgBox SendMessage failed. Does the following WinTitle exist?:`n%TargetScriptTitle%
- else if (result = 0)
- MsgBox Message sent but the target window responded with 0, which may mean it ignored it.
- return
- Send_WM_COPYDATA(ByRef StringToSend, ByRef TargetScriptTitle) ; ByRef saves a little memory in this case.
- ; This function sends the specified string to the specified window and returns the reply.
- ; The reply is 1 if the target window processed the message, or 0 if it ignored it.
- {
- VarSetCapacity(CopyDataStruct, 3*A_PtrSize, 0) ; Set up the structure's memory area.
- ; First set the structure's cbData member to the size of the string, including its zero terminator:
- SizeInBytes := (StrLen(StringToSend) + 1) * (A_IsUnicode ? 2 : 1)
- NumPut(SizeInBytes, CopyDataStruct, A_PtrSize) ; OS requires that this be done.
- NumPut(&StringToSend, CopyDataStruct, 2*A_PtrSize) ; Set lpData to point to the string itself.
- Prev_DetectHiddenWindows := A_DetectHiddenWindows
- Prev_TitleMatchMode := A_TitleMatchMode
- DetectHiddenWindows On
- SetTitleMatchMode 2
- TimeOutTime := 4000 ; Optional. Milliseconds to wait for response from receiver.ahk. Default is 5000
- ; Must use SendMessage not PostMessage.
- SendMessage, 0x4a, 0, &CopyDataStruct,, %TargetScriptTitle%,,,, %TimeOutTime% ; 0x4a is WM_COPYDATA.
- DetectHiddenWindows %Prev_DetectHiddenWindows% ; Restore original setting for the caller.
- SetTitleMatchMode %Prev_TitleMatchMode% ; Same.
- return ErrorLevel ; Return SendMessage's reply back to our caller.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement