2010-11-23 7 views
1

アンマネージドアプリケーションでコントロールの行を読み取ろうとしています。私は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を使用して

alt text

+0

ListViewでない場合は、カスタムグリッドコントロールです。あなたは終わった、あなたはそれを読むことができない。 –

+0

Drats、それは私が恐れていたものでした。 –

+0

UI Spyツール(http://msdn.microsoft.com/en-us/library/ms727247.aspx)を試してください。また、SysExporter(http://www.nirsoft.net/utils/sysexp.html)を試すこともできます。これらのツールがそれを読むことができるなら、それを行うことは可能です。そうでなければおそらくできません。 –

答えて

1

は、あなたがprobrowserオブジェクト内の値を取得することができます。あなたが使用する必要があります<probrowser Object Reference>.GetVisibleText.

私たちは私たちのオートメーションスクリプトで同じものを使用しています。

関連する問題