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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0108
SELIA!タスクトレイアイコンの位置の調べ方ってありますか?2解決


SELIA!

リンク

2009/1/8(Thu) 20:08:59|NO.22495

HSPで作ったアプリケーションを常にタスクトレイ上に格納して
タスクトレイ上のアイコンのマウスホイールのアップダウンで
Windowsのマスターボリュームのアップダウンができるプログラムを作ろうとしているのですが
タスクトレイに格納した、アイコンの位置を調べる事ができないので、わかる方がいましたら。
アイコンの位置を調べる方法を教えていただけませんか?



この記事に返信する


New Monkey

リンク

2009/1/8(Thu) 21:36:22|NO.22507

ほとんど
http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200512/05120034.txt
を翻訳しただけですがどうぞ
(WindowsXPで動作確認)


#include "user32.as" #include "kernel32.as" #define TRAYSTR "音量" //取得するアイコンのツールチップ文字列 //トレイ(のToolbar)を取得 FindWindowEx 0, 0, "Shell_TrayWnd", 0 FindWindowEx stat, 0, "TrayNotifyWnd", 0 FindWindowEx stat, 0, "SysPager", 0 FindWindowEx stat, 0, "ToolbarWindow32", 0 htray = stat //データ取得用メモリ確保 pid = 0 GetWindowThreadProcessId htray, varptr(pid) OpenProcess $001F0FFF/*PROCESS_ALL_ACCESS*/, 0, pid hproc = stat VirtualAllocEx hproc, 0, 65536, $00001000/*MEM_COMMIT*/, $00000004/*PAGE_READWRITE*/ pbuf = stat //トレイアイコン(ボタン)情報取得 sendmsg htray, $00000418/*TB_BUTTONCOUNT*/, 0, 0 btncnt = stat rcnt = 0 msg = "見つかりませんでした" repeat btncnt sendmsg htray, $00000417/*TB_GETBUTTON*/, cnt, pbuf dim tbb, 5 ReadProcessMemory hproc, pbuf, varptr(tbb), 20, varptr(rcnt) if (tbb(4) & $FFFF0000) = 0 { continue } sendmsg htray, $0000044B/*TB_GETBUTTONTEXTW*/, tbb(1), 0 size = stat if size <= 0 { continue } sdim txt, size * 2 ReadProcessMemory hproc, tbb(4), varptr(txt), size * 2, varptr(rcnt) if cnvwtos(txt) != TRAYSTR { continue } state = peek(tbb, 8) if (state & $00000008/*TBSTATE_HIDDEN*/) = 0 { sendmsg htray, $00000433/*TB_GETRECT*/, tbb(1), pbuf dim rctbtn, 4 ReadProcessMemory hproc, pbuf, varptr(rctbtn), 16, varptr(rcnt) ClientToScreen htray, varptr(rctbtn) ClientToScreen htray, varptr(rctbtn(2)) msg = ""+rctbtn(0) + "," + rctbtn(1) + "," + rctbtn(2) + "," + rctbtn(3) } else { msg = "アイコンは非表示です" } break loop mes msg //後処理 VirtualFreeEx hproc, pbuf, 0, $00008000/*MEM_RELEASE*/ CloseHandle hproc



SELIA!

リンク

2009/1/9(Fri) 16:52:02|NO.22531

New Monkeyさんありがとうございます。

今は漫画喫茶にいるので(わけあって自宅ではネットに繋げないので)、自宅に帰って試して見ることにいたします



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