OSC extension for Autohotkey, a DLL
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

131 lines
3.2 KiB

#SingleInstance, Force
SendMode Input
SetWorkingDir, %A_ScriptDir%
Gui +LastFound
hWnd := WinExist()
; OSC datatypes. Just for better readability,
; you also just could use the numbers
global oscTypeNone := 1
global oscTypeInt := 2
global oscTypeFloat := 4
global oscTypeString := 8
global oscTypeAll := 0xffffffff
stdout := FileOpen("tmp.log", "w")
stdout.WriteLine("START")
OnExit("exithandler")
DllCall("LoadLibrary", "Str", "x64\Debug\OSC2AHK.dll", "Ptr")
; ret := DllCall("OSC2AHK.dll\testMsg", UInt,hWnd, UInt,0x1000, int)
OnMessage(0x1002, "msghandlerFloat")
DllCall("OSC2AHK.dll\open", UInt, hWnd, UInt, 7002)
DllCall("OSC2AHK.dll\addListener", AStr, "/test1", UInt, 0x1001, UInt, oscTypeInt)
OnMessage(0x1001, "msghandlerInt")
DllCall("OSC2AHK.dll\addListener", AStr, "/test2", UInt, 0x1002, UInt, oscTypeFloat)
OnMessage(0x1002, "msghandlerFloat")
DllCall("OSC2AHK.dll\addListener", AStr, "/test3", UInt, 0x1003, UInt, oscTypeInt+oscTypeFloat)
OnMessage(0x1003, "msghandlerTest3")
DllCall("OSC2AHK.dll\addListener", AStr, "/test4", UInt, 0x1004, UInt, oscTypeString)
OnMessage(0x1004, "msghandlerString")
stdout.Close()
return
msghandlerString(wParam, lParam, msg, hwnd) {
stdout := FileOpen("tmp.log", "a")
if (wParam = oscTypeInt)
{
stdout.WriteLine("No String!")
return
}
stdout.Write("msghandlerString: ")
VarSetCapacity(theStr, 20)
theStr := DllCall("OSC2AHK.dll\getStringData", str, theStr, UInt, 20, UInt, lParam, AStr)
stdout.WriteLine(theStr)
stdout.Close()
}
msghandlerTest3(wParam, lParam, msg, hwnd) {
stdout := FileOpen("tmp.log", "a")
stdout.Write("Got /test3 with ")
if (wParam = oscTypeInt)
{
stdout.Write("Int")
stdout.Write(" ")
stdout.WriteLine(lParam)
}
if (wParam = oscTypeFloat)
{
stdout.Write("Float")
stdout.Write(" ")
; Retrieve float from the lParam
VarSetCapacity(buf, 8, 0)
NumPut(lParam, buf)
theFloat := NumGet(buf, "Float")
stdout.WriteLine(theFloat)
}
stdout.Close()
}
msghandlerInt(wParam, lParam, msg, hwnd) {
; Check if we actually got a Integer
if (wParam != 2)
return
; Log to the logfile
stdout := FileOpen("tmp.log", "a")
stdout.Write("Got Int: ")
stdout.Write(msg)
stdout.Write(" ")
stdout.WriteLine(lParam)
stdout.Close()
}
msghandlerFloat(wParam, lParam, msg, hwnd) {
; Check if we actually got a float
if (wParam != 4)
return
; Retrieve float from the lParam
VarSetCapacity(buf, 8, 0)
NumPut(lParam, buf)
theFloat := NumGet(buf, "Float")
; Log to the logfile
stdout := FileOpen("tmp.log", "a")
stdout.Write("Got Float: ")
stdout.Write(msg)
stdout.Write(" ")
stdout.WriteLine(theFloat)
stdout.Close()
}
exithandler() {
stdout := FileOpen("tmp.log", "a")
stdout.WriteLine("The End")
stdout.Close()
}
do_exit:
ExitApp
return
Esc::
ExitApp
^a::
VarSetCapacity(theStr, 10)
theStr := DllCall("OSC2AHK.dll\getStringData", AStr, theStr, UInt, 10, UInt, 0, "Cdecl AStr")
msgbox,%theStr%
; DllCall("OSC2AHK.dll\close", UInt, 0)
;msgbox,esc
; DllCall("OSC2AHK.dll\open", UInt, hWnd, UInt, 7001)