• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ホットキーにマウスボタンを使いたい(Win32 SDK))

Win32 SDKを使用してホットキーにマウスボタンを使う方法

このQ&Aのポイント
  • Windows VISTA、Visual C++ 2008 Express Edition、Win32 SDKを使用してプログラムを作成しています。
  • 現在、[HOME]キーをホットキーにして動作させていますが、マウスのスクロールボタンを使いたい場合はVK_MBUTTONを使用することができません。
  • マウスボタンを使うためには別の方法を見つける必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

 御礼頂き有難う御座います。 >>私がやりたかったのは >>「まったく関係ない他のウィンドウ(IEなど)にフォーカスがあっても、マウスのスクロールボタンを押したら処理を行う」 >>という動作です。  矢張り其方の方でしたか。其の場合ダイレクトインプットを使用すれば、出来ると言えば出来ます。  その代わり、ゲームの入力的な制御が必要になります。面倒と言えば面倒です。

jyugemu55
質問者

お礼

ダイレクトインプットを少し試してみました。 そもそもVC++の知識がほとんど無いため、悪戦苦闘です・・・ もうほとんどあきらめに近い心境です。

jyugemu55
質問者

補足

できた!できました! ダイレクトインプットで希望の動作ができました。 ありがとうございましたm(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

 こんばんは。  確認して見ましたが、確かに無反応でした。  マウスの中央ボタンは「WM_MBUTTONDOWN」でないと、処理出来ないのでは無いでしょうか。

jyugemu55
質問者

お礼

回答ありがとうございます。 やっぱりうまく動かないですよね。 「WM_MBUTTONDOWN」ということは、 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); の中でやるっていうことですよね。 私がやりたかったのは 「まったく関係ない他のウィンドウ(IEなど)にフォーカスがあっても、マウスのスクロールボタンを押したら処理を行う」 という動作です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マウスボタンへのキー割り当て

    今までMicrosoftのマウス、Wireless Intelli Mouse Explorer2.0にMicrosoft IntelliPoint Software Windows版(バージョンは常に最新)のドライバを入れて使っていました。 このドライバのキー割り当てに「ゲームコマンド操作」という割り当て方があります。 これは1つのボタンに2つのキーを記憶させる事ができるもので、ホットキーというのでしょうか…?Ctrl+Aなどといったものとは違うもので、A+Bなどホットキーではないキーを2つ入力することができます。 しかし他のマウスだと、1ボタンに1つのキー(○:A ×:A+B)しか割り当てることができないのです。 そこで質問なのですが、これと同じ機能を持ったもしくは持たせる事ができるマウスはありますでしょうか? Microsoft以外のものでもし知っていればお聞かせ下さい。 分かりずらいかもしれないですが、宜しくお願いします。

  • マウスのスクロールボタンが音量設定に???

    今までは普通にマウスのスクロールボタンでページの上下をスクロールしていたのですが、今朝パソコンを開いたらスクロールができなくなっていました。 その代わり、そのボタンがボリュームコントロールを調節するようになっていて、、、戻し方がわかりません。 どうやったら以前のようにマウスのボタンでスクロールできますか?

  • ボタンのアイコン表示

    開発環境:Vista Visual Studio2012 C言語 CreateWindowで作成したボタンを、アイコン表示にしたいのですけれど上手くいきません。 どこが悪いのでしょうか? HWND CreatePushButton(HWND hwnd, int x, int y, int w, int h, LPCTSTR caption, int id) {     return CreateWindow(         _T("BUTTON"),         caption,         WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_ICON ;         x, y,         w, h,         hwnd,         (HMENU)(INT_PTR)id,         G_hInst,         NULL         ); } LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {    static HWND     hButton;    static HICON     m_hIcon;    switch (uMsg) {      case WM_CREATE: //ウィンドウが作られたとき         hButtonREC = CreatePushButton( hwnd,                               20, 20,                               80, 40,                                _T("テスト"),                               ID_BUTTON  );         m_hIcon = LoadIcon( NULL , IDI_ERROR );         SendDlgItemMessage( hButtonREC,                       ID_BUTTON_RCE,                       BM_SETIMAGE,                       IMAGE_ICON,                       (LPARAM)m_hIcon); }

  • マウスフックについて

    Dllにてマウスフックをして、左ボタンが押しあがったらWM_LBUTTONUPされたら メッセージを送信するというものです。 そのときに、マウスの位置はどこにあってもいいのです。 たとえば、自分のウインドウの中で左ボタンを押して、 デスクトップ上などで左ボタンがあがったらメッセージを送信するというようにしたいのですがうまくいきません。 以下がソースです。 よろしくお願いします。 #include <windows.h> #include "MouseHook.h" HINSTANCE hInst; HHOOK hHook; HWND hWnd; BOOL bHook; int WINAPI DllMain(HINSTANCE hInstance, DWORD fdReason, PVOID pvReserved) { hInst = hInstance; return TRUE; } EXPORT int SetMainHWND(HWND hMainWindow) { hWnd = hMainWindow; return 0; } EXPORT BOOL IsHooking() { if (bHook) return TRUE; else return FALSE; } EXPORT int MouseHookSet() { hHook = SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseHookProc,hInst, NULL); if (hHook == NULL) { return -1; } else { bHook = TRUE; return 0; } } EXPORT int MouseHookEnd() { if (UnhookWindowsHookEx(hHook) != 0) { bHook = FALSE; return 0; } else { return -1; } } EXPORT LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) { MOUSEHOOKSTRUCT *pmh; pmh = (MOUSEHOOKSTRUCT *)lParam; if (wParam == WM_LBUTTONUP) { SendMessage(hWnd,MOUSEHOOK_LBUTTONUP,0,0); } if (wParam == WM_NCLBUTTONUP) { SendMessage(hWnd,MOUSEHOOK_LBUTTONUP,0,0); } return CallNextHookEx(hHook,nCode,wParam,lParam); }

  • visualstudioについて

    visual studio2008 c++ を使用しています. ダイアログ形式でアプリケーションを作成しています. ボタンを押すと画像のようなアプリケーションを起動してenterキーを送るようにしたいのですがうまく出来ません. void CMy6Dlg::OnBnClickedButton1() { // TODO: ここにコントロール通知ハンドラ コードを追加します。 HINSTANCE ret = ShellExecute(m_hWnd, "open", "---Release\\scip_20_gd.exe", NULL, NULL, SW_SHOW); HWND hWnd = ::FindWindowEx(NULL, NULL, NULL, "---Release\scip_20_gd.exe"); ::SendMessage(hWnd,WM_SETFOCUS,0,0); ::SendMessage(hEdit, WM_KEYDOWN, VK_RETURN,0); if (ret <= (HINSTANCE)32) AfxMessageBox("シェル処理ができません.", MB_OK); } よろしくお願いします.

  • マウスホイールボタンのイベントをとるには?

    キーが押された時のイベントは、document.onkeydownを、そして、 マウスボタンが押された時は、document.onmousedownイベントで イベントを拾うことができることは知っております。 ところで、マウスホイールの上下スクロールのイベントを拾うには どのようなJavaScript(IE/NN)でコーディングすればよろしいでしょうか?

  • ホイール付き 5ボタンマウスを探しています。

    ホイール付き 5ボタンマウスを探しています。 条件は以下のみっつです。 1 第4と第5ボタンを、「戻る」と「アプリケーションを閉じる」に割り付けできること。 2 ホイール操作や第4・第5ボタンを操作したとき、現在フォーカスしているウィンドウでは無くマウスポインタの乗っているウィンドウに作用すること。 3 できれば、ホイール(ホイールの代りにトラックボールでもOK)の操作で横スクロールもきればなお良。 Windows7 で使います。 接続は、USBかブルートゥースがうれしいです。 かなり以前のアーベルのトラックボールマウスはOKだったのですが、生産終了で入手できません。 その後いろいろ試してみましたが、条件2 が全てアウトです。 実際に購入して試さないと分らないので困っています。 条件に合うマウスは、無いでしょうか? よろしくお願いします。

  • マウスの左ボタンだけが急に動かなくなりました

    昨日ゲームをしていたら急に固まってしまい、何もキー反応が しなくなってしまい仕方なくいきなり電源オフで再起動しました。 そしたらマウスの左ボタンだけがクリックしても何の反応もなくなってしまいました。マウスは左右にボタンがあって真ん中にスクロールさせる部分がついてるタイプです。 さいわい左ボタンを何度もクリックしまくったり左右のボタンを一緒に 押しまくったりしてたらさっきまた急に反応するようになったのですが 理由がわからないのでまた急に反応しなくなるのではという不安があります。 単なる接触不良でしょうか?パソコンとマウスはまだかって1ヶ月程度しか経ってないのですが。ちなみにOSはヴィスタです。マウス以外で 不具合がある項目はありません。 もしまたなった場合、ちゃんとした?直し方というのがあれば教えてください。

  • ゲームパッドでマウス操作ができるフリーソフト

    こんにちは 最近ゲームパッドを買い、 マウスが使いにくいと感じていたので、 ゲームパッドをマウスの代わりに使いたいのですが、 ゲームパッドのスティックをマウスポインタの移動にしたり かつ、ボタンを左右のクリックやスクロールや キーボードのキーに割り振れ、 その設定をいくつか保存できるようなフリーソフトを探しています。 (例ゲームパッドの1ボタン→Zキーなど) 設定が簡単で使いやすいフリーソフトを教えてください

  • C++で質問です。

    今、キーボード操作でマウスの機能を実現しようと考えています。 現段階ではキーボードの矢印キーでマウスポインタが動くところまではできました。 これに、ENTERを押したら左クリックするように実装したいのですがどうすればよいでしょうか? いろいろ調べたのですが見つかりませんでした・・・ #include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { HDC hdc; POINT po; switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_KEYDOWN: GetCursorPos(&po); if(wp == VK_UP) po.y-=7; if(wp == VK_DOWN) po.y+=7; if(wp == VK_LEFT) po.x-=7; if(wp == VK_RIGHT) po.x+=7; SetCursorPos(po.x , po.y); return 0; } return DefWindowProc(hwnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("KITTY"); if (!RegisterClass(&winc)) return -1; hwnd = CreateWindow( TEXT("KITTY") , TEXT("Kitty on your lap") , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL , NULL , hInstance , NULL ); if (hwnd == NULL) return -1; while(GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg); return msg.wParam; } これにクリック実装のプログラムを付け加えていただけると嬉しいです。