Keyboard macros: Difference between revisions

m
→‎{{header|Phix}}: added syntax colouring the hard way, phix/basics
m (→‎{{header|Phix}}: added syntax colouring the hard way, phix/basics)
Line 708:
 
=={{header|Phix}}==
{{libheader|Phix/basics}}
===application===
{{libheader|Phix/pGUI}}
Line 713 ⟶ 714:
a general key handler.
Obviously K_C and K_F2 could be swapped without any problem.
<!--<lang Phix>include pGUI.e-->
<span style="color: #008080;">include</span> <span style="color: #000000;">pGUI</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
 
function C_Keyed(Ihandle /*ih*/, atom /*c*/)
<span style="color: #008080;">function</span> <span style="color: #000000;">C_Keyed</span><span style="color: #0000FF;">(</span><span style="color: #004080;">Ihandle</span> <span style="color: #000080;font-style:italic;">/*ih*/</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000080;font-style:italic;">/*c*/</span><span style="color: #0000FF;">)</span>
-- (Note without K_c below this does not respond to 'c', just 'C')
<span style="color: #000080;font-style:italic;">-- (Note without K_c below this does not respond to 'c', just 'C')</span>
?"you pressed C"
<span style="color: #0000FF;">?</span><span style="color: #008000;">"you pressed C"</span>
return IUP_DEFAULT
<span style="color: #008080;">return</span> <span style="color: #004600;">IUP_DEFAULT</span>
end function
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
 
procedure F2_keyed()
<span style="color: #008080;">procedure</span> <span style="color: #000000;">F2_keyed</span><span style="color: #0000FF;">()</span>
?"you pressed F2"
<span style="color: #0000FF;">?</span><span style="color: #008000;">"you pressed F2"</span>
end procedure
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
 
function key_cb(Ihandle /*ih*/, atom c)
<span style="color: #008080;">function</span> <span style="color: #000000;">key_cb</span><span style="color: #0000FF;">(</span><span style="color: #004080;">Ihandle</span> <span style="color: #000080;font-style:italic;">/*ih*/</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">)</span>
if c=K_F2 then F2_keyed()
<span style="color: #008080;">if</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">=</span><span style="color: #000000;">K_F2</span> <span style="color: #008080;">then</span> <span style="color: #000000;">F2_keyed</span><span style="color: #0000FF;">()</span>
elsif c=K_ESC then return IUP_CLOSE
<span style="color: #008080;">elsif</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">=</span><span style="color: #004600;">K_ESC</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #004600;">IUP_CLOSE</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
return IUP_DEFAULT
<span style="color: #008080;">return</span> <span style="color: #004600;">IUP_DEFAULT</span>
end function
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
 
IupOpen()
<span style="color: #7060A8;">IupOpen</span><span style="color: #0000FF;">()</span>
Ihandle dlg = IupDialog(IupLabel("hello"),"TITLE=\"Press F2\"")
<span style="color: #004080;">Ihandle</span> <span style="color: #000000;">dlg</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupDialog</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">IupLabel</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"hello"</span><span style="color: #0000FF;">),</span><span style="color: #008000;">"TITLE=\"Press F2\""</span><span style="color: #0000FF;">)</span>
IupSetCallback(dlg, "K_C", Icallback("C_Keyed"))
<span style="color: #7060A8;">IupSetCallback</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"K_C"</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">Icallback</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"C_Keyed"</span><span style="color: #0000FF;">))</span>
--IupSetCallback(dlg, "K_c", Icallback("C_Keyed"))
<span style="color: #000080;font-style:italic;">--IupSetCallback(dlg, "K_ANYK_c", Icallback("key_cbC_Keyed"))</span>
<span style="color: #7060A8;">IupSetCallback</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"K_ANY"</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">Icallback</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"key_cb"</span><span style="color: #0000FF;">))</span>
IupShow(dlg)
<span style="color: #7060A8;">IupShow</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">)</span>
IupMainLoop()
<span style="color: #008080;">if</span> <span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()!=</span><span style="color: #004600;">JS</span> <span style="color: #008080;">then</span>
IupClose()</lang>
<span style="color: #7060A8;">IupMainLoop</span><span style="color: #0000FF;">()</span>
<span style="color: #7060A8;">IupClose</span><span style="color: #0000FF;">()</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<!--</lang>-->
 
===system===
Line 749 ⟶ 754:
of "keyboard macros" - though of course you could easily replace that
SendInput call with any routine of your choosing.
<!--<lang Phix>-->
<span style="color: #000080;font-style:italic;">--
-- demo\arwendemo\hotkey.exw
-- demo\arwendemo\hotkey.exw
-- =========================
-- =========================
--
--
-- Author: Pete Lomax, credit to Aku Saya for HotKey
-- Author: Pete Lomax, credit to Aku Saya for HotKey
-- and Thomas Parslow for sendkeys
-- and Thomas Parslow for sendkeys
--
--
-- http://phix.x10.mx
-- http://phix.x10.mx
--
--
--/**/with gui
--/**/</span><span style="color: #008080;">with</span> <span style="color: #000000;">gui</span>
include arwen.ew
<span style="color: #008080;">include</span> <span style="color: #000000;">arwen</span><span style="color: #0000FF;">.</span><span style="color: #000000;">ew</span>
 
constant
<span style="color: #008080;">constant</span>
MOD_ALT = #1,
<span style="color: #000000;">MOD_ALT</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">#1</span><span style="color: #0000FF;">,</span>
MOD_CONTROL = #2,
<span style="color: #000000;">MOD_CONTROL</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">#2</span><span style="color: #0000FF;">,</span>
MOD_SHIFT = #4,
<span style="color: #000000;">MOD_SHIFT</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">#4</span><span style="color: #0000FF;">,</span>
MOD_WIN = #8
<span style="color: #000000;">MOD_WIN</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">#8</span>
 
integer Modifier, vKeyCode
<span style="color: #004080;">integer</span> <span style="color: #000000;">Modifier</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">vKeyCode</span>
 
constant Main = create(Window, "Hotkey", 0, 0, 36, 99, 294, 201, 0)
<span style="color: #008080;">constant</span> <span style="color: #000000;">Main</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">Window</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Hotkey"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">36</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">99</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">294</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">201</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
constant MainHwnd = getHwnd(Main)
<span style="color: #008080;">constant</span> <span style="color: #000000;">MainHwnd</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">getHwnd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">Main</span><span style="color: #0000FF;">)</span>
constant mFile = create(Menu,"File",0,Main,190,63,0,0,0)
<span style="color: #008080;">constant</span> <span style="color: #000000;">mFile</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">Menu</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"File"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span><span style="color: #000000;">190</span><span style="color: #0000FF;">,</span><span style="color: #000000;">63</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
constant mExit = create(MenuItem,"Exit",0,mFile,194,53,0,0,0)
<span style="color: #008080;">constant</span> <span style="color: #000000;">mExit</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">MenuItem</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Exit"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">mFile</span><span style="color: #0000FF;">,</span><span style="color: #000000;">194</span><span style="color: #0000FF;">,</span><span style="color: #000000;">53</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
constant mHelp = create(Menu,"Help",0,Main,182,57,0,0,0)
<span style="color: #008080;">constant</span> <span style="color: #000000;">mHelp</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">Menu</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Help"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span><span style="color: #000000;">182</span><span style="color: #0000FF;">,</span><span style="color: #000000;">57</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
constant mAbout = create(MenuItem,"About",0,mHelp,184,45,0,0,0)
<span style="color: #008080;">constant</span> <span style="color: #000000;">mAbout</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">MenuItem</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"About"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">mHelp</span><span style="color: #0000FF;">,</span><span style="color: #000000;">184</span><span style="color: #0000FF;">,</span><span style="color: #000000;">45</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
constant AltKey = create(CheckBox, "Alt", 0, Main, 8, 5, 62, 20, 0)
<span style="color: #008080;">constant</span> <span style="color: #000000;">AltKey</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">CheckBox</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Alt"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">8</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">5</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">62</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">20</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
constant ShiftKey = create(CheckBox, "Shift", 0, Main, 8, 28, 56, 20, 0)
<span style="color: #008080;">constant</span> <span style="color: #000000;">ShiftKey</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">CheckBox</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Shift"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">8</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">28</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">56</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">20</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
constant CtrlKey = create(CheckBox, "Ctrl", 0, Main, 8, 52, 70, 20, 0)
<span style="color: #008080;">constant</span> <span style="color: #000000;">CtrlKey</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">CheckBox</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Ctrl"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">8</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">52</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">70</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">20</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
constant WinKey = create(CheckBox, "Windows", 0, Main, 8, 76, 72, 20, 0)
<span style="color: #008080;">constant</span> <span style="color: #000000;">WinKey</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">CheckBox</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Windows"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">8</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">76</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">72</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">20</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
constant KeyList = create(ComboDropDown, "KeyList", 0, Main, 89, 11, 100, 652, 0)
<span style="color: #008080;">constant</span> <span style="color: #000000;">KeyList</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ComboDropDown</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"KeyList"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">89</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">11</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">100</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">652</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
constant KeyInfoText = create(Label, "", 0, Main, 90, 72, 186, 20, SS_LEFTNOWORDWRAP)
<span style="color: #008080;">constant</span> <span style="color: #000000;">KeyInfoText</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">Label</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">""</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">90</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">72</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">186</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">20</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">SS_LEFTNOWORDWRAP</span><span style="color: #0000FF;">)</span>
constant SetButton = create(Button, "setHotKey", 0, Main, 8, 99, 176, 40, BS_DEFPUSHBUTTON)
<span style="color: #008080;">constant</span> <span style="color: #000000;">SetButton</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">Button</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"setHotKey"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">8</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">99</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">176</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">40</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">BS_DEFPUSHBUTTON</span><span style="color: #0000FF;">)</span>
constant KillButton = create(Button, "killHotKey", 0, Main, 195, 99, 80, 40, 0)
<span style="color: #008080;">constant</span> <span style="color: #000000;">KillButton</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">create</span><span style="color: #0000FF;">(</span><span style="color: #000000;">Button</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"killHotKey"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">195</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">99</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">80</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">40</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
 
