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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0505
XOZMacみたいにするには5解決


XOZ

リンク

2007/5/5(Sat) 15:36:01|NO.8056

Macは下の方にカーソルをやるとアイコンが出てくるじゃないですか。
僕はそれを作りたいんですけど、常駐させといてタスクバーに触れたら出てくる
見たいにするにはどうすればいいのでしょうか。



この記事に返信する


なたで

リンク

2007/5/5(Sat) 18:15:29|NO.8061

マックみたいに作れるかどうかは、分かりませんが、
タスクバーの上にマウスがあるか調べるには
ポインタの下にあるハンドルで調べる方法があります。

サンプルですが

#uselib "user32.dll" #cfunc WindowFromPoint "WindowFromPoint" sptr,sptr #cfunc GetParent "GetParent" sptr #func GetClassName "GetClassNameA" sptr,sptr,int sdim ClassName,256 repeat wait 1 //マウスの下にあるウィンドウのハンドルを取得 hwnd_1=WindowFromPoint(ginfo(0),ginfo(1)) //そのハンドルを持つ親のハンドルを取得 hwnd_2=GetParent(hwnd_1) if (hwnd_2=0){hwnd_2=hwnd_1} //指定されたウィンドウが属するクラスの名前 GetClassName hwnd_2,varptr(ClassName),255 TaskCh=0 switch ClassName case "Shell_TrayWnd" case "ReBarWindow32" case "MSTaskSwWClass" case "TrayNotifyWnd" case "SysPager" TaskCh=1 swend if (TaskCh){title "タスクバーの上です"}else{title ""} loop
WindowsXPでは動作すると思います。

タスクバーとスタートメニューの歴史(かずぼんさんのHPより)
http://homepage1.nifty.com/kazubon/progdoc/tclock/taskbarhistory.html



なたで

リンク

2007/5/5(Sat) 19:17:16|NO.8063

これだとエクスプローラーのメニューバーにも反応してしまいますね。



KENTA

リンク

2007/5/5(Sat) 19:23:46|NO.8064

タクスバーの縦の長さを求めて、判定をしてみたらどうです。



なたで

リンク

2007/5/5(Sat) 22:04:25|NO.8071

なるほど、タスクバーの範囲求めた方が簡単ですね。
ありがとうございます。


#uselib "user32.dll" #cfunc FindWindow "FindWindowA" sptr,sptr #func GetWindowRect "GetWindowRect" sptr,sptr hwnd_=FindWindow("Shell_TrayWnd",0) dim lpRect,4 repeat wait 1 GetWindowRect hwnd_,varptr(lpRect) if (lpRect(0)<=ginfo(0))&(lpRect(1)<=ginfo(1))&(lpRect(2)>=ginfo(0))&(lpRect(3)>=ginfo(1)){ title "タスクバーの上です" }else{ title "" } loop



XOZ

リンク

2007/5/6(Sun) 11:50:28|NO.8082

皆さんありがとうございます。これで何とか作れそうです。
また何かでここに来ることもあるかとおもいますが、そのときはまたよろしくお願いします



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