|
10驿站币
比如获取记事本的内容, 使用GetWindowText(WM_GETTEXT消息)函数获取不到内容, 也试过打开进程,在它进程中申请内存, 还试过DLL注入,
只有DLL注入差不多能达到效果,但是不是非常喜欢这个种方式.
第二种代码:
- DWORD ProcessID = NULL;
- DWORD ThreadID = NULL;
- HANDLE hProcess;
- wchar_t* pwstrNotepadData = NULL;
- // 控件句柄
- HWND hWnd = (HWND)0x505BA;
- // 获取控件文本长度
- LRESULT lRes = SendMessage(hWnd,WM_GETTEXTLENGTH,0,0);
- // 根据控件句柄获取线程ID和进程ID
- ThreadID = GetWindowThreadProcessId(hWnd,&ProcessID);
- // 打开进程
- //hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE,ProcessID);
- hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE,ProcessID);
- DWORD dError = GetLastError();
- //申请代码的内存区
- pwstrNotepadData = (wchar_t*)VirtualAllocEx(hProcess,NULL, sizeof(wchar_t)*(lRes+1),MEM_COMMIT, PAGE_READWRITE);
- dError = GetLastError();
- // 获取内容
- LRESULT lResGetText = ::SendMessage(hWnd,WM_GETTEXT,(WPARAM)lRes,(LPARAM)(WCHAR)pwstrNotepadData);
- dError = GetLastError();
- // 申请内存空间, 并清空内存
- wchar_t* szTextBuf = new wchar_t[lRes+1];
- memset(szTextBuf,0,sizeof(wchar_t)*(lRes+1));
-
- ReadProcessMemory(hProcess, pwstrNotepadData, szTextBuf, lRes, NULL);
- // 释放内存
- VirtualFreeEx(hProcess, pwstrNotepadData, 0, MEM_RELEASE);
- CloseHandle(hProcess);//关闭打开的进程对象
- delete[] szTextBuf;
复制代码
这个是根据网上的一篇文章, vc获取任务管理器List数据
上边文章的那段代码也同样无法使用.
不知道是否代码编写问题
或者希望各位牛人想想别的解决方法或思路.谢谢 |
上一篇: 之前遇到的数据库问题已解决下一篇: 代理IP刷访问推广问题
|