sequence KeyCodes
<span style="color: #004080;">sequence</span> <span style="color: #000000;">KeyCodes</span>
 
procedure initialise()
<span style="color: #008080;">procedure</span> <span style="color: #000000;">initialise</span><span style="color: #0000FF;">()</span>
string text
<span style="color: #004080;">string</span> <span style="color: #000000;">text</span>
for f=1 to 11 do -- F1 to F11 (F12 is reserved)
<span style="color: #008080;">for</span> <span style="color: #000000;">f</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">11</span> <span style="color: #008080;">do</span> <span style="color: #000080;font-style:italic;">-- F1 to F11 (F12 is reserved)</span>
text = sprintf("F%d",f)
<span style="color: #000000;">text</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"F%d"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">f</span><span style="color: #0000FF;">)</span>
void = insertItem(KeyList,text,0)
<span style="color: #004600;">void</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">insertItem</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KeyList</span><span style="color: #0000FF;">,</span><span style="color: #000000;">text</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
end for
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
KeyCodes = {VK_F1, VK_F2, VK_F3, VK_F4, VK_F5, VK_F6, VK_F7, VK_F8, VK_F9, VK_F10, VK_F11}
<span style="color: #000000;">KeyCodes</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">VK_F1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">VK_F2</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">VK_F3</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">VK_F4</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">VK_F5</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">VK_F6</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">VK_F7</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">VK_F8</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">VK_F9</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">VK_F10</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">VK_F11</span><span style="color: #0000FF;">}</span>
for ch='A' to 'Z' do
<span style="color: #008080;">for</span> <span style="color: #000000;">ch</span><span style="color: #0000FF;">=</span><span style="color: #008000;">'A'</span> <span style="color: #008080;">to</span> <span style="color: #008000;">'Z'</span> <span style="color: #008080;">do</span>
text = sprintf("%s",ch)
<span style="color: #000000;">text</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"%s"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">ch</span><span style="color: #0000FF;">)</span>
void = insertItem(KeyList,text,0)
<span style="color: #004600;">void</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">insertItem</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KeyList</span><span style="color: #0000FF;">,</span><span style="color: #000000;">text</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
KeyCodes &= ch -- (as char, not string)
<span style="color: #000000;">KeyCodes</span> <span style="color: #0000FF;">&=</span> <span style="color: #000000;">ch</span> <span style="color: #000080;font-style:italic;">-- (as char, not string)</span>
end for
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
for i=1 to 9 do
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">9</span> <span style="color: #008080;">do</span>
text = sprintf("%d",i)
<span style="color: #000000;">text</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"%d"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
void = insertItem(KeyList,text,0)
<span style="color: #004600;">void</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">insertItem</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KeyList</span><span style="color: #0000FF;">,</span><span style="color: #000000;">text</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
KeyCodes &= i -- (as char, not string)
<span style="color: #000000;">KeyCodes</span> <span style="color: #0000FF;">&=</span> <span style="color: #000000;">i</span> <span style="color: #000080;font-style:italic;">-- (as char, not string)</span>
end for
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
end procedure
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
initialise()
<span style="color: #000000;">initialise</span><span style="color: #0000FF;">()</span>
 
