none
Form外でもマウスボタンを取得する方法 RRS feed

  • 質問

  • windowsXP  VB6(SP-5)
    皆様お世話になります。

    Form外でもマウスボタンを取得する方法をさがしております。
    表示されたForm外でマウスボタンが押された事を取得し次のアクションを実行したいのです。
    できれば右ボタン・左ボタンを認識できればさらに良いのですが。

    ご教授頂けると助かります。
    2009年11月9日 23:56

回答

  • サブクラス化すれば取得できますが、Windowsメッセージを直接扱うことになるので、Win32APIとC言語で組んだWinアプリのメインループが理解できていないと危ないかも(知識的に)。
    そういった場合や↓とか使うのが良いですね。

    サブクラス化参考URL


    http://blogs.wankuma.com/hatsune/
    • 回答としてマーク RZ250 2009年11月10日 4:51
    2009年11月10日 0:14
  • そのFormがフォアグラウンドウインドウであればSetCaptureが使用できます。そうでなければSetWindowsHookExを使うことになるでしょう。後者は面倒です。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク RZ250 2009年11月10日 4:52
    2009年11月10日 1:04
    モデレータ
  • どういうことがしたいのかわからないのでハズレてるかもしれませんが、GetAsyncKeyState API で 「今ボタンが押されているか」 を調べることなんかもできます。イベントが来るわけではないので、タイマーで定期的にポーリングするとか、そういったことが必要になりますが。

    (GetAsyncKeyState API に相当する機能って .NET Framework にありましたっけ?)
    青柳 臣一 (Shinichi Aoyagi)
    • 回答としてマーク RZ250 2009年11月10日 5:04
    2009年11月10日 2:54

すべての返信

  • サブクラス化すれば取得できますが、Windowsメッセージを直接扱うことになるので、Win32APIとC言語で組んだWinアプリのメインループが理解できていないと危ないかも(知識的に)。
    そういった場合や↓とか使うのが良いですね。

    サブクラス化参考URL


    http://blogs.wankuma.com/hatsune/
    • 回答としてマーク RZ250 2009年11月10日 4:51
    2009年11月10日 0:14
  • そのFormがフォアグラウンドウインドウであればSetCaptureが使用できます。そうでなければSetWindowsHookExを使うことになるでしょう。後者は面倒です。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク RZ250 2009年11月10日 4:52
    2009年11月10日 1:04
    モデレータ
  • どういうことがしたいのかわからないのでハズレてるかもしれませんが、GetAsyncKeyState API で 「今ボタンが押されているか」 を調べることなんかもできます。イベントが来るわけではないので、タイマーで定期的にポーリングするとか、そういったことが必要になりますが。

    (GetAsyncKeyState API に相当する機能って .NET Framework にありましたっけ?)
    青柳 臣一 (Shinichi Aoyagi)
    • 回答としてマーク RZ250 2009年11月10日 5:04
    2009年11月10日 2:54
  • 初音玲様 有難うございます。
    私にはハードルが高すぎです。 出直してきます。
    2009年11月10日 5:09
  • trapemiya様 有難うございます。

    SetCaptureを参考にします。 大変有難うございました。
    2009年11月10日 5:30
  • Shinichi Aoyagi ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
    有難うございます。
     
    かなり抽象的な説明になりすいませんでした。 残念な今回の動きには合わないのですが、
    GetAsyncKeyState API については別途参照し今後活用させていただきます。
    有難うございました。
    回答済み
    2009年11月10日 5:35