マウスを使わずにマウスクリックしたい

解決


ほーく  2003-04-15 08:37:35  No: 3320  IP: [192.*.*.*]

またしても質問です、よろしくお願いいたします。

あるアプリケーションを作っていて、そのアプリケーション実行中に
特定のキーを押すと、自分のフォームの例えば(100,100)を
クリックしたことにするメソッドを作ろうとして悩んでいます。

Mouse_Eventを使えばかろうじてできたのですが、マウスカーソルには
動いて欲しくないのです。

ということで、SendMessageをつかったのですが、これがどうも・・・。
  SendMessage(Self.Handle, WM_LBUTTONDOWN, 0, 100 * $FFFF + 100);
で思ったとおり動作しません。三つ目と四つ目の引数が怪しい気がするのですが。
それと、これをした後一度だけマウスの操作が聞かなくなります。
ReleaseCaptureというのを使わないといけないのでしょうか?

自分ではここまで調べるのが限界でした。よろしくお願いいたします。

編集    削除
にしの  2003-04-15 19:33:14  No: 3321  IP: [192.*.*.*]

クリック=「押して、離す」ですよね。
WM_LBUTTONDOWNだけでは「押す」だけです。
離さないといけません。
WM_LBUTTONUPを使えばよろしいかと思います。

編集    削除
ほーく  2003-04-16 08:57:33  No: 3322  IP: [192.*.*.*]

・・・そういえばそうですね。
全く恥ずかしい質問でした。
にしの様、いつもお付き合いいただきすいません。
ご回答ありがとうございました。

編集    削除
超初心者  2004-08-30 09:53:56  No: 3323  IP: [192.*.*.*]

はじめまして、つい先日Delphiはじめたばかりの超初心者です

>SendMessage(Self.Handle, WM_LBUTTONDOWN, 0, 100 * $FFFF + 100);
「0, 100 * $FFFF + 100」の意味を教えて頂けませんか?

X = 右の数字 - 左の数字、Y = 左の数字
みたいになってるようですけれど・・・

編集    削除
jok  2004-08-30 11:47:41  No: 3324  IP: [192.*.*.*]

Delphi 付属の Win32.hlp によると

WM_LBUTTONDOWN  
fwKeys = wParam;        // key flags 
xPos = LOWORD(lParam);  // horizontal position of cursor 
yPos = HIWORD(lParam);  // vertical position of cursor 

となっていますので、

「0, 100 * $FFFF + 100」の最初のゼロは、どのバーチャルキーも押していない
ことを示し、100 * $FFFF + 100 は yPos が 100、xPos も 100 であること
を設定しています。後者は普通 MakeLParam(100,100) を使います。

function MakeLParam(l, h: Word): LPARAM;

編集    削除
超初心者+1 (名前他の人とかぶってい  2004-08-30 12:05:52  No: 3325  IP: [192.*.*.*]

なるほど、納得しました
jokさんありがとうございます!

編集    削除