2014-01-16 4 views
5

Ich möchte ein 'DataGridView' einer Anwendung lesen. Es gibt eine Anwendung, in der viele untergeordnete Fenster vorhanden sind. Hier ist ein Bild von dieser Anwendung und das Fenster der Datagridview enthält, die wir lesen wollen, habe ich aus dem Fenster hervorgehoben, die ichWie lese ich eine Datagridview einer anderen Anwendung

application

Ich habe das Fenster durch UISPY gesucht und hier lesen will, ist das Bild des Fensters und die Datagridview darin. Ich habe die Kontrolle hervorgehoben, die ich gelesen werden möchte.

enter image description here

Ich habe diesen Code (Winapi) verwendet, um die Steuerung zu lesen, aber ich bin immer einen leeren String

public object WindowText(IntPtr hWnd) 
{ 
    object obj2 = ""; 
    if (hWnd.Equals(IntPtr.Zero)) 
    { 
     return ""; 
    } 
    // 0x111 is WM_COMMAND 
    MainModule.SendMessage(hWnd, 0x111, (IntPtr)0x81eb, IntPtr.Zero); 
    MainModule.StrData = MainModule.StrData + Clipboard.GetText(); 
    // 0x307 is WM_DESTROYCLIPBOARD 
    MainModule.SendMessage(hWnd, 0x307, IntPtr.Zero, IntPtr.Zero); 
    return obj2; 
} 

Ich habe auch UI Automation versucht, aber ich war nicht erfolgreich in Lesen Sie es auch durch.
Die Datagridview hat einige Zellen, die jede Sekunde aktualisiert werden (Live-Daten) und ich möchte es lesen und speichern. Ich möchte die die Zellen und Spalten (Symbol, Bid, Ask) und der Zellinhalt (AUDCAD, AUDCHF) usw.

+0

Ich verstehe nicht, was Sie mit diesen 'SendMessage' versuchen wollen – manuell

+0

es ist eine winapi-Instanz zum Lesen der Inhalte einer anderen Anwendung wie dieser http://i.stack.imgur.com/rnvwI.jpg –

+0

Versuchen WM_GETTEXT http://msdn.microsoft.com/en-us/library/windows/desktop/ms632627%28v=vs.85%29.aspx Wenn dies kein benutzerdefiniertes Steuerelement ist, sollte jede Zelle eine "Edit" -Kontrolle enthalten . Zum Beispiel hat Powerbuilder ein Gitter-Steuerelement, das keine Bearbeitungssteuerelemente hat. Sie zeichnen das gesamte Steuerelement und keine Liste der Bearbeitungssteuerelemente. – user743414

Antwort

0

UI Spy verwendet UI Automation lesen, nicht Windows-Meldungen. Da die Steuerung angibt, ein Datagrid zu sein, sollten Sie in der Lage find the item sein, indem Sie nach dem Element mit UIA_ControlTypePropertyId gleich UIA_DataGridControlTypeId suchen und dann die Kinder wie geeignet untersuchen.

Verwandte Themen