PostMessageでマウスクリック操作

解決


雪平  2009-11-07 18:09:04  No: 36104

ウインドウハンドルをマウスカーソル位置で取得し
そこにPostMessageでWM_LBUTTONDOWNと
WM_LBUTTONUPを送ってマウス位置を
マウスクリックボタン以外で(例えば任意のキーとかで)
マウスクリック操作をする物を
作っているのですがウィンドウのクライアント領域は
下の方法でうまくいくのですが
タイトルバー上ではうまくいきません
(閉じる、最小化ボタンなどが動作しません)
タイトルバー上ではマウスメッセージを送るだけでは
だめなのでしょうか?
解決策が分かる方、おられましたらよろしくお願いします。

var p: TPoint; h: HWND;

GetCursorPos(p);
h := WindowFromPoint(p);
Windows.ScreenToClient(h, p);  //ここをコメントアウトしてもダメでした
PostMessage(h, WM_LBUTTONDOWN, 0, MakeLParam(p.X, p.Y));
PostMessage(h, WM_LBUTTONUP, 0, MakeLParam(p.X, p.Y));


ttt  2009-11-07 22:16:56  No: 36105

タイトルバーなどの部分はノンクライアント領域なので
WM_NCLBUTTONUP/DOWNではどうでしょうか?


雪平  2009-11-08 00:37:09  No: 36106

tttさん、ありがとうございます。
WM_NCHITTESTとWM_NCLBUTTONDOWN、WM_NCLBUTTONUPで
タイトルバーをクリックしたらアクティブには(ダブルクリックで最大化とかは)出来るようになりました。
ただ、下の方法では、システム、最小化、最大化、閉じるボタンが
WM_NCLBUTTONDOWN状態で止まってしまいうまくいかないです。
他アプリのタイトルバーのボタンを操作するのは、また違った方法が必要なのでしょうか。

gp = グローバル座標
nht = WM_NCHITTESTメッセージが返すコード

    PostMessage(h, WM_NCLBUTTONDOWN, nht, MakeLParam(gp.X, gp.Y));
    PostMessage(h, WM_NCLBUTTONUP, nht, MakeLParam(gp.X, gp.Y));


monaa  2009-11-08 00:55:07  No: 36107

mouse_eventの方が簡単に思えますが、
PostMessageの場合、基本的なWindowsMessageの流れを把握する必要があります。
WM_LBUTTONDOWNのWPARAMも0で大丈夫なんですか?
http://yokohama.cool.ne.jp/chokuto/urawaza/message/WM_LBUTTONDOWN.html


雪平  2009-11-08 02:12:23  No: 36108

Mouse_Event・・・こんないい関数があったなんて。
ありがとうございます。Mouse_Eventでうまくいきました。

PostMessageのほうを、調べてみたところ

ウィンドウ右上の閉じる(×)ボタンをクライアント領域に擬似的に配置する方法
http://social.msdn.microsoft.com/Forums/ja-JP/vcgeneralja/thread/ea80973b-262a-4136-9518-c48022491652

ここを読んだ限りではボタンを押すのは無理っぽいので
WM_NCHITTESTの戻り値でボタンを判断し
WM_SYSCOMMANDを送って処理するしかないっぽいです。

皆様ありがとうございました。


雪平  2009-11-08 02:15:35  No: 36109

すいません解決ボタン押し忘れました。


雪平  2009-11-08 02:29:58  No: 36110

しかもここうぜぇぇ場所で
馬鹿で雑魚だなああああああwwwwwww


雪平  2009-11-08 02:31:45  No: 36111

俺が本物だよカスwwwwwww


雪平  2009-11-08 02:34:22  No: 36112

おめぇぇはきめぇぇし
すぐ怒る怒るしwwww
もう隠しも無駄だ!!


雪平  2009-11-08 02:37:00  No: 36113

おめぇはガキのくせに
生意気なんだよ
さっさとかかってこいよ!!
臆病者め!!!


雪平  2009-11-08 02:38:49  No: 36114

逃げてるし馬鹿だなあww
おいおいww


雪平  2009-11-08 02:41:49  No: 36115

何が「ありがとう」だとぉ?
認めねーよ雑魚!!!!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加