- ベストアンサー
キーボード・フックのアプリを作りたい
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> メモ帳でも、エクセルでも、ワードでもその他のソフトでも > どのソフト上でもメッセージが出るものにしたいです。 なるほど,そういう場合はフック(しかもシステムフック)が必要です。 基本的にはフックプロシージャを用意して登録するだけなのですが, システムフックの場合には DLL を用意したり, DLL の複数のインスタンス間でデータを共有したり, と細かいテクニックが必要です。 そのあたりも,前の回答で紹介したページに詳しく書かれています。 > 具体的にはどのようなことが発生する可能性があるのでしょうか 例えば,Ctrl + V をホットキーに登録すると, メモ帳で Ctrl + V を使って貼付けができなくなります。 この辺はちょっと自身がなかったので,ぼかした表現にしておきましたが, 試してみたらやはりそうでした。 # おせっかいついでに,細かいことを言うと, # Ctrl + C や Ctrl + V をどういう意味で使うかは,アプリケーション次第ですよね。
その他の回答 (2)
> 内容は、キーボードでctrl + c, ctrl + v時に どこで,(どこにフォーカスがあるときに), によって実現方法が変わります。 自分のウィンドウ内ならフックしなくても, メッセージループで WM_KEYDOWN とか見れますし。 本当にフックが必要な場合は, ↓が DLL の作り方から説明されていて,分かりやすかったです。 http://www.kab-studio.biz/Programing/Codian/#DLL_Hook_SClass # RegisterHotKey を使うと, # 他所様を含めて本来の Ctrl + C, Ctrl + V の動作を妨害するかも。
補足
ご回答ありがとうございます。 メモ帳でも、エクセルでも、ワードでもその他のソフトでも どのソフト上でもメッセージが出るものにしたいです。(ユーティリティソフトのような感じ) フォーカスはコピー対象のものをマウスを使用して、選択しますので、 その対象を含むアプリのどこか(?)になるかと思います。 ># RegisterHotKey を使うと, ># 他所様を含めて本来の Ctrl + C, Ctrl + V の動作を妨害するかも。 具体的にはどのようなことが発生する可能性があるのでしょうか
- yama1718
- ベストアンサー率41% (670/1618)
私の紹介する方法ではホットキーのAPI関数を使用します。 関数はホットキー登録と登録解除の2つです。 BOOL RegisterHotKey( HWND hWnd, // ウィンドウのハンドル int id, // ホットキーの識別子 UINT fsModifiers, // キー修飾子フラグ UINT vk // 仮想キーコード ); BOOL UnregisterHotKey( HWND hWnd, // ウィンドウのハンドル int id // ホットキーの識別子 ); RegisterHotKeyでホットキーを登録すると、そのキーが押された時にウィンドウにWM_HOTKEYメッセージが流れてきます。 ただし、この方法はWin95など昔からある方法なので、最近のWindowsやVC++ではもっと使いやすい方法があるかもしれませんね。
お礼
ご回答ありがとうございます。 ホットキーとは思いつきませんでした。ググりつつ、頑張ってみます
関連するQ&A
- キーボードフックについて
現在グローバルフックでキーボードからマウスを操作するプログラムを作成中です。 dll内にフックプロシージャを作成し、十字キーが押されたら呼び出し元のウインドウにWM_USERを送るというつくりになっています。 コードを組んだところ、一応動いたのですが、一度だけキーを押したはずなのにWM_USERが2,3回ぐらい送られてきます。 これを回避する方法はあるのでしょうか? どなたかご教授お願いします。 <環境> Windows Vista VC++ 2005 Express Edition
- 締切済み
- C・C++・C#
- キーボードについて教えて下さい
カテゴリーが違っていましたらすみません。 職場でキーボードで Ctrlキー + Cでコピー Ctrlキー + V で貼り付けと教えて頂きましたが、 他にも色々あるように思います。 このような、キーボードの使い方を説明している、サイトがあれば、 教えていただけませんでしょうか。 宜しくお願いします。
- 締切済み
- Windows XP
- .NETのキーボード
こんにちわ。 いまVB.NET2003で開発をしている者です。 [オプション]-[環境]-[キーボード]の設定を "Visual Basic6"としていると, ステップ実行が"F8", 関数定義が"F2", 前回のカーソル位置移動が"Ctrl + Shift + F2" で実現できました。 [オプション]-[環境]-[キーボード]の設定を "[規定の設定]"としたときに, ステップ実行が"F11"で実現できましたが, 関数定義と,前回のカーソル位置移動の実現方法がわかりません。 この機能も含めて.NETの規定のファンクションキーの 操作を調べるにはどこを見れば良いでしょうか? 教えてください。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- IPhoneのキーボードアプリの設定について
IPhone初心者です(アンドロイドからの乗り換えです)。 文字入力の不便さ(特にカーソルの左右上下移動)のためキーボードアプリを使おうと思っています。 その際アプリダウンロード後当該アプリと、メーラーやメモなど他のアプリとの連携はできるのでしょうか? できるとしたら、その設定方法を教えていただけますでしょうか。
- 締切済み
- iPhone・iPad・iOS
- 使用頻度が高いキーボードショートカット
キーボードショートカットはソフトによって色々ありますが 大体どのソフトでも共通していて皆さんが良く使うショートカットを教えてください 自分がよく使うのは 検索 CTRL+F コピー CTRL+C 切り取り CTRL+X 貼り付け CTRL+V 直接削除 SHIFT+Del などです
- ベストアンサー
- Windows 7
- 追加キーボード,カスタマイズ
自分でキーの役割を設定できるキーボードがあったらと思いました. できれば,今ある通常使用のキーボードはそのままキープして,追加で使えるものがあったらと思います.説明がうまくなくてすみません.イメージとしては,よくテンキーを打つ用の手のひらサイズのキーボードがありますが,これは追加用ですよね. そのように,追加できて,そのキー達はカスタマイズできる(例えば,あるキーは,Ctrl + C,に対応していて,またあるキーはCtrl +Vに対応している,という具合です). いかがでしょうか.検索して調べているのですが,どのようなキーワードを使えばいいのか分からず,お伺いしました.どうか情報を頂ければと思います.どうぞ宜しくお願いします.
- ベストアンサー
- マウス・キーボード
- クリップボードからの貼り付けのフック
VB.net、C#、.net framework2005で、 クリップボード拡張ソフトを開発しております。 クリップボードへの入出力が起こる直前にフックをかけたいです。 コピー・切り取り操作(ClipBoardへの入力)については クリップボードチェーンに自分を加え、WM_DRAWCLIPBOARDをハンドルすることで解決できました。 貼り付け(ClipBoardからの出力)についてはどのようにすれば実現できますでしょうか? 貼り付けイベントが起こった時に、チェーン内のプログラムにそれを通知するようなWindowsメッセージがあるかと思い、それらしいものを探してみたのですが、利用できそうなものがありませんでした… 具体的には、 ・入力時に、データを加工して仮想クリップボードに格納 ・出力時に、仮想クリップボード内のデータを再度加工して出力(貼り付け) という処理を実現したいです。 宜しくお願い致します。
- 締切済み
- Visual Basic
- VBでキーボードを使わずに"Ctrl+A"をしたい!
初歩的な質問で申し訳ないのですが、VBでキーボードを使わずに、何かコマンドボタンを押した時に"Ctrl+A"などを実行したいです。VBでコーディングしていけば同じような機能は実現できるのですが、もっと簡単な方法があるような気がしてなりません・・。このボタンを押したら"Ctrl+A"を実行する、みたいなコーディングはどのようにすれば実現できるのでしょうか?
- 締切済み
- Visual Basic
- EXCELで値のコピーをキーボードのみで行いたい
あるセルに数式が入っていて、そこに計算結果があったとします。そのセルをコピーして、値を別のセルに貼付けたいのですが、通常は形式を選択して「値のみ」にチェックを入れて貼り付けますが、通常のコピペのように「CTRL+C」→「CTRL+V」のように、キーボード操作のみで値のみの貼付けを行う方法はありませんか?もしくは、ツールメニューはないですか?書式コピーのツールメニューはあるのですが、値コピーは見つけられませんでした。よろしくお願いします。
- 締切済み
- オフィス系ソフト
- キーボードの設定について
(1)キーボードの1~9が、シフトとの併用ができません。( )を入力しようとしても数字が表示されてしまう。 (2)バックスペース、delete、矢印キーを長押ししてもカーソルが進まず、連打しないと続けて消せない。 (3)コピペの際、右クリックからはできるが、ctrl+c/pを使用するとc/pが表示されてしまう。 どなたか対応策をご存知ないでしょうか。
- 締切済み
- Windows XP
お礼
ご回答ありがとうございます。 どうやらシステムフックなるものを使用して作りこむしか 方法はないようですね。。 道は困難なものになろうかと思いますが、やってみたいとおもいます。