More ... | HSP3のテクニック他HSP3 のちょっと知られていないテクニックなどです。
oncmd 割込みには事前処理と事後処理とがあるらしい( 非公式 )事前処理とはHSPがメッセージを処理する前に指定したラベルへ割込みが発生する処理のことで、 oncmd gosub にあたる。 #define MODE 0 ; 0=事後/1=事前 #if MODE oncmd gosub *OnCommand, $0111 ; 本来の処理に先駆けて『事前』に割込みを発生する #else oncmd goto *OnCommand, $0111 ; 本来の処理を行った『後』に割込みを発生する #endif chkbox "hello",n *watch wait 1: title "現在値 = "+n: goto *watch stop *OnCommand mes "割込み発生時 = "+n #if MODE return #else goto *watch #endif DLL 関数のアドレス取得実は varptr 関数で変数と同様に DLL 関数のアドレス(ポインタ)を取得できます。 #uselib "user32.dll" #func MessageBox "MessageBoxA" int, sptr, sptr, int func = varptr(MessageBox) ; 関数のアドレス取得 mes strf("%08x", func) ; アドレス表示(16進数) buf = "テスト" prm = hwnd, varptr(buf), varptr(buf), 0 mes callfunc(prm, func, 4) ; 関数実行 stop |