constant INPUT_KEYBOARD=1
<span style="color: #008080;">constant</span> <span style="color: #000000;">INPUT_KEYBOARD</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span>
 
procedure pokeKey(atom pKey, integer key)
<span style="color: #008080;">procedure</span> <span style="color: #000000;">pokeKey</span><span style="color: #0000FF;">(</span><span style="color: #004080;">atom</span> <span style="color: #000000;">pKey</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000000;">key</span><span style="color: #0000FF;">)</span>
-- see http://msdn.microsoft.com/en-us/library/windows/desktop/ms646270(v=vs.85).aspx
<span style="color: #000080;font-style:italic;">-- andsee http://msdn.microsoft.com/en-us/library/windows/desktop/ms646271ms646270(v=vs.85).aspx
-- and http://msdn.microsoft.com/en-us/library/windows/desktop/ms646271(v=vs.85).aspx</span>
integer ScanCode
<span style="color: #004080;">integer</span> <span style="color: #000000;">ScanCode</span>
ScanCode = c_func(xVkKeyScan,{key})
<span style="color: #000000;">ScanCode</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">c_func</span><span style="color: #0000FF;">(</span><span style="color: #000000;">xVkKeyScan</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">key</span><span style="color: #0000FF;">})</span>
poke4(pKey+KEYBDINPUT_type,INPUT_KEYBOARD)
<span style="color: #000000;">poke4</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pKey</span><span style="color: #0000FF;">+</span><span style="color: #000000;">KEYBDINPUT_type</span><span style="color: #0000FF;">,</span><span style="color: #000000;">INPUT_KEYBOARD</span><span style="color: #0000FF;">)</span>
poke2(pKey+KEYBDINPUT_wVk,key)
<span style="color: #000000;">poke2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pKey</span><span style="color: #0000FF;">+</span><span style="color: #000000;">KEYBDINPUT_wVk</span><span style="color: #0000FF;">,</span><span style="color: #000000;">key</span><span style="color: #0000FF;">)</span>
poke4(pKey+KEYBDINPUT_dwFlags,0)
<span style="color: #000000;">poke4</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pKey</span><span style="color: #0000FF;">+</span><span style="color: #000000;">KEYBDINPUT_dwFlags</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
poke4(pKey+KEYBDINPUT_wScan,ScanCode)
<span style="color: #000000;">poke4</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pKey</span><span style="color: #0000FF;">+</span><span style="color: #000000;">KEYBDINPUT_wScan</span><span style="color: #0000FF;">,</span><span style="color: #000000;">ScanCode</span><span style="color: #0000FF;">)</span>
poke4(pKey+KEYBDINPUT_time,0)
<span style="color: #000000;">poke4</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pKey</span><span style="color: #0000FF;">+</span><span style="color: #000000;">KEYBDINPUT_time</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
poke4(pKey+KEYBDINPUT_dwExtraInfo,0)
<span style="color: #000000;">poke4</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pKey</span><span style="color: #0000FF;">+</span><span style="color: #000000;">KEYBDINPUT_dwExtraInfo</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
end procedure
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
 
