ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:notenoto クリック連打ソフトの作り方
困り度:
  • 暇なときにでも
windows APIを使い、実際にマウスを使わずにクリックしたことにできるソフトを作りたいのですが方法がわかりません。

実際にマウスでクリックした場合、WM_LBUTTONDOWN等のメッセージが発生し
そのメッセージに対する処理を書けばいいことはわかるのですが、
この場合にはこの方法ではできないように思います。

WM_LBUTTONDOWN等のメッセージを任意に発生させる方法があるのか、
それともまったく別な方法なのか見当もつきません。

どのようにすれば実際にマウスを使わずにクリックしたことにできるのか教えてください。

よろしくお願いします。
質問投稿日時:08/03/31 13:42
質問番号:3909978
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

 

回答者:noname#58606 No1の方の書いてある通り、マウスを連打するだけなら、

procedure TForm1.Timer1Timer(Sender: TObject);
begin
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
end;

でいけますねー。
芸も工夫もないですが、Delphiで。(あまりにもNo2の方と同じなので、ポイントかはNo2の方に。^^;

キーボードを自ソフト以外でフックするには、外部ライブラリー化しないといけないけど、マウスなら、OKですよー。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/31 21:48
回答番号:No.3
この回答へのお礼こんなに簡単にできるとは思いませんでした。
私の調べ方が悪かったようです。
ありがとうございました

回答

良回答20pt

回答者:jyugemu55 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

これで、現在マウスカーソルがある位置でクリックしたことになります。
あとは、これを適切な場所に書くだけですが、何のイベントが起きたときにクリックしたことにするのでしょうね?
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:08/03/31 19:45
回答番号:No.2
この回答へのお礼ありがとうございます
実現することができました。

回答

良回答10pt

回答者:shred システムキューに突っ込むか
それともアプリケーションのメッセージキューに直接突っ込むか、はたまたウィンドウプロシージャを直接呼び出すかなどの方法があります。
いずれも対応するapiが存在しますのでお調べください。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/31 14:00
回答番号:No.1
この回答へのお礼ありがとうございます
深いきりがかかっていた部分が少し晴れました。
教えていただいたことを参考にいろいろ調べてみます
 
最新から表示回答順に表示良回答のみ表示