Flasher

|
Posted: Sun Oct 04, 2015 14:26 Post subject: |
|
|
dank1
Я думаю, что лучше на другую (Win(+Shift)+Enter), как и написал в шапке.
Либо парься с WM_COPYDATA (там ещё столько же написать придётся), но не вижу в этом особого плюса.
 Вот так это происходит, если что: Code: | #NoTrayIcon
#SingleInstance, Force
SetBatchLines,-1
If WinExist("ahk_class TTOTAL_CMD")
ENTER::
If MainMenuFocus(WinExist("A")) || WinExist("ahk_class #32768") || !WinActive("ahk_class TTOTAL_CMD")
SendInput, {Enter}
Else
{ WinGet, TCHWND, ID, A
OnMessage(0x4a, "Receive_WM_COPYDATA")
Send_WM_COPYDATA(cmd:="SP")
Path:=% Item
Send_WM_COPYDATA(cmd:="SN")
Name:=% Item
msgbox, % Path . Name
}
Return
MainMenuFocus(hwnd)
{ static OBJID_MENU := 0xFFFFFFFD
VarSetCapacity(MBI, size := 4*4 + A_PtrSize*4, 0)
NumPut(size, MBI)
DllCall("GetMenuBarInfo", Ptr, hwnd, Int, OBJID_MENU, Int, 0, Ptr, &MBI)
Return *(&MBI + 4*4 + A_PtrSize*3) & 1
}
Send_WM_COPYDATA(ByRef cmd, aWinID=0x0)
{ global TCHWND
DetectHiddenWindows, On
len:=StrLen(cmd) + 1
if( A_IsUnicode )
{ cmdStr:=cmd
VarSetCapacity(cmd, StrPut(cmd, "cp0"))
Loop, % len
NumPut( Asc(SubStr(cmdStr, A_Index, 1)), cmd, A_Index - 1, "Char")
}
VarSetCapacity(CopyDataStruct, A_PtrSize * 3)
NumPut(Asc("G") + 256 * Asc(A_IsUnicode ? "W" : "A"), CopyDataStruct)
NumPut(len , CopyDataStruct, A_PtrSize)
NumPut(&cmd, CopyDataStruct, A_PtrSize * 2)
SendMessage, 0x4A, WinExist(A_ScriptFullPath " ahk_class AutoHotkey"), &CopyDataStruct, , % "ahk_id " TCHWND
}
Receive_WM_COPYDATA(wParam, lParam, msg, hwnd)
{ global Item
Item:=StrGet(NumGet(lParam + A_PtrSize * 2))
} |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Tue Oct 06, 2015 16:42; edited 6 times in total |
|