如何读取另一个应用程序的datagridview

时间:2014-01-16 15:02:58

标签: c# winforms winapi datagridview ui-automation

我想阅读应用程序的'DataGridView'。有一个应用程序,其中有许多子窗口。这是该应用程序的图片和包含我想要阅读的datagridview的窗口,我突出显示了我想要阅读的窗口

application

我通过UISPY搜索了窗口,这里是窗口和datagridview的图片。我突出了我想要阅读的控件。

enter image description here

我已经使用此代码(Winapi)来读取控件但我得到一个空字符串

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;
}

我也尝试过UI自动化,但我也没有成功阅读它 datagridview有一些每秒更新的单元格(实时数据),我想读取并存储它。 我想读取单元格和列(符号,出价,询价)和单元格内容(AUDCAD,AUDCHF)等。

1 个答案:

答案 0 :(得分:0)

UI Spy使用UI Automation,而不是Windows消息。由于控件声称是数据网格,因此您应该能够find the item查找UIA_ControlTypePropertyId等于UIA_DataGridControlTypeId的元素,然后根据需要检查子项。