問題タブ [findwindow]
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.
vb.net - 特定のファイルを開くダイアログを見つけて入力します
[ファイルを開く]ダイアログを識別し、[ファイル名]フィールドにメッセージを送信する方法を見つけようとしています。その後、ボタンに「Enter」キーまたは「Open」コマンドを送信する必要があります。
私はこれをVBで行っていますが、誰かがC#でも助けてくれれば、私は対処できると確信しています。
私はこの日中APIを掘り下げて、いくつかの可能性を考え出しましたが、DotNet4でこれを実装する方法に慣れていません。以前はVB6でAPIを使用していましたが、現在は少し異なっているようです。
誰かが私に小さな例を提供してくれたら、私は感謝するでしょう。
私が見たAPIのいくつかは、FindWindowとFindWindowExです。
編集:
見る価値のあるコードを見つけました。このコードは、モジュール内で使用する必要があります。より多くの答えを見つけたら、もっと投稿します。
これを使用することにより、ウィンドウテキスト、HWND、およびクラスを識別できます。これが人々に少し役立つことを願っています。次のステップは、データを送信したいフィールドを特定することです。
winapi - ローカルフックが機能しない
私はアプリケーションを持っていて、MSWord のキープレス (LOCAL HOOK) を監視したいのですが、使用する pid を見つける方法がわかりません! 以下の CODE WORKS GOOD は、グローバル フック ( pid
= 0
) と ( pid
= GetCurrentThreadId
) で動作します。ただし、次の場合は機能しませんGetWindowThreadProcessId
:
私は問題の光に非常に感謝しています...
知らせ:
MSWordのみへのフックが必要です。
上記のコードは機能しますが、別のアプリケーションをフックしようとした場合 (つまり、
pid
=0
またはpid
=を使用しない場合GetCurrentThreadId
) にのみ失敗し、結果として = "マウス フックをインストールできません!" が発生します。.私はすでに試して
FindWindow
いますFindWindowEx
、、、; これはうまくいかないので、問題は.GetForegroundWindow
GetActiveWindow
GetWindowThreadProcessId
c++ - C++ を介して外部で実行されているプログラムのウィンドウ ハンドルを取得する
サイズを変更する機能が必要な外部実行プログラムがあります。私にとってキッカーは、タイトルの一部がそのインスタンスに関連するバージョンとその他の特定の情報であることです. バージョン間で一貫している必要がある部分文字列を知っています。Findwindow() 関数を試してみました。これは、タイトルの正確な文言がある場合はうまく機能しますが、一部しかない場合は機能しません。EnumWindows も試してみましたが、同じ制限があると思います (うまくいきませんでした)。私ができる最も簡単なことは(可能であれば)、サイズ変更を行うために画像名からウィンドウハンドルを取得することだと思います。アイデア?
api - Win32 API を使用して、子ウィンドウ (3 レベルの深さ) の子ウィンドウの子 HWND を見つける方法は?
プロセスの 1 つに次の Window 階層があるとします。
の HWND を見つけるにはどうすればよいChild-Child Window
ですか?
クラスFindWindow
で Win32 API 関数を使用しようとしましたが、関数は子ウィンドウを見つけません。XYZ_Renderer
FindWindow
次に、 を使用FindWindow
して を見つけようとしましたがMain Window
、成功しましたが、その後、は の子ではないため、 を使用してFindWindowEx
のみ見つけることができます。Child Window
Child-Child Window
Main Window
Child Window
1 層深くまで進み、見つかったらFindWindowEx を呼び出すことができると思います。
しかし、それを行う前に、簡単に見つける方法があるのではないかと考えましたChild-Child Window
。
sendmessage - 他のウィンドウからのコントロール名
他のウィンドウからテキスト値を読み取り、その値を別のアプリケーションに照会する必要があります (私の質問は最初のタスクに関するものです)...つまり、他のウィンドウを「スパイ」しています (私たちの製品に関連して使用するサードパーティのアプリケーション) )、「受け入れる」ボタンがクリックされるのを待って、テキストボックスから値を読み取ります。この別のアプリケーションであるダイアログ ボックスには、複数のテキスト ボックスとコマンド ボタンがあります。マウス フックを作成し、このアプリケーションの表示時にアクティブにしています。このウィンドウの四角形内のすべてのマウスの動きを読み取っています。テキスト、キャプション、子ウィンドウ ID、四角形、左/右/中央/ホイール クリックをつかみます。「受け入れる」ボタンのクリックをつかむことができます。ボタンのキャプションを見ることができ、そのウィンドウを読み取ったり、テキストを取得したり、クリックされたボタンを特定したりできます。これで、すべての EDIT クラスの値を読み取り、それらのウィンドウ ハンドルや四角形などを取得できます。しかし、それらをクラス コレクション内の一意のアイテムとして識別できません。目的のテキスト ボックスの値を具体的に読み取る必要があります。幸いなことに、私が興味を持っているテキスト ボックスは、EDIT クラス ループからテキストを読み込んでいるときに、ALWAYS COMES FIRST IN MY LOOP です。ただし、より具体的にしたいと思います。NAMEのテキストボックスを読んでいることを確認してください。知っている。開発中に、その名前を読み取り、プログラムにハードコーディングすることができました。私の疑いは、コントロール名がバイナリコードに保存されていないことです。私の理解では、コントロール ID、ウィンドウ ハンドルはウィンドウの作成時に作成され、コントロール名 (たとえば txtOrderNumber) への参照はまったくありません。ボタンのキャプションのために特定できる場合 (つまり、どのボタンがクリックされたかを判断できます)、EDIT クラス項目でロックされ、値を読み取るときに幸運な最初の推測にスローされます。私の質問は、別のウィンドウからコントロール名を取得する方法です。このタスクでは、EDIT クラスのインスタンス名について知りたいと思っています。プロジェクトからのいくつかのコード(短縮)を次に示します。
Dim hWnd As IntPtr = FindWindow(Nothing, _windowText)
'API: FindWindowEx 'API: SendMessage 'API: GetClassName 'API: GetWindowTextLength 'API: GetWindowText 'API: WM_GETTEXT
私は GetWindowLong と GetDlgCtrlID API を見て、ほとんどのフラグを試しましたが、これまでのところ成功していません...
ヒント、手がかり、指示をいただければ幸いです。ありがとうございました
winapi - Spy++ で表示されないウィンドウを `FindWindow` する方法は?
IDA Pro を使用して Windows アプリケーションをデバッグしています。ある時点でFindWindowA
、指定されたクラス名のウィンドウが呼び出され、正常に検索されることがわかりました。
ただし、Spy++ を使用して指定されたクラス名のウィンドウを見つけると、どこにも存在しないように見え、見つけることができません。
アプリケーションが呼び出されたときに何らかの方法で内部的に見つけるこの同じウィンドウをどのように見つけることができるのだろうかFindWindowA
? 外部アプリケーションが同じウィンドウを見つけられないのはなぜだろうか...
c# - 呼び出しがあいまいです: FindWindow(String, String);
私はこのコードを使用しています:
ただし、エラーが発生します。エラーは言う:
次のメソッドまたはプロパティ間の呼び出しがあいまいです: 'HyperBox.Form1.FindWindow(string, string)' と 'HyperBox.Form1.FindWindow(string, string)'
どうすればこれを修正できますか? ありがとう。
c# - FindWindow で正規表現を使用するには?
私は最終的に、特定のウィンドウが存在するかどうかを確認し、それが存在するイベントでアクティブに設定する何かを書き込もうとしています。FindWindow を使用して、文字通りのウィンドウ名を見つけることができました。
タイトルの先頭の数字は変化し、二度と同じになることはありません。そのため、正規表現を使用して、アクティブなウィンドウが上記のような名前構造を持っているかどうかを確認しようとしましたが、数字は変化する可能性があります。これに有効な正規表現がありますが、実装方法がわかりません。私は試した:
しかし、それは継続的に失敗します。では、FindWindow/SetForegroundWindow コマンドを使用して、正規表現を使用してチェックするにはどうすればよいでしょうか。
更新 ~~~~ 私はベストアンサーを選択しましたが、誰かが興味を持っている場合に備えて、これを機能させる方法の実際のコードを次に示します。
必要なウィンドウが存在しない場合に EnumWindows メソッドでテストしてアラートをスローする方法をまだ理解する必要がありますが、それについては後で考えます。
c# - コンソール ウィンドウ (C++ アプリ) からテキスト ボックス (C# アプリ) にリダイレクトします。
別のアプリを実行する必要があるアプリケーション (C#) を作成しています。これ。アプリは、dll (静的) からデバッグするためのコンソール ウィンドウを表示するゲーム (C++、Directx7、GDI、ソースがありません) です。コンソール ウィンドウを表示する場合、この dll には次の行があります。
私のC#アプリで。コンソール ウィンドウを非表示にして、テキストをコンソール ウィンドウからテキスト ボックスにリダイレクトします。コンソール ウィンドウを非表示にするには、 winapi FindWindowを使用していますが、ShowWindowは問題ありません。しかし、コンソールウィンドウからテキストボックスにテキスト(出力)をリダイレクトするにはどうすればよいですか?