問題タブ [keyboard-hook]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# - フルスクリーンの winform アプリが常にタスクバーをカバーしないのはなぜですか?
私は Windows Vista と C#.net 3.5 を使用していますが、友人に XP でプログラムを実行させたところ、同じ問題が発生しました。
そのため、SystemTray のアイコンを使用してバックグラウンドで実行している C# プログラムがあります。低レベルのキーボード フックがあるので、2 つのキー (この場合は Ctr + ウィンドウ) を押すと、アプリケーションのメイン フォームがプルされます。フォームは、コンボ キーを押すイベント ハンドラーで全画面表示に設定されます。
したがって、基本的に機能します。CTR + Windows を押すと、フォーカスを与えたプログラムに関係なく、フォームが表示されます。ただし、タスクバーがフォームの上に表示されることがありますが、これは望ましくありません。そのキーコンボを押したときに常に全画面表示にしたい.
私は、アプリケーションが元々フォーカスを持っているものと関係があると考えています。しかし、メイン フォームをクリックしても、タスク バーがそこにとどまることがあります。だから、フォーカスが本当に問題なのだろうか。タスクバーが頑固で、私のプログラムの後ろに座りたくない場合があるようです。
どうすればこれを修正できるか、誰にもアイデアがありますか?
編集: 詳細 - Web ブラウザーをフルスクリーン モードにしたとき、またはパワーポイントをプレゼンテーション モードにしたときと同じ効果を達成しようとしています。
ウィンドウ フォームでは、ボーダー スタイルを none にしてウィンドウを最大化することでこれを行います。しかし、何らかの理由でウィンドウがタスクバーを覆わないことがあります。半分の時間です。
メイン ウィンドウが一番上にある場合、それをクリックすると他のウィンドウが後ろに隠れてしまいます。これは、タスク バーが非表示になっている場合には望ましくありません。
c# - C# Mono - 低レベルのキーボード フック
CodeProject.com で見つけた低レベルのキーボード フック用のコードを使用しています。唯一の問題は、mono では動作しない外部 DLL 呼び出しを使用していることです。そのコードと同じことを達成する方法を誰かが知っているかどうか疑問に思っていましたが、.net を使用する Windows と mono を使用する Linux の両方で実行できますか?
編集:私がやろうとしていることを明確にする:アプリケーションのようなダッシュボードを作成しています。プログラムはシステム トレイにあり、ユーザーがホットキーを押すと、すべてのガジェットがポップアップ表示されます。したがって、プログラムにはフォーカスがないため、通常はキーストロークをキャッチしません。そのため、低レベルのキーボード フックを使用し、ユーザーがホットキーとして定義する 2 つのキーをフックします。しかし、私はそのために Windows DLL 呼び出しを使用していますが、これはモノを使用する Linux では機能しません。同じことを行う方法があるかどうか疑問に思っていますが、モノを使用してLinuxで実行できますか?
c# - C# のキーボード フック イベントからの ShowDialog()
ShowDialog()
キーボード フック イベントがトリガーされたときに呼び出したいのですが、いくつか問題があります。
- ShowDialog() はブロックするため、OS をブロックするため、フック トリガー イベントから呼び出すことはできません。
- 新しいスレッドを開始してそこから呼び出すことはできます
ShowDialog()
が、厄介な例外が発生します。ShowDialog()
他のスレッドで呼び出すことはできないと思います。 - タイマーを開始できます: 次の 50 ミリ秒の呼び出し
ShowDialog()
で (これは厄介なハックであり、私はむしろこれを行いません)。しかし、新しいスレッドでタイマーが起動すると、前の箇条書きで説明したのと同じ問題に遭遇します。
方法はありますか?
c# - C# で別のスレッドを使用してキーボード フックを作成するにはどうすればよいですか?
SetWindowsHookEx を使用して c# で低レベルのキーボード フックを作成しています。質問は、キーボード イベント関数をメイン スレッド以外のスレッドで実行するにはどうすればよいですか? また、現在メイン スレッド以外のスレッドを持っていないので、キーボード フック イベントが発生するまで停止するスレッドを作成するにはどうすればよいですか?
c++ - キーボードフック...小文字または大文字を取得しない
以下の関数は、「0」、「z」、および「1」をログに記録しています...しかし、「Z」(shift-z)をキャプチャしていません...助けていただければ幸いです...
keyboard-shortcuts - Adobe AIR キーボードフック
アプリが最小化されている場合でも、(構成可能な) グローバル キーボード イベントをリッスンできる機能を AIR アプリに追加しようとしています。例: CTRL-ALT-SHIFT-F12 でスクリーンショットを取得します。
キーボード フックを登録する方法が見つかりません。キーボード イベントをリッスンしても、アプリにフォーカスがある場合にのみキャプチャされます。提案?
c - 現在フォーカスされているウィンドウへのキー押下をシミュレートするにはどうすればよいですか?
キーボードがアプリケーションに送信するキーを変更しようとしています。すでにグローバルフックを作成していて、必要なキーを防ぐことができますが、新しいキーを所定の場所に送信したいと思います。これが私のフック手順です:
GetFocus()およびGetForegroudWindow()でSendMessageおよびPostMessageを使用しようとしましたが、WM_KEYUPまたはWM_KEYDOWNのLPARAMを作成する方法がわかりません。また、keybd_event()も試しました。これは、5つまたは6つの異なるスキャンコードを含むキーをシミュレートします(このフックプロシージャはシミュレートされたキーの押下をキャッチするためです)が、フォアグラウンドウィンドウには何も影響しません。
基本的に、ms3200のズームバーをスクロールコントロールに変えようとしているので、間違ったキー(UPとDOWN)を送信している可能性があります。
language-agnostic - ラップトップの Fn キーをインターセプトする
Thinkpads/MSI ラップトップで作業していると、CtrlとFnキーが入れ替わっFnて (一番左のキーになる)、気が狂いそうになりFnますCtrl。
Fnキーを傍受できるかどうか疑問に思っていました。 Ctrl / Fn キーを交換するフックを書きたいのですFnが、OSでまったく処理されていないようです。
何か案は?
windows - SetWindowsHookEx と WH_KEYBOARD で外部プロセスをフックする方法
たとえば、成功せずにメモ帳をフックしようとしています。グローバルフックを作成するとうまくいくようです。
XP SP2 でのテスト。
編集: 修正されたコードが機能するようになりました。
MyDLL コード
私のプログラム