PPC中检查某程序是否运行

第一种:
HANDLE hMutex=::CreateMutexW(NULL,true,L"程序名");
 DWORD dwError=GetLastError();
 if(dwError==ERROR_ALREADY_EXISTS)
 {
  ::AfxMessageBox(L"The program is running!");
  return ;
 }
 ::ReleaseMutex(hMutex);

第二种:
HWND hWmp=::FindWindowW(L"Dialog",L"程序窗口名");
 if(hWmp)
 {
   ::AfxMessageBox(L"The program is running!");
  return FALSE;
 }

第三种:
PROCESSENTRY32   lppe;
 memset(&lppe,0,sizeof(PROCESSENTRY32));  
 HANDLE handle=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
 lppe.dwSize=sizeof(PROCESSENTRY32);
 ::Process32First(handle,&lppe);
 do
 {
  HANDLE hh=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,lppe.th32ProcessID);
  CString temp(lppe.szExeFile);
  if(temp.Find(L"程序名")>=0)
  {
   ::AfxMessageBox(L"The program is running!");
   ::TerminateProcess(hh,0xffffffff);
   ::CloseHandle(hh);
    break;
  }
  ::CloseHandle(handle);
  
 }while(Process32Next(handle,&lppe));
 ::CloseHandle(handle);

以上三种方法,只能检查其它程序,而不能检查自身是否正在运行,因为windows mobile 系统的运行机制和PC机上的windows XP是不太一样的.


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 0 | 引用: 0 | 查看次数: 2629
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