function MainHandler(integer id, integer msg, atom wParam, object lParam)
<span style="color: #008080;">function</span> <span style="color: #000000;">MainHandler</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">id</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000000;">msg</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">wParam</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">object</span> <span style="color: #000000;">lParam</span><span style="color: #0000FF;">)</span>
string text
<span style="color: #004080;">string</span> <span style="color: #000000;">text</span>
atom pKeys, pKey
<span style="color: #004080;">atom</span> <span style="color: #000000;">pKeys</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">pKey</span>
integer nRes
<span style="color: #004080;">integer</span> <span style="color: #000000;">nRes</span>
 
if msg=WM_SETFOCUS then
<span style="color: #008080;">if</span> <span style="color: #000000;">msg</span><span style="color: #0000FF;">=</span><span style="color: #000000;">WM_SETFOCUS</span> <span style="color: #008080;">then</span>
if id=SetButton then
<span style="color: #008080;">if</span> <span style="color: #000000;">id</span><span style="color: #0000FF;">=</span><span style="color: #000000;">SetButton</span> <span style="color: #008080;">then</span>
if not getIndex(KeyList) then
<span style="color: #008080;">if</span> <span style="color: #008080;">not</span> <span style="color: #000000;">getIndex</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KeyList</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
setFocus(KeyList)
<span style="color: #000000;">setFocus</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KeyList</span><span style="color: #0000FF;">)</span>
void = messageBox("HotKey","Select a key from the drop-down",MB_OK)
<span style="color: #004600;">void</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">messageBox</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"HotKey"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Select a key from the drop-down"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">MB_OK</span><span style="color: #0000FF;">)</span>
else
<span Modifier style="color: isChecked(AltKey) * MOD_ALT +#008080;">else</span>
<span style="color: #000000;">Modifier</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">isChecked</span><span style="color: #0000FF;">(</span><span style="color: #000000;">AltKey</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">MOD_ALT</span> <span style="color: #0000FF;">+</span>
isChecked(ShiftKey) * MOD_SHIFT +
<span style="color: #000000;">isChecked</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ShiftKey</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">MOD_SHIFT</span> <span style="color: #0000FF;">+</span>
isChecked(CtrlKey) * MOD_CONTROL +
<span style="color: #000000;">isChecked</span><span style="color: #0000FF;">(</span><span style="color: #000000;">CtrlKey</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">MOD_CONTROL</span> <span style="color: #0000FF;">+</span>
isChecked(WinKey) * MOD_WIN
<span style="color: #000000;">isChecked</span><span style="color: #0000FF;">(</span><span style="color: #000000;">WinKey</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">MOD_WIN</span>
vKeyCode = KeyCodes[getIndex(KeyList)]
<span style="color: #000000;">vKeyCode</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">KeyCodes</span><span style="color: #0000FF;">[</span><span style="color: #000000;">getIndex</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KeyList</span><span style="color: #0000FF;">)]</span>
text = sprintf("setHotKey(Main, #%02x, #%02x) [%s]",{Modifier,vKeyCode,getText(KeyList)})
<span style="color: #000000;">text</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"setHotKey(Main, #%02x, #%02x) [%s]"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">Modifier</span><span style="color: #0000FF;">,</span><span style="color: #000000;">vKeyCode</span><span style="color: #0000FF;">,</span><span style="color: #000000;">getText</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KeyList</span><span style="color: #0000FF;">)})</span>
setText(KeyInfoText, text)
<span style="color: #000000;">setText</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KeyInfoText</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">text</span><span style="color: #0000FF;">)</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
elsif id=KillButton then
<span style="color: #008080;">elsif</span> <span style="color: #000000;">id</span><span style="color: #0000FF;">=</span><span style="color: #000000;">KillButton</span> <span style="color: #008080;">then</span>
text = sprintf("killHotKey(Main) [%s]",{getText(KeyList)})
<span style="color: #000000;">text</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"killHotKey(Main) [%s]"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">getText</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KeyList</span><span style="color: #0000FF;">)})</span>
setText(KeyInfoText, text)
<span style="color: #000000;">setText</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KeyInfoText</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">text</span><span style="color: #0000FF;">)</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
elsif msg=WM_COMMAND then
<span style="color: #008080;">elsif</span> <span style="color: #000000;">msg</span><span style="color: #0000FF;">=</span><span style="color: #000000;">WM_COMMAND</span> <span style="color: #008080;">then</span>
if id=mExit then
<span style="color: #008080;">if</span> <span style="color: #000000;">id</span><span style="color: #0000FF;">=</span><span style="color: #000000;">mExit</span> <span style="color: #008080;">then</span>
closeWindow(Main)
<span style="color: #000000;">closeWindow</span><span style="color: #0000FF;">(</span><span style="color: #000000;">Main</span><span style="color: #0000FF;">)</span>
elsif id=mAbout then
<span style="color: #008080;">elsif</span> <span style="color: #000000;">id</span><span style="color: #0000FF;">=</span><span style="color: #000000;">mAbout</span> <span style="color: #008080;">then</span>
text = "Simple hotkey/sendinput wrapper.\n\n"&
<span style="color: #000000;">text</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"Simple hotkey/sendinput wrapper.\n\n"</span><span style="color: #0000FF;">&</span>
 
"Author Pete Lomax.\n"&
<span style="color: #008000;">"Author Pete Lomax.\n"</span><span style="color: #0000FF;">&</span>
"Written in phix (http://phix.x10.mx) but could easily be ported\n"&
<span style="color: #008000;">"Written in phix (http://phix.x10.mx) but could easily be ported\n"</span><span style="color: #0000FF;">&</span>
"to any language (that can invoke RegisterHotKey and SendInput).\n\n"&
<span style="color: #008000;">"to any language (that can invoke RegisterHotKey and SendInput).\n\n"</span><span style="color: #0000FF;">&</span>
 
"First, use the checkboxes and dropdown to select a hotkey (eg F7).\n"&
<span style="color: #008000;">"First, use the checkboxes and dropdown to select a hotkey (eg F7).\n"</span><span style="color: #0000FF;">&</span>
"Currently always sends {delete,down}, but that could easily be changed.\n"&
<span style="color: #008000;">"Currently always sends {delete,down}, but that could easily be changed.\n"</span><span style="color: #0000FF;">&</span>
"Used on build02 to perform the GUID stripping.\n\n"&
<span style="color: #008000;">"Used on build02 to perform the GUID stripping.\n\n"</span><span style="color: #0000FF;">&</span>
 
"Note that Windows Server 2008 requires this to be run in admin mode, \n"&
<span style="color: #008000;">"Note that Windows Server 2008 requires this to be run in admin mode, \n"</span><span style="color: #0000FF;">&</span>
"as otherwise something called UIPI will block it and not say why.\n"
<span style="color: #008000;">"as otherwise something called UIPI will block it and not say why.\n"</span>
void = messageBox("HotKey",text,MB_OK)
<span style="color: #004600;">void</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">messageBox</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"HotKey"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">text</span><span style="color: #0000FF;">,</span><span style="color: #000000;">MB_OK</span><span style="color: #0000FF;">)</span>
elsif id=SetButton then
<span style="color: #008080;">elsif</span> <span style="color: #000000;">id</span><span style="color: #0000FF;">=</span><span style="color: #000000;">SetButton</span> <span style="color: #008080;">then</span>
-- see http://msdn.microsoft.com/en-us/library/windows/desktop/ms646309(v=vs.85).aspx
<span style="color: #000080;font-style:italic;">-- see http://msdn.microsoft.com/en-us/library/windows/desktop/ms646309(v=vs.85).aspx</span>
if c_func(xRegisterHotKey,{MainHwnd, 0, Modifier, vKeyCode})=0 then
<span style="color: #008080;">if</span> <span style="color: #000000;">c_func</span><span style="color: #0000FF;">(</span><span style="color: #000000;">xRegisterHotKey</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">MainHwnd</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">Modifier</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">vKeyCode</span><span style="color: #0000FF;">})=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span>
void = messageBox("HotKey","Register Hotkey failed",MB_OK)
<span style="color: #004600;">void</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">messageBox</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"HotKey"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Register Hotkey failed"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">MB_OK</span><span style="color: #0000FF;">)</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
elsif id=KillButton then
<span style="color: #008080;">elsif</span> <span style="color: #000000;">id</span><span style="color: #0000FF;">=</span><span style="color: #000000;">KillButton</span> <span style="color: #008080;">then</span>
if c_func(xUnregisterHotKey,{MainHwnd, 0})=0 then
<span style="color: #008080;">if</span> <span style="color: #000000;">c_func</span><span style="color: #0000FF;">(</span><span style="color: #000000;">xUnregisterHotKey</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">MainHwnd</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">})=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span>
void = messageBox("HotKey","UnRegister Hotkey failed",MB_OK)
<span style="color: #004600;">void</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">messageBox</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"HotKey"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"UnRegister Hotkey failed"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">MB_OK</span><span style="color: #0000FF;">)</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
elsif msg=WM_HOTKEY then
<span style="color: #008080;">elsif</span> <span style="color: #000000;">msg</span><span style="color: #0000FF;">=</span><span style="color: #000000;">WM_HOTKEY</span> <span style="color: #008080;">then</span>
setText(Main,sprintf("%g",time()))
<span style="color: #000000;">setText</span><span style="color: #0000FF;">(</span><span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"%g"</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()))</span>
pKeys = allocate(sizeofstruct(KEYBDINPUT)*2)
<span style="color: #000000;">pKeys</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">allocate</span><span style="color: #0000FF;">(</span><span style="color: #000000;">sizeofstruct</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KEYBDINPUT</span><span style="color: #0000FF;">)*</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span>
pKey = pKeys
<span style="color: #000000;">pKey</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">pKeys</span>
pokeKey(pKey,VK_DELETE)
<span style="color: #000000;">pokeKey</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pKey</span><span style="color: #0000FF;">,</span><span style="color: #000000;">VK_DELETE</span><span style="color: #0000FF;">)</span>
pKey += sizeofstruct(KEYBDINPUT)
<span style="color: #000000;">pKey</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">sizeofstruct</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KEYBDINPUT</span><span style="color: #0000FF;">)</span>
pokeKey(pKey,VK_DOWN)
<span style="color: #000000;">pokeKey</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pKey</span><span style="color: #0000FF;">,</span><span style="color: #000000;">VK_DOWN</span><span style="color: #0000FF;">)</span>
 
