vc的程序,获得了一个delphi程序的状态栏句柄后,如何提取其中的数据呢
我写的是CStatusBarCtrl *wndStatusBar = (CStatusBarCtrl*)(CWnd::FromHandle(ghwndStatusBar));//ghwndStatusbar是获得的状态栏指针,类型是CWnd。
如果获得的是vc里面的状态栏,经过这个转换过后,可以通过wndStatusBar->GetText(strInfo,0,NULL);来获取相应的分栏的字符串,可是如果获得的是delphi程序的状态栏的句柄的话,在wndStatusBar->GetText(strInfo,0,NULL);的时候就会报错。请问有什么方法可以在vc中提取获得的delphi程序的状态栏的分栏的字符串?多谢。
我写的是CStatusBarCtrl *wndStatusBar = (CStatusBarCtrl*)(CWnd::FromHandle(ghwndStatusBar));//ghwndStatusbar是获得的状态栏指针,类型是CWnd。
如果获得的是vc里面的状态栏,经过这个转换过后,可以通过wndStatusBar->GetText(strInfo,0,NULL);来获取相应的分栏的字符串,可是如果获得的是delphi程序的状态栏的句柄的话,在wndStatusBar->GetText(strInfo,0,NULL);的时候就会报错。请问有什么方法可以在vc中提取获得的delphi程序的状态栏的分栏的字符串?多谢。
解决方案 »
- 异或算法,请高手帮忙
- 关于对话框的伸缩
- Bitmap::fromFile()失败检测
- 基于CRichEditView类的多文档bmp图片问题
- 怎样从一个程序向另一个WIN32程序写入数据?
- 软件界面模拟的难题!
- inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list)
- 动态添加菜单项
- 如何关掉 ON_WM_CTLCOLOR() 消息响应
- 决不惜分,UP有分,如何在ATL里实现系统托盘,真正的挑战哦!.....................................
- 这个表达式还能优化吗?
- 运行编译出错。。请教高手Run-Time Check Failure #2
spy++能看到什么你就能看到什么
CStatusBarCtrl只不过封装了Windows的msctls_statusbar32控件而已。你看看delphi程序里面的那个是不是msctls_statusbar32控件
HANDLE hProcess;
LPVOID lpCommon;
int nAllocSize = 255;
int nPnlLen;
char szBuf[255];
DWORD dwBytesRead;// StatusBar的项目数(列数)
int nPnlCount = SendMessage(hStatusBar, SB_GETPARTS, 0, 0);// hStatusBar是状态栏窗口句柄
GetWindowThreadProcessId(hStatusBar, &dwProcessID);
//
hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ |
PROCESS_VM_WRITE, false, dwProcessID);
lpCommon = VirtualAllocEx(hProcess, NULL, nAllocSize,
MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
// 循环读取每一个StatusBar项目
for(int i=0; i<nPnlCount; i++)
{
SendMessage(hStatusBar, SB_GETTEXT, i, LPARAM(lpCommon));
ReadProcessMemory(hProcess, lpCommon, szBuf, 255, &dwBytesRead);
// 文本内容在szBuf中
// 再这里作处理,可以将szBuf保存到一个列表中,自己看着办
}
VirtualFreeEx(hProcess, lpCommon, 0, MEM_RELEASE);
CloseHandle(hProcess);