因为最近疯狂地打quake3、rtcw,所以经常闹到凌晨3、4点钟,严重影响了我的生活,所以想做一个程序克制自己。但是临到做时脑里一片茫然,,,老了:(还是说正题吧,强行关闭一个程序有什么好办法,我想是先应该找到进程id吧?

解决方案 »

  1.   

    是呀,呵呵,先定时,可以用取系统时间的办法呀,到了指定时间就调用关进程的程序。
    关程序嘛:.....
     HANDLE hProcssSnap=NULL;
     PROCESSENTRY32 pe32 ={0};
     hProcssSnap=(HANDLE) CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
        pe32.dwSize=sizeof(PROCESSENTRY32);
    Process32First(hProcssSnap,&pe32);
       do{
       if(strstr(pe32.szExeFile,“要关的进程”))
       {      
    if(TerminateProcess(OpenProcess(0,FALSE,pe32.th32ProcessID),0))
    MessageBox("中止成功","提示");    
       
     else MessageBox("中止失败","提示");
       break;
       }
      } while (Process32Next(hProcssSnap,&pe32));
       CloseHandle(hProcssSnap);
    .......
      

  2.   

    做一个定时器;做一个关机程序(ExitWindows并关闭电源).
      

  3.   

    进程id会发生变化,我觉得你应该找“映像名称”才对
    “映像名称”就是程序的可执行文件的名称
    楼上的if(strstr(pe32.szExeFile,“要关的进程”))
    中的“要关的进程”直接改成可执行文件的名称应该就可以了。
      

  4.   

    1.写一个关机程序,其中调用ExitWindowsEx(EWX_POWEROFF,0);
    2.设定计划任务;OK。
      

  5.   

    哈,告诉我一声嘛,我是供电局的,,,不要UPS啊,,,,
             关键还是自己,,,,,
      

  6.   

    一个简单的方法:(肯定不是最好的)
    可以先用spy++找出那些程序的主窗口类名 ,作个列表出来 .要关闭的时候,用FindWindow()找出窗口句柄 ,发个消息过去就行了
      

  7.   

    哈哈楼顶的老兄跟我一样,不过玩的游戏不同而已!
    如果只是要提醒自己的话,只要一到时间不断弹出系统模式框不断切换焦点即可,这样玩起来也没兴趣了.要注册为系统服务,不然玩兴正浓时舍不得关机睡觉,会Ctrl+alt+del终止的.
    我写过类似的程序,但是,...,唉,没有用的...最最关键的靠毅力!!用毅力克制自己!!
      

  8.   

    中止成功,但要改一个地方将 if(TerminateProcess(OpenProcess(0,FALSE,pe32.th32ProcessID),0))
    改成 if(TerminateProcess(OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID),0))否则是不会成功的