有没有办法取得其他应用程序中表格里的数据。
比如说是一个VB程序里的表格(MSHFlexGrid)。
希望大家都能够参与提供思路。

解决方案 »

  1.   

    下面是一段跨进程读取另一个进程中的ListCtrl中的数据的代码,和楼主跨进程读取MSHFlexGrid中的数据道理相同,可以参考一下你可以先通过FindWindow和FindWindowEx两个函数取得MSHFlexGrid的句柄
    用FindWindow取得MSHFlexGrid所在的窗口的句柄
    通过窗口句柄再用FindWindowEx获得MSHFlexGrid的句柄HWND hWnd = (HWND)0x000C0532; //ListCtrl的句柄
    DWORD dwProcess;
    HANDLE hProcess;GetWindowThreadProcessId(hWnd, &dwProcess);char buf[1024];
    LVITEM* pItem = (LVITEM*)buf;
    // 申请内存
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, dwProcess);
    LPLVITEM pTemp = (LPLVITEM)VirtualAllocEx(hProcess, 0, 1024, MEM_COMMIT, PAGE_READWRITE); memset(pItem, 0, sizeof(buf));pItem->pszText = (char*)((char*)pTemp + sizeof(LVITEM));
    pItem->cchTextMax = 1024 - sizeof(LVITEM);
    pItem->iSubItem = 0; //第幾列
    pItem->mask = LVIF_TEXT;DWORD dWord = 0;
    WriteProcessMemory(hProcess, pTemp, pItem, sizeof(buf),&dWord);::SendMessage(hWnd, 
    LVM_GETITEMTEXT, 
    (WPARAM)1, //第幾行
    (LPARAM)pTemp);// 读数据
    ReadProcessMemory(hProcess, pTemp, pItem, sizeof(buf),&dWord);
    pItem->pszText = (char*)((char*)pItem + sizeof(LVITEM));
    // 释放内存
    VirtualFreeEx(hProcess, pTemp, 1024, MEM_RELEASE);
    CloseHandle(hProcess);希望楼主能从这段代码中得到一点启发!
    may you succeed !