お世話になります。
自プログラムが非アクティプの時にキー押下の情報を取得したいのです。
作りたいプログラムはいわゆる『キーボードマクロ』です。
自プログラムを実行しメモ帳をアクティブにした時に
F12キーの押下で特定の文字をメモ帳に貼り付ける。
といったものを作りたいのですが、
非アクティブ時にF12キー押下の情報の取得が出来ずに困っています。
分かる方教えて下さい。
キー押下情報は通常、アクティブウィンドウに送られます。
それを横取りするには通常グローバルキーフックします。
が、今回程度の処理内容なら、ショートカットキーで
できそうな気がします。
Sayさん、レスありがとうございます。
『グローバルキーフック』を検索してみたら、
別のホームページで
『VBだけではグローバルキーフックのプログラムは作れない』
となっていました。残念だけどあきらめるしかないようです。
ショートカットキーもアクティブでないと反応しないようです。
いろいろありがとうございました。
他人のOCXは不安かもしれませんが、以下のものが利用できるはずです。
(私も利用させていただくことがあります。)
http://member.nifty.ne.jp/nyankoro/sw/nyaocx.htm
http://member.nifty.ne.jp/nyankoro/sw/faq_nyan.htm#CTRLSHFT
F12キーを検知するには
Private Sub Nyankoro1_Keyboard(ByVal VirtualKey As Integer,_
ByVal ScanCode As Integer, _
ByVal RepeatCount As Integer, _
ByVal Flags As Integer, _
Canceled As Integer)
Select Case VirtualKey
Case vbKeyF12
Debug.Print "F12"
End Select
End Sub
でいけるでしょう。
有償でソースファイルも提供しますとのことです。
ご参考まで
確かにVBではDLLが作れないので、グローバルフックはできません…が、
要はそのDLLをVB以外の言語で作ればいいだけで、インターフェース部分にVBを使うことはできます。
この系統のDLLを作るには、C言語が一番手っ取り早いようで、おそらくDLL部分だけをC言語で作ることになると思いますが…。
C言語のコンパイラだけなら、無償で手に入れることができますし、しっかりコーディングしてあれば、あまりC言語の深い知識が必要になるわけでもなさそうです。できる自信があれば、やってみるのも手かと。
そういえばペンギンまじっく( http://hahaha.puni.to/ )にて、キーボードフックDLLが公開されていましたが…。あれはどうなのかなあ?ペンまウェア以外のソフトでつかってもいいんでしょうか?
でもところで、ホットキーとしてF12キーを登録すれば、とりあえずは何とかなるのでは?
目的の動作通りになるかどうかはわかりませんが、
とりあえずホットキーならば、VBだけでも不可能ではありません。
IMAさん、たかみちえさんレスありがとうございます。
まずホットキーで挑戦して、
駄目ならOCXやDLLでの順で試してみたいと思います。
いろいろ教えていただきありがとうございます。