This AHK script works fine.
Code: Select all
#Requires AutoHotkey v2.0.2
^r::
{
lst:= "D:\Pics\220502.png`nD:\Pics\220625.png"
lstArray := StrSplit(lst, "`n")
randFile := lstArray[Random(1, lstArray.Length)]
Run '"D:\XYplorer\XYplorer.exe" /feed=|::tab("close"); tab("new", gpc("' randFile '", "path")); if(get("view") != 6) {#308}; goto "' randFile '"; if(get("#178") == 0) {#1003}|'
}
But it only works the first time with SendMessage, it would be nice to have it work with SendMessage every time, because it seems faster.
Code: Select all
#Requires AutoHotkey v2.0.2
^r::
{
lst:= "D:\Pics\220502.png`nD:\Pics\220625.png"
lstArray := StrSplit(lst, "`n")
randFile := lstArray[Random(1, lstArray.Length)]
if(xyHwnd:=GetXYHWND())
Send_WM_COPYDATA(xyHwnd, '::tab("close"); tab("new", gpc("' randFile '", "path")); if(get("view") != 6) {#308}; goto "' randFile '"; if(get("#178") == 0) {#1003}')
}
GetXYHWND() {
static xyClass := 'ahk_class ThunderRT6FormDC'
if hwnd := WinActive(xyClass)
return hwnd
else if WinExist(xyClass)
return WinGetList(xyClass)[1]
}
Send_WM_COPYDATA(xyHwnd, message) {
size := StrLen(message)
if !(StrLen(Chr(0xFFFF))) {
data := Buffer(size * 2, 0)
StrPut(message, &data, size, "UTF-16")
} else {
data := message
}
COPYDATA := Buffer(A_PtrSize * 3)
NumPut("Ptr", 4194305, COPYDATA, 0)
NumPut("UInt", size * 2, COPYDATA, A_PtrSize)
NumPut("Ptr", StrPtr(data), COPYDATA, A_PtrSize * 2)
return DllCall("User32.dll\SendMessageW", "Ptr", xyHwnd, "UInt", 74, "Ptr", 0, "Ptr", COPYDATA, "Ptr")
}