2010-11-23 6 views
1

Ich versuche, die Zeilen eines Steuerelements in einer nicht verwalteten Anwendung zu lesen. Ich benutze ManagedWinapi, um Pin-Voices zu umhüllen, und größtenteils habe ich mich dahin gebracht, wo ich sein muss. Ich kann das Steuerelement finden (es ist eine ProBrowser-Klasse, bin mir nicht sicher, was genau das ist) und sehe Eigenschaften, aber keine der Informationen, die ich brauche, ist verfügbar. Stattdessen hat der ProBrowser neun untergeordnete Elemente, alle Textfelder mit übereinstimmenden Eigenschaften: Password: false, MultiLine: false und Text: <blank>. Ich gehe davon aus, dass dies die Spaltenüberschriften sind, aber es gibt nicht viel zu tun. Dies ist so weit unten in der Kette, wie ich bekommen kann, und auf keinem Niveau scheint ich Zugang zu den tatsächlichen Inhalten der Liste zu haben.Erfassen von Daten aus einem ProBrowser-Steuerelement mit WinAPI

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 ist einfach ein Wrapper für GetWindowText. Es gibt Text für andere Steuerelemente wie Schaltflächen zurück, aber es zieht nichts vom ProBrowser.

Jetzt bin ich fest. Ich bin mir nicht sicher, wie ich sonst noch die Daten aus der Liste holen könnte, da sie nirgendwo zugänglich erscheint. Ich habe einen Screenshot des fraglichen Fensters beigefügt, wenn es Hilfe gibt.

alt text

+0

Wenn es sich nicht um ein ListView handelt, handelt es sich um ein benutzerdefiniertes Rastersteuerelement. Du bist fertig, du kannst das nicht lesen. –

+0

Drums, das war, was ich fürchtete. –

+0

Testen Sie das UI-Spy-Tool (http://msdn.microsoft.com/en-us/library/ms727247.aspx). Es gibt auch ein anderes Tool, das Sie ausprobieren können: SysExporter (http://www.nirsoft.net/utils/sysexp.html). Wenn diese Werkzeuge es lesen können, ist es möglich, es zu tun, sonst können Sie wahrscheinlich nicht. –

Antwort

1

mit QTP Schnell Test Professional Version 10 können Sie die Werte innerhalb des probrowser Objekt erhalten. Sie sollten verwenden <probrowser Object Reference>.GetVisibleText.

Wir verwenden das gleiche in unseren Automatisierungsskripten.

Verwandte Themen