質問
CodeProject.comで見つけたコードを使用して、レベルのキーボードフック。唯一の問題は、モノラルでは機能しない外部DLL呼び出しを使用することです。誰かがそのコードと同じことを達成する方法を知っていたが、.netを使用するWindowsとmonoを使用するLinuxの両方で実行されるかどうか疑問に思っていましたか?
編集:私がやろうとしていることを明確にする: ダッシュボードのようなアプリケーションを作成しています。プログラムはシステムトレイにあり、ユーザーがホットキーを押すと、すべてのガジェットがポップアップ表示されます。したがって、プログラムにはフォーカスがないため、通常はキーストロークをキャッチしません。したがって、低レベルのキーボードフックを使用し、ユーザーがホットキーとして定義する2つのキーをフックします。しかし、私はそのためにWindows DLL呼び出しを使用しています。これは、モノを使用するLinuxでは機能しません。だから私は同じことをする方法があるかどうか疑問に思っていますが、モノを使用してLinuxで実行されますか?
解決
.Netのみを使用してこの動作を取得することはできません。実行するプラットフォーム(Windows、Linux、Mac OS)ごとにバイナリドライバーを使用する必要があります。 P / Invokeのみを使用して(実行しているOSを検出し、適切なシステムライブラリを呼び出す)、「追加」を配布する必要がないようにすることが可能です。 dll / so / dylib。
他のヒント
何をキャプチャしようとしているのかがわからなければ、何がうまくいくかを確認するのは困難です。 Application.AddMessageFilterの使用をご覧ください。
例を次に示します。 http://dn.codegear.com/article/30129