int MyWatch(char * thread_name){ PROCESSENTRY32 pe32; char * mychar; BOOL bstart=TRUE; HANDLE hProcessSnap; while(1) { pe32.dwSize=sizeof(pe32); hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(hProcessSnap==INVALID_HANDLE_VALUE) { printf("CreateToolhelp32Snapshot調用失敗!\n"); return -1; } //遍曆進程快照。輪流顯示每個進程的資訊 bstart = TRUE; BOOL bMore=::Process32First(hProcessSnap,&pe32); while(bMore) { USES_CONVERSION; //啟用宏命令標記 mychar = W2A(pe32.szExeFile); if(0==strcmp(thread_name,mychar)) //比較你的進程名字是否相同,判斷是否進程在啟動 { printf("你的程式在運行!"); bstart = FALSE; break; }// printf("進程名稱:%s\n",W2A(pe32.szExeFile));// printf("進程ID號:%u\n\n",pe32.th32ProcessID); bMore=::Process32Next(hProcessSnap,&pe32); } if(bstart) { ShellExecute(0, _T("open"), _T("D:\\result.txt"),NULL,NULL,SW_SHOWNORMAL); //啟動你要的exe檔案,D:\\result.txt是我自己的測試 } Sleep(5000);//5秒監測一次 } //清除snapshot對象 ::CloseHandle(hProcessSnap); return 0;}