通过进程名称结束 进程
BOOL FindProcessHandleAndKill(const CString &cs_WndName)
{
HWND hWnd;
DWORD ProcessID;
HANDLE hProcess;
hWnd=::FindWindow(NULL, cs_WndName);
if(hWnd==NULL)//テサモミユメオスエーソレ
{
return FALSE;
}
else
{
if(GetWindowThreadProcessId(hWnd, &ProcessID)==0)//ハァーワ
{
return FALSE;
}
else
{
hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessID);
if(hProcess==NULL)
{
return FALSE;
}
else
{
if(TerminateProcess(hProcess, 0))
{
return TRUE;
}
else
{
return FALSE;
}
}
}
}
}
窗口1取窗口句柄() 取进程PID (窗口1句柄, 当前进程PID)版本 2DLL命令 取进程PID, 整数型, "user32", "GetWindowThreadProcessId", 公开, 获取与指定窗口关联在一起的一个进程和线程标识符
参数 hwnd, 整数型, , 指定的窗口句柄(窗口)
参数 lpdwProcessID, 整数型, 传址, 用作装载返回的PID变量
没有很直接的办法,我能想到的就是遍历窗口,并用GetWindowThreadProcessID函数获取pID,并与你的pID进行比对,相同则这个窗口就是你要的窗口,请参考>
#include <windowsh>
#include <stdioh>
#include <tlhelp32h>
void main()
{
PROCESSENTRY32 ProcessEntry = { 0 };
MODULEENTRY32 ModuleEntry = { 0 };
HANDLE hProcessSnap;
HANDLE hModuleSnap;
ProcessEntrydwSize = sizeof(PROCESSENTRY32);
ModuleEntrydwSize = sizeof(MODULEENTRY32);
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照
BOOL bRet = Process32First(hProcessSnap,&ProcessEntry);// 遍历进程快照,轮流显示每个进程的信息,先获得第一个
while(bRet)
{
printf("\n%s\n",ProcessEntryszExeFile);//输出该进程可执行文件名(包括路径)
Sleep(200);
hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,ProcessEntryth32ProcessID);//循环给每个进程的所有模块拍一个快照
bRet = Module32First(hModuleSnap,&ModuleEntry);// 遍历模块快照,轮流显示每个模块的信息,先获得第一个
while(bRet)
{
printf("\t%s\n",ModuleEntryszExePath);
Sleep(200);
bRet = Module32Next(hModuleSnap,&ModuleEntry);//下一个模块
}
bRet = Process32Next(hProcessSnap,&ProcessEntry);//下一个进程
}
}
用C++很繁琐。其实直接用DOS命令wmic process ,自己再稍做点工作就可以了,清楚,易懂。
char str[]="wmic process where name=\"notepadexe\" get handle,processid,name";
system(str);
上面命令,列出名字叫 notepadexe 的 所有的 进程 的 handle, processid, name
若用:
wmic process where name=\"notepadexe\" get handle,processid,name > atxt
就能把屏幕输出存入 atxt, 写程序打开,读入,很简单。handle 数值 就是句柄。
强制转换是肯定不行的,我想了个笨方法。在获得某进程的Id后,获取桌面上每个窗口的进程Id,再与先获得的进程Id进行比较,然后就能知道哪个窗口属于哪个进程的了。
另外网上找的一篇文章:>
以上就是关于VC 通过进程ID获得主窗口句柄全部的内容,包括:VC 通过进程ID获得主窗口句柄、易语言如何取自身进程ID 和 句柄、请问根据进程名或PID获得窗口句柄用VB6怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)