DWORD WINAPI GetSpecifiedProcessId(const char *pszProcessName)
{
DWORD id;
//获得系统快照句柄
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32 pInfo;
pInfo.dwSize = sizeof(pInfo);
//从快照中获取进程列表
Process32First(hSnapShot, &pInfo) ;
do
{
if(strcmp(strlwr(_strdup(pInfo.szExeFile)), pszProcessName) == 0)
{
id = pInfo.th32ProcessID;
break ;
}
}
while(Process32Next(hSnapShot, &pInfo) != FALSE); CloseHandle(hSnapShot); //清理系统快照,以免内存快速消耗
return id; //返回进程的PID值
}
DWORD WINAPI ThreadProc2( LPVOID lpParam ) //线程函数
{
// 这个线程函数我改了改... 你那个一直循环 不好调试
DWORD ProcessId;
ProcessId = GetSpecifiedProcessId("QQ.exe");
if(ProcessId>10000)
ShellExecute(0, "open", "IEXPLORE", "
http://www.baidu.com", NULL, SW_NORMAL); return 0;
}
int main(int argc, char* argv[])
{
HANDLE I=CreateThread(
NULL,
0,
ThreadProc2,
NULL,
0,
NULL); //创建一个线程
Sleep(3000); // 避免线程挂掉...
CloseHandle(I); //没释放线程.. 造成泄露了。。。
return 0;
}
没释放线程 ... 我改了下... 自己vc测试 没你说的毛病....