0

画面にXとYしか表示されないフォルダーから特定のファイルを取得する必要があるプロジェクトを担当しています。XPでは、Windowsエクスプローラーが本質的にリストビューであるという事実を利用し、WM_HITTESTメッセージを使用してファイルに関する情報を取得しましたが、Windows7ではそうではありません。

この問題を解決するために、私はそのようなものに最適なツールであるUI Automationを使用しています。唯一の問題は、この場合、私が見ているウィンドウハンドルがデスクトップに属し、デスクトップに同じファイルが複数ある可能性があることです。名前はありますが、拡張子が異なります(そして、ウィンドウは「既知のファイルタイプの拡張子を非表示にする」ように構成されています)UI自動化では、拡張子が返されません。私は多くのことを試みましたが、100%成功するような堅牢なソリューションを見つけることができません。

誰かがこれを試しましたか?成功しましたか?

4

1 に答える 1

0

「フォルダ内の特定のファイル」について詳しく教えてください。
ファイルを手動で識別するためにどのような規則を使用しますか?

このような場合、GUI を使用することが最善の方法であるとは言えません。ファイル/フォルダー システムに保存されているファイルの認識に使用できるものがあれば、バックエンドを試してみます。

説明する簡単な。フォルダーに含まれるテキスト ファイルの総数をカウントし、見つかったすべての Excel ファイルのパスを保存します。

Dim sFolder
Dim FSO, objFolder, objFile, objXLSList
Dim intTXTCount

sFolder = "C:\TEMP"

Set FSO = CreateObject("Scripting.FileSystemObject")
Set objXLSList = CreateObject("Scripting.Dictionary")

Set objFolder = FSO.GetFolder(sFolder)
intTXTCount = 0
For Each objFile In objFolder.Files
 If Regex_Test(objFile.Name, ".*\.[t,T][t,T][t,T]") Then
  intTXTCount = intTXTCount + 1
 End If
 If Regex_Test(objFile.Name, ".*\.[x,X][l,L][s,S]") Then
  objXLSList.Add objXLSList.Count, objFile.Name
 End If
Next

ありがとう、
Albert Gareev
http://automation-beyond.com/

于 2010-04-13T12:46:37.027 に答える