ファイル検索ウインドウの結果を取得するには?

解決


幸田  2003-12-10 23:33:36  No: 6016

WindowsNTや98でファイル検索をすると、検索結果として
名前、フォルダ名、サイズなどが一覧で表示されますが、
これらの一覧を取得する方法はありますか?
できれば1行目を読み取って、処理した後に2行目に移って、
という方法が理想です。
コマンドプロンプトからfindコマンドでテキストにリダイレクト
する方法などではなく、あくまでファイル検索の結果ウインドウから
取得したいです。
良い方法があれば、ご教授ください。
宜しくお願いいたします


にしの  2003-12-11 00:49:24  No: 6017

ふつうは、FindFirstなどで自前のコードで取得すると思いますが、本当にExplorerの検索結果を取得する必要がありますか?

もしするなら、explorer.exeを検索し、「検索結果」という文字を含むウィンドウの、SysListView32からLISTVIEW_*系のAPIで取得できると思います。


名無しやめんねん  2003-12-11 02:52:18  No: 6018

>>あくまでファイル検索の結果ウインドウから取得したいです。
にこだわるならApiバリバリ呼ぶ事になりますよね?
ちなみにCommCtrlの中にLV系のMessageがあるので
解読すれば意外と楽にいけそうですよ。
かなりの力技っぽいですけどね・・・

私もFindFirst等で十分だと思います。


Halbow  2003-12-12 02:44:22  No: 6019

Halbow です。

>>あくまでファイル検索の結果ウインドウから取得したいです。
>にこだわるならApiバリバリ呼ぶ事になりますよね?

そうですね。ハンドルを取得してメッセージを送信して取得することに
なります。

>ちなみにCommCtrlの中にLV系のMessageがあるので
>解読すれば意外と楽にいけそうですよ。

function ListView_GetItemCount(hWnd: HWND): Integer;

function ListView_GetItem(hWnd: HWND; var pItem: TLVItem): Bool;

を使うんですが、後者の場合は、共有メモリを使わなくてはならないので非常に面倒です。
Win9X 系では、ファイルマッピングオブジェクト、NT 系では VirtualAllocEx()
を使わなくてはなりません。


幸田  2003-12-12 22:01:04  No: 6020

返答ありがとうございます。
実は、ファイル検索の結果を表示するのと同じような
形式を持つ、別の(とてもマイナーな)アプリがあるのですが、
これの操作したいと思っていました。
(左端から、「行番号」、「ユーザ名」、「IP」と続き、行番号のみ選択可能。
1行目を読み出して、ユーザ名が一致したら、行番号を選択して、削除、など。)

ListView_GetItemCount,ListView_GetItemなど、
まだ始めたばかりの私には難しいですが、頑張って勉強します。
教えていただいてありがとうございました。


Halbow  2003-12-12 22:16:26  No: 6021

Halbow です。

>後者の場合は、共有メモリを使わなくてはならないので非常に面倒です。
>Win9X 系では、ファイルマッピングオブジェクト、NT 系では VirtualAllocEx()
>を使わなくてはなりません。

Cのコードですが、ここが説明・コードともにわかりやすいです。

共有メモリを利用するには
http://techtips.belution.com/ja/vc/0001/

近々、わたしのHPでも Delphi の例を示す予定です。


Halbow  2003-12-24 10:40:17  No: 6022

Halbow です。

解決済みですが、

> 近々、わたしのHPでも Delphi の例を示す予定です。

できました。

他のアプリのウィンドウ情報の取得 - 共有メモリ
http://halbow.cool.ne.jp/VCL08.html


幸田  2003-12-24 21:37:17  No: 6023

>Halbow様

幸田です。
早速拝見させていただいています。
(まだ全部は見れていませんが・・・。)

先に回答いただいた後、いろいろ参考にしながら作成し、
検索ウィンドウの情報取得はできたのですが、
本来取得したかった別のリストビューで取得しようとすると
文字化けしたものしか取得できない状態です。

Halbow様のHPできちんと理解しながら作成し直すつもりです。
また質問させていただくこともあるかと思いますが、
その際は宜しくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加