問題タブ [hwnd]
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.
casting - long から HWND (VS8 C++)
HWND (C++ Visual Studio 8) に long をキャストするにはどうすればよいですか?
しかし、次の警告が表示されました。
警告 C4312: '型キャスト': 'LONG' からより大きなサイズの 'HWND' への変換
ありがとう。
c# - hwnd / NativeWindow を使用して WinForms フォームの所有者を設定する動作を取得できますか?
私のアプリケーションは vb6 実行可能ファイルですが、システム内の一部の新しいフォームは C# で記述されています。メイン アプリケーション ウィンドウへのハンドルを使用して C# フォームの Owner プロパティを設定できるようにしたいと考えています。これにより、アプリと他のアプリの間でタブを行ったり来たりしてもダイアログが上部に表示されたままになります。
メイン アプリケーション ウィンドウの hwnd を取得できます。そこから何ができるかわかりませんか?
更新 2008 年 10 月 20 日 17:06:
スコット、
返信ありがとうございます。Show/ShowDialog メソッド パラメータが Form 型ではないことを見逃していました。Owner プロパティだけを見ていました。
上記から使用しているコードを少し変更しました。フォームを一般的にロードして ShowDialog を呼び出すコンポーネントがあります。私のコードは次のようになります。
GetWindowFromHwnd
あなたのコードのメソッドラップバージョンです:
残念ながら、これは私が望んでいたことをしていません。フォームはモーダルに表示されますが、正しい位置に表示されず、タブを離して親ウィンドウに戻ってもまだ上に表示されません。私たちのモーダルはタスクバーにタスクを表示しないため、ウィンドウは「消える」ように見えます (ただし、alt-tab ウィンドウ リストにはまだ存在します)。それは、私が正しい hwnd を持っていない可能性があることを示しています。他に提案がある場合は、返信してください。再度、感謝します。
UPDATE 10 11月. 082008-11-10 16:25:00
フォローアップの 1 つのコメント - Scott の 2 番目の投稿のように、try/finally のメソッド呼び出しに分解すると、finally ブロックの呼び出しは次のようになります。
c++ - コントロールを識別するために QTP を取得するのに役立ちます
QTP (QuickTest Professional) を使用して、レガシー C++ アプリケーションを自動テストしようとしています。
ただし、アプリのメイン ウィンドウは、いくつかの同一のパネルで構成されています。各パネルには固有のタイトルがあります。
Spy++ (DevStudio に付属) でウィンドウを表示すると、次のように表示されます。
ただし、QTP の Object Spy では、階層は次のように表示されます。
中間パネルがあることさえ示していません。
各コントロールを識別するためにウィンドウの「パス」を取得する方法を知っている人はいますか? つまり、コントロールは次のように識別します。
c# - ウィンドウ ハンドル (hWnd) しかない場合に GetModuleFileName() を実行するにはどうすればよいですか?
C# 2.0 アプリケーションの外部にあるウィンドウの実行可能ファイルの名前を取得しようとしています。私のアプリは現在、「user32.dll」から GetForegroundWindow() 呼び出しを使用してウィンドウ ハンドル (hWnd) を取得しています。
掘り下げた結果、(PSAPI の) GetModuleFileNameEx() 関数を使用して名前を取得したいと思いますが、GetModuleFileNameEx() にはウィンドウではなくプロセスへのハンドルが必要です。
ウィンドウ ハンドルからプロセス ハンドルを取得することは可能ですか? (最初にウィンドウのスレッド ハンドルを取得する必要がありますか?)
私がやろうとしていることをより明確にするために、最初の文を編集しました。
アップデート!これが私のために働いていることがわかったC#コードです。唯一の注意点は、ドライブ文字が「?」であるファイル/パスを返す場合があることです。実際のドライブ文字 (「C」など) の代わりに。-- 理由はまだわかりません。
c# - アプリケーション フォーカスの変更の検出 / HWND の変更のために何かをフックしますか?
アプリケーションがフォーカスを失ったことをどのように検出できますか? 使用するシステムフックはありますか? 新しいアプリケーションが注目されているとき、または失われたときにいつでも拾いたいと思っています。ユーザーの「現在の」HWND を持っていても良いでしょう。
私はC#を使用していますが、すべて勝利APIのものだと確信しています...どんな情報でも素晴らしいでしょう。
windows - EnumWindowsによってハンドルが返される順序は意味がありますか?
いくつかの予備テストから、EnumWindows
常に逆のインスタンス化順序でウィンドウが返されるようです。つまり、最近インスタンス化されたウィンドウが最初に返されます。それは有効な観察ですか?もしそうなら、それはWindowsのすべてのバージョンに当てはまりますか?そして、これは信頼できる仮定ですか、つまり、その動作はどこかに文書化されていますか?
コンテキスト:サードパーティのアプリケーションをトリガーしていくつかの非モーダルウィンドウを開き、開いたらそれらのウィンドウにウィンドウメッセージを送信する必要がある状況に対処していますが、確実な方法はありませんそれらをウィンドウクラスでもキャプションでもないものとして識別することは異なり、私もそれらの予想される座標を知りません。ただし、上記の動作に依存できる場合は、クラスとキャプションが期待どおりEnumWindows
に返される最初のハンドルを使用するだけで済みます。EnumWindows
それでもいくつかの仮想的な抜け穴が残っていますが、それで十分だと思います。それでも、別の提案を歓迎します。
winapi - COM-Addin (Outlook <=2003) 内から WordMail がオンになっている特定の Outlook インスペクタ ウィンドウのウィンドウ ハンドルを確実に特定するにはどうすればよいですか?
[このコードは、Inspector.Activate
イベント ハンドラー内から呼び出されます (最初の呼び出し)。つまり、インスペクター ウィンドウが実際に表示される直前です。]
Inspector
「ネイティブ」なメール インスペクターの場合は、インターフェイスをQI して、そのメソッドIOleWindow
を呼び出すだけです。GetWindow
ただし、これは、実際には特別なツールバーを備えた Word のインスタンスであり、実装していない Word インスペクタでは機能しませんIOleWindow
。
(一時的に)Inspector.Caption
一意の値に設定してから、そのキャプションを持つウィンドウを探すことも機能しませんInspector
。WordMail オプションを使用する場合、 のほとんどのプロパティにアクセスしても、実際のインスペクター ウィンドウに (即時に) 影響を与えないためです。Activate
複数のインスペクターGetForegroundWindow
が既に開いている場合、または実際の Word ウィンドウが存在する場合、最新のインスタンスではなく「最も古い」インスタンスが返されることがよくあります。
私は何年にもわたって他の多くのアプローチを試みてきましたが、最終的には何らかの形で欠陥があることが判明しました. これに対する適度に単純な解決策はまったくありますか?それとも、システムフックを介して既知のウィンドウハンドルの独自のリストを保持し、それらを既知のインスペクターと照合しようとするなど、はるかに精巧なアプローチを採用する必要がありますか? ( CBT フックの使用に関するヒントについては、P Daddyに感謝します)
java - Java Swing では、ウィンドウへの Win32 ウィンドウ ハンドル (hwnd) 参照をどのように取得しますか?
Java 1.4 では ((SunToolkit) Toolkit.getDefaultToolkit()).getNativeWindowHandleFromComponent() を使用できましたが、これは削除されました。
これを行うには JNI を使用する必要があるようです。これを行うための JNI コードとサンプル Java コードはありますか?
これは、Jawin ライブラリを介して実行できる Win32 GetWindowLong および SetWindowLong API 呼び出しを呼び出すために必要です。
JDialog または JFrame への参照を渡してウィンドウ ハンドルを取得できるように、非常に正確なものが必要です。
JNI を使用した Swing 透過性が関連している可能性があります。
windows - ウィンドウにフォーカスがあるかどうかを確認するにはどうすればよいですか? (Win32 API)
Win32 API を使用して (C では、それは重要ではありません)、特定のウィンドウ (HWND によって識別される) にフォーカスがあるかどうかをどのように確認できますか?
イベントを監視しているアプリケーションをフックしています。そのイベントが発生したときに、アプリケーションに既にフォーカスがあるかどうかを確認したいと考えています。そうでない場合は、ウィンドウにフォーカスが移るまでウィンドウをフラッシュしたいと思います。
あるいは、FlashWindowEx 構造体フラグ FLASHW_TIMERNOFG は、ウィンドウにフォーカスがある場合、ウィンドウにフォーカスがあるまで点滅しませんか?
私は自分の開発環境にいないため、これをテストすることはできませんが、とにかくフラッシュするという印象を受けました。これは避けようとしていることです。
また、問題があれば、アプリケーションはこのウィンドウで DirectX を使用します。
c# - c# を使用して、ユーザーが選択したウィンドウの hwnd を見つける
プログラムでキーボード ストロークを再現する ac# プログラムを作成しました。私の考えは、これらのキーボードストロークを、テキストボックスがフォーカスされている可能性のある別のアプリケーションに渡すことでした。
したがって、私のプログラムでは、キーボードストロークをリダイレクトする必要があるウィンドウをユーザーに選択してもらいたいと考えています。そのために、待つことができる方法を知りたいです。キーボードストロークを送信する必要があるウィンドウをユーザーに選択させ、ユーザーがアプリケーションで[OK]をクリックして確認すると、アプリは必要なウィンドウを認識しますhwnd を取得して制御します。
どうやってやるの?