diff --git a/examples/simple_example.ahk b/examples/simple_example.ahk new file mode 100644 index 0000000..97277ca --- /dev/null +++ b/examples/simple_example.ahk @@ -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