1

Delphi アプリケーションによって開かれた新しいビスタ スタイルの Open/SaveDialog のウィンドウ ハンドルを取得したいと考えています。

古いスタイルのダイアログでは OnShow を解析することで可能でしたが、新しいスタイルのダイアログではそのようなイベントはありません。

Windows のすべてのウィンドウ ハンドルを反復処理して、そのようにする可能性はありますか?

ありがとう!


編集: OpenDialog.Handle がハンドルを返すことは知っていますが、ダイアログが表示されている場合のみです (それ以外の場合は 0)。ダイアログを表示した直後にハンドルをキャッチするイベントが必要です(ユーザーアクションなし、つまり、ダイアログでアイテムを選択する、ファイルタイプを変更するなど)。

4

2 に答える 2

2

Delphi アプリケーションによって開かれた新しいビスタ スタイルの Open/SaveDialog のウィンドウ ハンドルを取得したいと考えています。

これは、ダイアログのHandleプロパティから利用できます。

おそらく、ダイアログ表示のイベントをキャッチする最も簡単な方法は、ダイアログを表示する直前に設定した CBT フックを使用し、ダイアログが閉じたらすぐに削除することです。

于 2014-09-02T18:25:07.317 に答える
-1

TOpenDialog には、ダイアログが表示された直後に発生する OnShow イベントがあります。その時点でハンドルがすでに設定されているため、これを使用して OpenDialog.Handle を取得できます。

編集: OnShow イベントを使用するとダイアログの外観が変わることを一部の人が指摘した後、私はこれをテストし、OnShow イベントを使用すると実際にダイアログの外観が変更されることを確認できました。

于 2014-09-04T14:50:29.593 に答える