アンマネージドアプリケーションでコントロールの行を読み取ろうとしています。私はpinvokesをラップするためにManagedWinapiを使用していました。そして、大部分は、私が必要とされている場所にいました。私はコントロールを見つけることができます(これはProBrowserクラスであり、正確には何であるかわかりません)、プロパティを表示できますが、必要な情報はありません。代わりに、ProBrowserには9つの子要素があり、一致するプロパティのテキストボックスはすべてPassword: false, MultiLine: false
およびText: <blank>
です。私はこれらが列ヘッダーであると仮定していますが、そこから外れることはあまりありません。これは私が得ることができるほどチェーンの下にあります。そして、私はどのレベルでも、リストの実際の内容にアクセスできないようです。WinAPIを使用してProBrowserコントロールからデータをキャプチャする
SystemWindow list = new SystemWindow(ptr); // latching onto the ProBrowser
SystemWindow[] pieces = list.AllDescendantWindows; // same results if using .AllChildWindows
foreach (SystemWindow y in pieces) {
ManagedWinapi.Windows.Contents.TextContent tc = (ManagedWinapi.Windows.Contents.TextContent)y.Content; // ListContent returns null here and on the parent control
Console.WriteLine(tc.LongDescription);
Console.WriteLine(tc.ComponentType);
foreach (KeyValuePair<string, string> kvp in tc.PropertyList) {
Console.WriteLine("\t" + kvp.Key + ", " + kvp.Value);
}
Console.WriteLine("\tText: " + GetText(y.HWnd));
}
GetText
単にGetWindowText
のラッパーです。ボタンのような他のコントロールのテキストを返しますが、ProBrowserから何も引っ張られません。
今、私は立ち往生しています。アクセス可能な場所には表示されないように見えるので、リストからデータを取得する方法がわからない。私は、もしあれば、問題のウィンドウのスクリーンショットを含めました。 10のver QTPクイックテストProfessionalを使用して
ListViewでない場合は、カスタムグリッドコントロールです。あなたは終わった、あなたはそれを読むことができない。 –
Drats、それは私が恐れていたものでした。 –
UI Spyツール(http://msdn.microsoft.com/en-us/library/ms727247.aspx)を試してください。また、SysExporter(http://www.nirsoft.net/utils/sysexp.html)を試すこともできます。これらのツールがそれを読むことができるなら、それを行うことは可能です。そうでなければおそらくできません。 –