0

[編集] VLCプレーヤーに外部アドオンを構築するつもりなのでFindWindow、プログラムからVLCプレーヤーを制御するために関数のタイプを使用しています。

独自のウィンドウから外部ウィンドウを制御するためのプログラミングのベストプラクティスは何ですか? ベストプラクティス
ですか、それともより良いですか、それとも開発されたライブラリがありますか? 使用するように使用するためのヒントはありますか?FindWindowExFindWindowFindWindowEx

[編集] また、多くの場合、タイトルは言語によって異なる
ためhwnd = FindWindow(null, "Calculator")、タイトルが「Calculator」ではなく「Simulateur」[フランス語] または「Rechner」[ドイツ語] の場合は機能しない可能性があります。OS の言語に関係なく、ウィンドウが確実に見つかるようにするにはどうすればよいですか?

また、別の副次的な質問 - VLC プレーヤー ウィンドウを移動するとアプリケーションも移動するように、アプリケーションを VLC プレーヤーの隣に固定する可能性はありますか? そのための適切な関数が見つかりませんでした。

4

1 に答える 1

1

意図したサンプルについては説明しませんでしたが、.NET 自動化が役立つ場合があります。この記事をチェックしてください。これにも注目

[編集] さて、検索ウィンドウがタイトル値に依存しない可能性を得るには、FindWindEx 関数のみを使用し、外部ウィンドウの className に依存する必要があります。クラスはロケールに依存しません。私の意見では、UI の自動化は 2 つのクラスに分けられます。

  • ウィンドウベース。このアプローチは、外部ウィンドウの操作に FindWindow と SendMessage を使用していると仮定します
  • コーディネートベース。このアプローチでは、外部ウィンドウのコントロールの座標のみを使用します。したがって、特定の座標を持つトップレベル ウィンドウにメッセージを送信しています。

2 番目のアプローチはより簡単ですが、まったく信頼できません。ターゲット アプリケーションがコントロール レイアウトを変更するまで機能します。したがって、FindWindowEx と SenMessage を適用できる場所であればどこでも使用することをお勧めします。

アプリケーションとターゲット アプリのアンカーについて。はい、可能です。それには2つの方法があります。
最初の簡単な方法は、アプリ内にタイマーを作成し、ターゲットアプリの座標を確認して、それに応じてapウィンドウを移動することですが、そのようなアプローチは回避策のようです. 2 番目のより複雑な方法は、フックを作成してターゲット プロセスに挿入することです。SetWindowHookEx関数でフックを設定できます。C# のマウス フックについてもお読みください。また、フックを作成する場合の 1 つのヒントです。すべてのプロセスに .NET フックを挿入しないでください。フックではなく異なるプラットフォーム バージョン用に作成した場合、マネージド アプリで問題が発生する可能性があります。

于 2011-04-02T09:24:59.713 に答える