pencere başlığı ile işlem

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
kuntay
Üye
Mesajlar: 86
Kayıt: 08 Tem 2003 09:41
Konum: İçel
İletişim:

pencere başlığı ile işlem

Mesaj gönderen kuntay »

bir pencere başlığını kontrol ederek o programın kapanmasını sağlamak.
mesela pencere başlığında Windows Media Player yazıyorsa bunu kontrol edip programı kapanmasını sağlamak için ne yapmam lazım arama yaptım ama bu konuda pek bir bilgi bulamadım
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam.

- Forumda FindWindow olarak arama yaparsan çıkan sonuçlarda fazlasını bulabilirsin.

- Aşağıdaki de sorunun cevabı

Kod: Tümünü seç

Const
  MediaPlayer = 'Windows Media Player';
Var
  MP : THandle;
begin
  MP := FindWindow(Nil, MediaPlayer);
  If  MP <> 0 then PostMessage(MP, WM_CLOSE, 0, 0);
end;
Resim
Resim ....Resim
ozzyksk
Üye
Mesajlar: 32
Kayıt: 02 Ara 2005 10:22
Konum: Karşıyaka/İZMİR

Mesaj gönderen ozzyksk »

merhaba şuanda bende bu konuyla ilgili bir sorunla karşı karşıyayım.

verdiğiniz kod kapatmak istediğiniz programın işlemini tamamlamasını bekliyor. ctrl+alt+del deki işlemler kısmındaki işlemi sonlandır butonu gibi ne olursa olsun bu exe yi kapat diye bir kod gönderebilir miyiz ?

winexec ile taskkill /F /IM program.exe yapınca kapanıyor ama windows 98 de bunu kullanamıyorum.

banada yardımcı olursanız sevinirim teşekkürler
ozzyksk
Üye
Mesajlar: 32
Kayıt: 02 Ara 2005 10:22
Konum: Karşıyaka/İZMİR

Mesaj gönderen ozzyksk »

sorunumu aşağıdaki kod halletti. başka ihtiyacı olan olursa umarım onunda işini görür. herkese teşekkürler

Kod: Tümünü seç

var
  hWindowHandle: HWND;
  hprocessID: INTEGER;
  processHandle: THandle;
  DWResult: DWORD;
begin
  hWindowHandle:=FindWindow(nil, 'notepad');
  SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0,
    SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);

  if isWindow(hWindowHandle) then
  begin
    // PostMessage(hWindowHandle, WM_QUIT, 0, 0);

    { Get the process identifier for the window}
    GetWindowThreadProcessID(hWindowHandle, @hprocessID);
    if hprocessID <> 0 then
    begin
      { Get the process handle }
      processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
        False, hprocessID);
      if processHandle <> 0 then
      begin
        { Terminate the process }
        TerminateProcess(processHandle, 0);
        CloseHandle(ProcessHandle);
      end;
    end;
  end;
  sleep(500);
end;
Cevapla