SDK怎么获取当前窗口句柄啊? MFC可以用 GetSafeHwnd函数但是SDK呢事因是:我向某个进程注入了DLL 这个DLL是用SDK写的我想判断下 我注入的进程对不对如果注入不对就卸载掉如果对的话 就执行代码我已经用任务管理器获取了目标的窗口标题了我想在 注入进程的DLL里面用窗口标题判断下 是不是注入了目标进程不知道怎么在DLL里获取窗口标题呢求解... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 精简点的是:怎么在DLL里获取当前窗口的句柄 DLL代码中在执行前加入判断用FindWindow()找窗口? HWND hWnd = FindWindow ( NULL, L"XX" ) ; if ( hWnd ) { PostMessage ( hWnd, NOTIFY_MESSAGE, wParam, lParam ) ; }DLL中也可以就这样写啊 NOTIFY_MESSAGE 这条Mesg是什么来的呢? 你应该一开始就用FindWindow()找到目标窗口,然后用GetWindowThreadProcessId()找到目标窗口的进程,然后再注入就不会错了。 不对啊 那个没办法的 它想系统每一个进程注入 要不 我也不怎么这么麻烦啦这是判定函数... 不过注入了它也没MessageBoxBOOL InItProcInfo(){ DWORD PID =GetCurrentProcessId(); HANDLE hProcess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(hProcess==INVALID_HANDLE_VALUE) { MessageBox(NULL,"错误",NULL,MB_OK); return FALSE; } char but[100]; char buffer[1024]; memset(buffer ,0,1024); PROCESSENTRY32 pe; pe.dwSize = sizeof(pe); BOOL process=Process32First(hProcess,&pe); while(process) { wsprintf(but,"找到了!进程名:%s-----PID:%d\r\n",pe.szExeFile,pe.th32ProcessID); if (pe.th32ProcessID ==PID && pe.szExeFile == "test.exe") { MessageBox(NULL,but,"找到了",NULL); return TRUE; } memset(but,0x00,100); process=Process32Next(hProcess,&pe); } CloseHandle(hProcess); return FALSE;} 找到目标进程后,再用CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0); 枚举进程的线程,然后再用EnumThreadWindows()枚举线程的窗口。 my god 发现了个问题 先看我的函数代码:DWORD GetProcessPID(char *szProcName){ HANDLE hProcess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(hProcess==INVALID_HANDLE_VALUE) { return FALSE; } DWORD dwProPID; PROCESSENTRY32 pe; pe.dwSize = sizeof(pe); BOOL process=Process32First(hProcess,&pe); while (process) { if(strcmp(pe.szExeFile,szProcName)==0) { MessageBox(0,"找到了",0,0); dwProPID = pe.th32ProcessID; return dwProPID; } process=Process32Next(hProcess,&pe); } return 0; }我这函数有问题吗 我没问题嘛然后再看下:BOOL InItProcInfo(){ DWORD dwGamePID=GetProcessPID("test.exe");//获取目标进程pid if (dwGamePID !=0) { char buf[20]; memset(buf,0,20); wsprintf(buf,"PID:%d",dwGamePID); MessageBox(0,buf,0,0); return true; } return false;}这函数有问题吗 也没问题嘛 他就是不弹出。 唉我主函数也贴上来了:BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved){ switch(fdwReason) { case DLL_PROCESS_ATTACH: if(!InItProcInfo()) { MessageBox(0,"找不到%>_<%",0,0); FreeLibrary(hinstDLL); } break; default: break; } return true;} 呵呵 我在学编写WG 因为游戏都有保护 OpenProcess这函数用不上场了 设置VC6 程序对话框界面为 XP系统风格. 如何在ftp上创建文件夹呀? BCG 那个界面库是我见过的最恶心的东西 校园网内要实现声音和视频的传输,采用什么协议好,我指的是应用层,SIP?H.263?还是其他 关于VC+SQL2000数据库备份和恢复的问题! 一个进程间的通信问题 我的机器感染病毒了,杀不掉,又不想戈盘怎么办? 有哪些好的网站,可以下载精品vc电脑书籍? 静态拆分的窗口后,视图类响应不了工具栏按钮的事件呢? 如何检测并口上是否插有东西(比如打印机什么的) 请教CPropertySheet对象销毁的问题 紧急求助!!如何实现点击按钮创建一个新的View类?????
if ( hWnd )
{
PostMessage ( hWnd, NOTIFY_MESSAGE, wParam, lParam ) ;
}DLL中也可以就这样写啊
{
DWORD PID =GetCurrentProcessId();
HANDLE hProcess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcess==INVALID_HANDLE_VALUE)
{
MessageBox(NULL,"错误",NULL,MB_OK);
return FALSE;
}
char but[100];
char buffer[1024];
memset(buffer ,0,1024);
PROCESSENTRY32 pe;
pe.dwSize = sizeof(pe);
BOOL process=Process32First(hProcess,&pe);
while(process)
{
wsprintf(but,"找到了!进程名:%s-----PID:%d\r\n",pe.szExeFile,pe.th32ProcessID);
if (pe.th32ProcessID ==PID && pe.szExeFile == "test.exe")
{
MessageBox(NULL,but,"找到了",NULL);
return TRUE;
}
memset(but,0x00,100);
process=Process32Next(hProcess,&pe);
}
CloseHandle(hProcess);
return FALSE;
}
枚举进程的线程,然后再用EnumThreadWindows()枚举线程的窗口。
my god 发现了个问题 先看我的函数代码:DWORD GetProcessPID(char *szProcName)
{
HANDLE hProcess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcess==INVALID_HANDLE_VALUE)
{
return FALSE;
}
DWORD dwProPID;
PROCESSENTRY32 pe;
pe.dwSize = sizeof(pe);
BOOL process=Process32First(hProcess,&pe);
while (process)
{
if(strcmp(pe.szExeFile,szProcName)==0)
{
MessageBox(0,"找到了",0,0);
dwProPID = pe.th32ProcessID;
return dwProPID;
}
process=Process32Next(hProcess,&pe);
}
return 0;
}
我这函数有问题吗 我没问题嘛
然后再看下:BOOL InItProcInfo()
{
DWORD dwGamePID=GetProcessPID("test.exe");//获取目标进程pid
if (dwGamePID !=0)
{
char buf[20];
memset(buf,0,20);
wsprintf(buf,"PID:%d",dwGamePID);
MessageBox(0,buf,0,0);
return true;
}
return false;
}
这函数有问题吗 也没问题嘛 他就是不弹出。 唉我主函数也贴上来了:BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
if(!InItProcInfo())
{
MessageBox(0,"找不到%>_<%",0,0);
FreeLibrary(hinstDLL);
}
break;
default:
break;
}
return true;
}
呵呵 我在学编写WG 因为游戏都有保护 OpenProcess这函数用不上场了