如题

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      pTask : PTaskEntry;
      Task : Bool;
      ThisTask: THANDLE;
    begin
      GetMem (pTask, SizeOf(TTaskEntry));
      pTask^.dwSize := SizeOf(TTaskEntry);
      Task := TaskFirst (pTask);
    while Task do
    begin
    if pTask^.hInst = hInstance then
      ThisTask := pTask^.hTask
      TerminateApp (pTask^.hTask, NO_UAE_BOX);
      Task := TaskNext (pTask);
      TerminateApp (ThisTask, NO_UAE_BOX);
    end;
    end;
      

  2.   

    一、找到所有正在运行的进程
    二、向所有进程发送关系消息一的例子如下,二.....知道了hWnd就都好说了吧。long lp=0;
    EnumWindows((WNDENUMPROC)EnumProc,lp); bool __stdcall EnumProc(HWND hWnd,/*LPARAM*/long/*lp*/) {
       unsigned long* pPid;
       unsigned long result;
       void *hg;
       unsigned long id;   if(hWnd == NULL)
          return false;   hg = GlobalAlloc(GMEM_SHARE,sizeof(unsigned long));
       pPid = (unsigned long *)GlobalLock(hg);   result = GetWindowThreadProcessId(hWnd,pPid);   HWND hh = GetWindow(
          hWnd, // handle of original window
          GW_OWNER // relationship flag
       );
       char tt[110];
       GetWindowText(hh,tt,110);   if (result) {
          char title[110];
          char className[95];
          GetClassName(hWnd,className,95);
          GetWindowText(hWnd,title,110);
          id=*pPid;
          if (title[0] != 0) {
              /*请存储这些东西*/
              id;
              (long)hWnd;
              AnsiString(title);
              className;
          }
       }
       else {
          GlobalUnlock(hg);
          GlobalFree(hg);
          return false;
       }
       GlobalUnlock(hg);
       GlobalFree(hg);
       return true;
    }
      

  3.   

    再贴一段,
    uses TlHelp32
    procedure TForm1.Button1Click(Sender: TObject);
    var
      hSnapshot: THandle;
      ProcessEntry: TProcessEntry32;
      hProcess: THandle;
      sFileName: string;
      iProcessID: Integer;
      iOK:Boolean;
    begin
       try
          hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
          ProcessEntry.dwSize := SizeOf(TProcessEntry32);
          iOK := Process32First(hSnapshot, ProcessEntry);
          repeat
            sFileName := ExtractFileName(ProcessEntry.szExeFile);    //進程使用的EXE
            iProcessID:=ProcessEntry.th32ProcessID;                             //進程號
            TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0),iProcessID),0);   //杀死该进程
          until (not Process32Next(hSnapshot, ProcessEntry));
          CloseHandle(hSnapshot);
      except
      end;
    end;