問題タブ [registerhotkey]

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.

0 投票する
4 に答える
10869 参照

c# - 他のプロセスのキーボード レイアウトを変更する

バックグラウンドで実行され、ユーザーがホットキーを使用してアクティブなウィンドウのキーボード レイアウトを切り替えることができるプログラムを C# で作成しています。(Windows はCTRL+SHIFTALT+のみをサポートしますSHIFT)

ホットキーをキャッチするために RegisterHotKey を使用していますが、問題なく動作しています。

問題は、フォーカスされたウィンドウのキーボード レイアウトを変更する API が見つからないことです。

ActivateKeyboardLayout と LoadKeyboardLayout は、呼び出しスレッドのキーボード レイアウトのみを変更できます。

別のスレッドのキーボード レイアウトを変更する方法を知っている人はいますか (言語バーのように)。

0 投票する
7 に答える
35451 参照

delphi - グローバルホットキーを登録したプロセスを見つけますか? (Windows API)

私が知る限り、Windows はどのアプリケーションがグローバル ホットキーを (RegisterHotkey 経由で) 登録したかを示す API 関数を提供していません。RegisterHotkey が false を返した場合にのみ、ホットキーが登録されていることを確認できますが、ホットキーの「所有者」はわかりません。

直接的な API がない場合、回り道はありますか? Windows は、登録された各ホットキーに関連付けられたハンドルを保持しています。この情報を取得する方法がないことは、少し腹立たしいことです。

動作しない可能性が高いものの例: 登録済みのホットキーを送信 (シミュレート) し、Windows がそれを登録したプロセスに送信するホットキー メッセージをインターセプトします。まず、メッセージをインターセプトしても宛先ウィンドウ ハンドルが明らかになるとは思いません。第二に、たとえそれが可能であったとしても、ホットキーを送信すると、さまざまなプログラムからあらゆる種類の望ましくない可能性のあるアクティビティがトリガーされるため、行うのは悪いことです.

重要なことではありませんが、私はそのような機能に対する要求を頻繁に見てきました。また、UI やドキュメントのどこにも開示せずにホットキーを登録するアプリケーションの犠牲者になったこともあります。

(Delphi で作業しており、WinAPI の見習いにすぎません。親切にしてください。)

0 投票する
1 に答える
11416 参照

c# - RegisterHotKeys とグローバル キーボード フック?

RegisterHotKeysグローバル キーボード フックとは何ですか? また、それらはどのように機能しますか?

アプリケーションのフォーム (最小化されているとき) にフォーカスしてからテキストボックスにフォーカスするためのキーを作成したいので、読んだことからRegisterHotKeys関数を使用する必要があります (これは私のニーズに対するより良い解決策です)。自分のキー (キーは 1 つだけ - ESC) を選択して、フォームにフォーカスし、次にテキスト ボックスにフォーカスするように指示する方法や場所を見つけることができませんでした。

0 投票する
3 に答える
893 参照

c# - コードが共有DLLまたはexeで実行されているかどうかをプログラムで検出する方法は?

グローバル ホット キーの処理を簡素化する C# クラスがあります。このクラスは、Win32-API 関数を使用RegisterHotKey()してホット キーを登録します。

MSDN によると、この関数は、アプリケーションから呼び出す場合は 0x0000 から 0xBFFF の範囲の ID 値を必要とし、共有 DLL から呼び出す場合は 0xC000 から 0xFFFF の範囲の ID 値を必要とします。GlobalAddAtom()DLL で実行する場合は、ID を取得するために使用できます。

この区別をクラスのユーザーから隠すには、クラス自体が、ホット キーを登録するときに使用する ID 範囲を決定する必要があります。これを行うには、コードがアプリケーション内で実行されているか、共有 DLL 内で実行されているかをクラスが検出できる必要があります。

しかし、これを行う方法は?これを行うための最良の C#/.NET の方法は何ですか?

0 投票する
4 に答える
11559 参照

c++ - WIN32 APIを使用したグローバルホットキー?

私はこのようなローカルホットキーを設定することができました

ホットキーをグローバルに設定するにはどうすればよいですか?窓が隠れていてもそこに置いておきたいです。

0 投票する
1 に答える
2657 参照

c++ - Win32 アプリケーションで CTRL + CTRL キーの押下をキャプチャする方法は?

グローバルにCtrl2 回 ( Ctrl+ )を押すユーザーをどのようにキャプチャしますか。Ctrlアプリケーション ウィンドウを非表示にして、ユーザーがCtrlCtrlGoogle クイック検索ボックスと同様のキーを押して呼び出したときに表示できるようにしたいと考えています。ユーザーが別のウィンドウにフォーカスしている可能性があります。私はRegisterHotKeyを見てきましたが、MODIFIERS + character key私が間違っていない限り、それはそうです。

0 投票する
3 に答える
710 参照

delphi - すべてのプロジェクトのホットキーをコンパイルする

同じユニット(ほとんどすべて)を共有するプロジェクトグループに2つのプロジェクトがあります。私は、自分が書いたものをテストするために両方のプロジェクトを使用します。

問題:両方のプロジェクトで使用されているユニットを変更して現在のプロジェクトを実行すると、もう一方のユニットはそのユニットの古いコードを使用します(コンパイルされていないため)。

すべてのプロジェクトをコンパイルするために私が知っている唯一の可能性は、システムメニュー([プロジェクト]-> [すべてのプロジェクトのビルド])を使用することです。

現在、プロジェクトの1つが(delphiデバッガーを使用して)実行されると、他のプロジェクトの実行可能ファイルは実行されますが、コンパイルされません。

Shiftホットキー(1つのプロジェクトの+など)を使用して両方のプロジェクトをコンパイルするにはどうすればよいF9ですか?

0 投票する
1 に答える
331 参照

c - カスタム グローバル ホットキー

アプリケーション用にユーザー定義のグローバル ホット キーを取得しようとしています。これが私のアプリケーションコードです。

user.rc

関数.cpp

main.cpp

このコードは、ユーザーが単一のキーを選択し、CTRL + F8 のように複数のキーを組み合わせて選択した場合にのみ機能します。

0 投票する
2 に答える
1590 参照

c# - RegisterHotKey が true を返してもグローバル ホットキーが機能しない

グローバルホットキーを処理するactiveXが必要です: Shift+B

以下のコードは、IE からこの ActiveX を呼び出すときにこれを行うことになっています。

is trueの結果が表示RegisterHotKeyされます。これは、ホットキーが正常に登録されたことを意味します。

しかし、ThreadPreprocessMessage メソッドにメッセージが来ることはありません。なんで?

0 投票する
1 に答える
7922 参照

c# - RegisterHotKey で複数のホットキーを登録する

ホットキーを登録するためのこの小さなコードを見つけました:

それは完全に機能しますが、私の問題は、2 つの異なるショートカットを使用したいということです。2 番目のパラメーターが id であることはわかっているので、別の id を作成して WndProc 関数に新しい if ステートメントを追加できると思いますが、どうすればよいかわかりません。

要するに、2 つ目のショートカットを作成するにはどうすればよいでしょうか。

ありがとう、