-- see http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx
<span style="color: #000080;font-style:italic;">-- see http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx</span>
nRes = c_func(xSendInput,{2,pKeys,sizeofstruct(KEYBDINPUT)})
<span style="color: #000000;">nRes</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">c_func</span><span style="color: #0000FF;">(</span><span style="color: #000000;">xSendInput</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">pKeys</span><span style="color: #0000FF;">,</span><span style="color: #000000;">sizeofstruct</span><span style="color: #0000FF;">(</span><span style="color: #000000;">KEYBDINPUT</span><span style="color: #0000FF;">)})</span>
if nRes!=2 then
<span style="color: #008080;">if</span> <span style="color: #000000;">nRes</span><span style="color: #0000FF;">!=</span><span style="color: #000000;">2</span> <span style="color: #008080;">then</span>
nRes = c_func(xGetLastError,{})
<span style="color: #000000;">nRes</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">c_func</span><span style="color: #0000FF;">(</span><span style="color: #000000;">xGetLastError</span><span style="color: #0000FF;">,{})</span>
text = sprintf("SendInput failed[%d]",nRes)
<span style="color: #000000;">text</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"SendInput failed[%d]"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">nRes</span><span style="color: #0000FF;">)</span>
void = messageBox("HotKey",text,MB_OK)
<span style="color: #004600;">void</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">messageBox</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"HotKey"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">text</span><span style="color: #0000FF;">,</span><span style="color: #000000;">MB_OK</span><span style="color: #0000FF;">)</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
if wParam or object(lParam) then end if -- suppress warnings
<span style="color: #008080;">if</span> <span style="color: #000000;">wParam</span> <span style="color: #008080;">or</span> <span style="color: #004080;">object</span><span style="color: #0000FF;">(</span><span style="color: #000000;">lParam</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span> <span style="color: #000080;font-style:italic;">-- suppress warnings</span>
return 0
<span style="color: #008080;">return</span> <span style="color: #000000;">0</span>
end function
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
setHandler({Main,SetButton,KillButton,mExit,mAbout},routine_id("MainHandler"))
<span style="color: #000000;">setHandler</span><span style="color: #0000FF;">({</span><span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span><span style="color: #000000;">SetButton</span><span style="color: #0000FF;">,</span><span style="color: #000000;">KillButton</span><span style="color: #0000FF;">,</span><span style="color: #000000;">mExit</span><span style="color: #0000FF;">,</span><span style="color: #000000;">mAbout</span><span style="color: #0000FF;">},</span><span style="color: #7060A8;">routine_id</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"MainHandler"</span><span style="color: #0000FF;">))</span>
 
WinMain(Main,SW_NORMAL)</lang>
<span style="color: #000000;">WinMain</span><span style="color: #0000FF;">(</span><span style="color: #000000;">Main</span><span style="color: #0000FF;">,</span><span style="color: #000000;">SW_NORMAL</span><span style="color: #0000FF;">)</span>
<!--</lang>-->
 
=={{header|PicoLisp}}==
7,806

edits