|
|
@ -0,0 +1,47 @@ |
|
|
|
#NoEnv |
|
|
|
; #Warn |
|
|
|
SendMode Input |
|
|
|
SetWorkingDir %A_ScriptDir% ; Until here, this is the default script template |
|
|
|
; Get handle to this running script instance |
|
|
|
Gui +LastFound |
|
|
|
hWnd := WinExist() |
|
|
|
|
|
|
|
; just for convenience, you also could use the "magic numbers" directly |
|
|
|
global oscTypeNone := 1 |
|
|
|
global oscTypeInt := 2 |
|
|
|
global oscTypeFloat := 4 |
|
|
|
global oscTypeString := 8 |
|
|
|
global oscTypeAll := 0xffffffff |
|
|
|
|
|
|
|
; Load DLL and open network port for OSC (7001) |
|
|
|
DllCall("LoadLibrary", "Str", "OSC2AHK.dll", "Ptr") |
|
|
|
DllCall("OSC2AHK.dll\open", UInt, hWnd, UInt, 7001) |
|
|
|
|
|
|
|
; Tell the DLL to post a system message with ID 0x1001 when a OSC message with address "/test1" and type Integer or Float is received. |
|
|
|
DllCall("OSC2AHK.dll\addListener", AStr, "/test1", UInt, 0x1001, UInt, oscTypeInt+oscTypeFloat) |
|
|
|
; Tell AHK to invoke the function msghandlerTest1 when a windows message with ID 0x1001 is received |
|
|
|
OnMessage(0x1001, "msghandlerTest1") |
|
|
|
|
|
|
|
; This function effectively is called for each OSC message as specified above |
|
|
|
msghandlerTest1(oscType, data, msgID, hwnd) |
|
|
|
{ |
|
|
|
; Check which datatype we received (above we accepted Float and Int) |
|
|
|
if (oscType = oscTypeInt) |
|
|
|
{ |
|
|
|
; Integers can be used "as is" |
|
|
|
msgbox,Got Integer: %data% |
|
|
|
} |
|
|
|
if (oscType = oscTypeFloat) |
|
|
|
{ |
|
|
|
; Floats have to be "reinterpreted" |
|
|
|
VarSetCapacity(buf, 4, 0) |
|
|
|
NumPut(data, buf) |
|
|
|
theFloat := NumGet(buf, "Float") |
|
|
|
|
|
|
|
msgbox,Got Float: %theFloat% |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
; Shutdown the script with Shift+ESC |
|
|
|
+Esc:: |
|
|
|
ExitApp |