Konuyu Oyla:
  • Derecelendirme: 3/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Görev yöneticisinden program sonlandırma
#11
Aynı exeden virden fazla uygulama açıksa sıkıntı. Hangisi kapanacak?
Cevapla
#12
Bu kod ile görev yöneticisindeki çalışan programı ismi üzerinden bulabilirsin. 

  function FindWindowByTitle(WindowTitle: string): Hwnd;
  var
    NextHandle: Hwnd;
    NextTitle: array [0 .. 260] of char;
  begin
    NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
    while NextHandle > 0 do
    begin
      GetWindowText(NextHandle, NextTitle, 255);
      if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
      begin
        Result := NextHandle;
        Exit;
      end
      else
        NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
    end;
    Result := 0;
  end;

Bu function ile de exeyi solandırabilirsin

  function KillTask(ExeFileName: string): Integer;
  const
    PROCESS_TERMINATE = $0001;
  var
    ContinueLoop: BOOL;
    FSnapshotHandle: THandle;
    FProcessEntry32: TProcessEntry32;
  begin
    Result := 0;
    FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
    ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

    while Integer(ContinueLoop) <> 0 do
    begin
      if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))
        = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile)
        = UpperCase(ExeFileName))) then
        Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE,
          BOOL(0), FProcessEntry32.th32ProcessID), 0));
      ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
    end;
    CloseHandle(FSnapshotHandle);
  end;

//----------------------------------------------------------------------------------------------

procedure KillProcess(hWindowHandle: HWND);
var
  hprocessID: INTEGER;
  processHandle: THandle;
  DWResult: DWORD;
begin
  SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0,
    SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);

  if isWindow(hWindowHandle) then
  begin
    GetWindowThreadProcessID(hWindowHandle, @hprocessID);
    if hprocessID <> 0 then
    begin
      processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
        False, hprocessID);
      if processHandle <> 0 then
      begin
        TerminateProcess(processHandle, 0);
        CloseHandle(ProcessHandle);
      end;
    end;
  end;
end;



KillTask(FindWindowByTitle('programismi'));
KillProcess(FindWindowByTitle('programismi'));
Cevapla
#13
tlhelp32 kütüphanesinde fonksiyon yazarak görev yöneticisinden kapatabildim. Yardımlarınız için çok teşekkürler. Smile
Cevapla
#14
(11-10-2017, Saat: 02:05)dicle_gsm Adlı Kullanıcıdan Alıntı:
KillTask(FindWindowByTitle('programismi'));
KillProcess(FindWindowByTitle('programismi'));

Maalesef burada bir hata var: Verdiğiniz koddaki FindWindowByTitle fonksiyonu HWND tipinde sonuç döndürüyor. Sonra bu dönen değeri KillTask'ta kullanmışsınız ama KillTask parametre olarak string değer bekliyor  Idea
There's no place like 127.0.0.1
WWW
Cevapla
#15
Daha önce benzer bir soruya şurada bir cevap vermişim.İşinizi görüyor ise Tıklayınız
Ayakkabıyı sefaletten
Çok sonraları tanıdım
Öyle ufuklarda mı olurmuş Allah'ım
Giyer giyer koşardım
Toprağın dostluğundan
Oyuncaklar yaptım çamurdan
Tenimin rengini aldım topraktan
Sen bakma esmerliğim sonradan...





Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Açılıp Gizlenen Program bünyamin68 5 1.206 25-04-2024, Saat: 10:47
Son Yorum: Tuğrul HELVACI
  [ÇÖZÜLDÜ] macos işletim sistemine program yazmak shooterman 5 1.751 02-02-2024, Saat: 09:54
Son Yorum: shooterman
  program exe icon sorunu cvheneburi 9 5.291 19-10-2023, Saat: 15:04
Son Yorum: harunyl
  program boşta kalmışsa info@guzelceker.com 3 2.077 10-04-2023, Saat: 13:02
Son Yorum: ozcanm
  Program güvenliği HakanY 3 1.570 12-11-2021, Saat: 19:17
Son Yorum: enigma



Konuyu Okuyanlar: 1 Ziyaretçi