HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0430
sys右クリックメニューについて2解決


sys

リンク

2014/4/30(Wed) 18:02:46|NO.61779

#uselib "user32.dll"
#func DestroyIcon "DestroyIcon" int #func SetWindowLongA "SetWindowLongA" int, int, int #cfunc GetForegroundWindow "GetForegroundWindow" #func SetWindowLong "SetWindowLongA" sptr,sptr,sptr #func AppendMenu "AppendMenuA" int, int, int, str #func DestroyMenu "DestroyMenu" int #cfunc CreatePopupMenu "CreatePopupMenu" #func TrackPopupMenu "TrackPopupMenu" int, int, int, int, int, int #uselib "Shell32.dll" #func ExtractIconExA "ExtractIconExA" sptr, int, nullptr, var, int #func Shell_NotifyIconA "Shell_NotifyIconA" int, var #uselib "KERNEL32.DLL" #func GetModuleFileNameA "GetModuleFileNameA" nullptr, prefstr, int goto *jmp #deffunc destroytrayicon int prm_28 dim var_3, 88 / 4 var_3 = 88, hwnd, prm_28 Shell_NotifyIconA 2, var_3 if ( var_4(prm_28) ) { DestroyIcon var_4(prm_28) var_4(prm_28) = 0 } return #deffunc createtrayicon str prm_29, int prm_30, int prm_31 if ( var_4(prm_31) ) { destroytrayicon prm_31 } ExtractIconExA var_5, prm_30, var_4(prm_31), 1 dim var_3, 88 / 4 var_3 = 88, var_6, prm_31, 7, 2304, var_4(prm_31) poke var_3, 4 * 6, prm_29 Shell_NotifyIconA 0, var_3 oncmd gosub *en, 2304 return #deffunc popupballoontip str prm_32, str prm_33, int prm_34, int prm_35 dim var_3, 488 / 4 var_3 = 488, var_6, prm_35, 16 poke var_3, 4 * 40, prm_33 var_3(104) = 1000 * 60 poke var_3, 4 * 105, prm_32 var_3(121) = prm_34 Shell_NotifyIconA 1, var_3 return #deffunc settrayiconfile str prm_36 sdim var_5, 1024 if ( prm_36 == "" ) { GetModuleFileNameA 1024 var_5 = refstr } else { var_5 = prm_36 } return #deffunc _init_trayicon_ mref var_7, 96 var_6 = var_7(13) dim var_4, 16 settrayiconfile "" return length #deffunc _deinit_trayicon_ onexit foreach var_4 if ( var_4(cnt) ) { destroytrayicon cnt } loop return *jmp #module #define NIM_ADD $00000000 #define NIM_DELETE $00000002 #define NIM_MODIFY $00000001 #define NIF_ICON $00000002 #define NIF_MESSAGE $00000001 #define NIF_TIP $00000004 #defcfunc tasktray str prm1 tooltext = prm1 : if strlen(tooltext)==0 : tooltext="" sdim lpFileName,260 SelfName=lpFileName icobig=0 hIcon=icosmall dim IcoData,22 IcoData(0) = 88 IcoData(1) = hwnd IcoData(2) = 1 IcoData(3) = NIF_MESSAGE|NIF_ICON|NIF_TIP IcoData(4) = $00001400 IcoData(5) = hIcon poke IcoData, 24, tooltext return hIcon #deffunc taskicoclr dim IcoData,22 IcoData(0) = 88 IcoData(1) = hwnd IcoData(2) = 1 IcoData(3) = NIF_ICON return 0 #deffunc taskchengeico int prm1 nhIcon = prm1 : if nhIcon==0 : return -1 dim IcoData,22 IcoData(0) = 88 IcoData(1) = hwnd IcoData(2) = 1 IcoData(3) = NIF_ICON IcoData(5) = nhIcon return 0 #deffunc tasktooltip str prm1 tooltext = prm1 : if strlen(tooltext) ==0 : tooltext="" dim IcoData,22 IcoData(0) = 88 IcoData(1) = hwnd IcoData(2) = 1 IcoData(3) = NIF_TIP poke IcoData, 24, tooltext return 0 #global *main oncmd gosub *OnMotificmd, NOTIFY_TRAYICON pos 170 , 265 objsize 100,25 button gosub "とじる",*modecmd stop *modecmd _init_trayicon_ createtrayicon "aaa" popupballoontip "bbbb", "ccccc", 4, 0 settrayiconfile "user32.dll" gsel 0,-1 gosub *trayico stop *en var_30 = "終了" var_31 = wparam var_32 = lparam if ( 0 ) { var_33++ } if ( var_32 == 513 | var_33 ) { var_33 = 0 sendmsg var_2, 274, 61728 goto *r var_33++ } if ( var_32 == 516 | var_33 ) { var_33 = 0 itemID=lparam switch itemID case WM_LBUTTONDOWN hMenu.1 = CreatePopupMenu () AppendMenu hMenu.1, , $1, "開く" AppendMenu hMenu.1, $800, , "" AppendMenu hMenu.1, , $2, "終了" TrackPopupMenu hMenu.1, $100, ginfo (0), ginfo (1), , hwnd if stat = 0 : return gsel 0,2 if ( stat = $1 ) { gosub *main } if ( stat = $2 ) { gsel 0,-1 : dialog "終了しますか?",2,"お知らせ" : if (stat=6){ end } : else{} swbreak swend } *r return *OnMotificmd itemID=lparam switch itemID case WM_LBUTTONDOWN gosub *icondel swbreak swend return *trayico tooltext = "" hIcon=tasktray(tooltext) gosub *en *icondel taskicoclr return

タスクトレイのアイコンを右クリックで、開く 終了のメニューをだしたいのですが
反応しません。
どうすればよいでしょうか?



この記事に返信する


暇人

リンク

2014/4/30(Wed) 23:22:48|NO.61785


#define WM_LBUTTONDOWN $00000201 #define WM_RBUTTONDOWN $00000204 #define NOTIFY_TRAYICON $00001400
が無いので0が入ってる変数になってる
メニュー出したいだろう所でWM_RBUTTONDOWNじゃ無くWM_LBUTTONDOWNにしてる

右上の閉じる押したら終了以外の処理をしたいなら
onexitを使う


> hMenu.1 = CreatePopupMenu ()
> AppendMenu hMenu.1, , $1, "開く"
> AppendMenu hMenu.1, $800, , ""
> AppendMenu hMenu.1, , $2, "終了"

これは一回作れば削除するまでhMenuを使いまわせるので(と、言うかCreatePopupMenu実行した分だけメニューが作られる)
実際にメニューを出したい時には
> TrackPopupMenu hMenu.1, $100, ginfo (0), ginfo (1), , hwnd
だけで良い



sys

リンク

2014/5/1(Thu) 10:12:08|NO.61795

ありがとうございますw
できました!



ONION software Copyright 1997-2023(c) All rights reserved.