lparamの存在をすっかり忘れてたでござる……じゃあこうなるかな?
#include "user32.as"
#const GWL_STYLE -16
#const GWL_EXSTYLE -20
#const WS_MINIMIZEBOX 0x00020000
#const WS_EX_CONTEXTHELP 0x00000400
#const WM_HELP 0x0053
#const HELPINFO_MENUITEM 0x0002
#const HELPINFO_WINDOW 0x0001
sdim output, 32000
;最大/最小化ボタン削除
GetWindowLong hwnd, GWL_STYLE
SetWindowLong hwnd, GWL_STYLE, stat ^ WS_MINIMIZEBOX
;ヘルプボタン追加
GetWindowLong hwnd, GWL_EXSTYLE
SetWindowLong hwnd, GWL_EXSTYLE, WS_EX_CONTEXTHELP
;ヘルプボタンを押した後に何かオブジェクトを押すのを待つ
oncmd gosub *HelpMessage, WM_HELP
mesbox output, 400, 400, 0
stop
*HelpMessage
;wParamは常に0、lparamはHELPINFO構造体のアドレスを表す
dupptr cbSize, lparam, 4
dupptr iContextType, lparam + 4, 4
dupptr iCtrlId, lparam + 8, 4
dupptr hItemHandle, lparam + 12, 4
dupptr dwContextId, lparam + 16, 4
dupptr MousePos_x, lparam + 20, 4
dupptr MousePos_y, lparam + 24, 4
;結果表示
output = "HELPINFO構造体のサイズ:" + cbSize + "\n"
if(iContextType == HELPINFO_MENUITEM){
output += "ヘルプのコンテキストの種類:メニュー項目\n"
output += "メニュー項目のID:" + iCtrlId + "\n"
output += "メニュー項目のID:" + hItemHandle + "\n"
}else{
output += "ヘルプのコンテキストの種類:コントロールまたはウィンドウ\n"
output += "コントロールまたはウィンドウのID:" + iCtrlId + "\n"
output += "コントロールまたはウィンドウのハンドル:" + hItemHandle + "\n"
}
output += "コントロールまたはウィンドウのコンテキストID:" + dwContextId + "\n"
output += "マウス座標:(" + MousePos_x + ", " + MousePos_y + ")\n"
objprm 0, output
return