一个关于已存在进程消息的获取问题!

来源:百度知道 编辑:UC知道 时间:2024/05/14 03:12:24
各位高手,请指点一下,我下面写的是获取已打开游戏进程的句柄,然后让回调函数处理关于字符的处理,让其返回输入的字符,也就是记住他输入的帐号和密码,其他细节先不忙说,可是我运行了,但是在我的D盘看不到我让程序创建的1.txt 啊!

#include<stdio.h>
#include<windows.h>
#include<tlhelp32.h>

LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
PROCESSENTRY32 pe32;
pe32.dwSize=sizeof(pe32);
HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
DWORD Process32ID;

BOOL bMore=::Process32First(hProcessSnap,&pe32);
while(bMore)
{
if(!strcmp(pe32.szExeFile,"DNFchina.exe"))
{

Process32ID=pe32.th32ProcessID;
break;
}
}

HANDLE hProcess;
hProcess=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,Process32ID);

MSG msg;

w

首先你枚举进程的地方有错误
BOOL bMore=::Process32First(hProcessSnap,&pe32);
while(bMore)
{
if(!strcmp(pe32.szExeFile,"DNFchina.exe"))
{

Process32ID=pe32.th32ProcessID;
break;
}
}
改成:
while(bMore)
{
if(!strcmp(pe32.szExeFile,"DNFchina.exe"))
{

Process32ID=pe32.th32ProcessID;
break;
}
bMore = Process32Next( hProcessSnap, &pe32 );
}

其次没看到你程序想干嘛。创建文件的代码写在你的窗口过程中,而你又没有创建任何窗口,所以为个窗口过程根本就没调用。如果你是想窃取DNFChina的密码的话,应该使用消息钩子,或者读取它的进程内存来获取。
你的GetMessage也有问题,第二个是窗口的句柄,而且这个句柄必须是你的进程创建的,但你竟然传递了进程的句柄,真服了。基础太差。