Kullanıcı tarafından açılan program listesi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
emrgln
Üye
Mesajlar: 50
Kayıt: 03 May 2013 04:58

Kullanıcı tarafından açılan program listesi

Mesaj gönderen emrgln »

Mrb arkadaşlar,

Windowsun kapatma anını yakalayarak windowsun kapanmasını engelleyip ve açık olan programları kapatmam lazım. windowsun kapatma anını yakalayabiliyorum. Açık program listesini de elde edebiliyorum. Bana lazım olan sadece kullanıcı tarafından açılmış olan program listesi. Bu listesi nasıl elde edebilirim ?

Yardımlarınızı bekler, iyi günler dilerim.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Kullanıcı tarafından açılan program listesi

Mesaj gönderen SimaWB »

Açık programları listeleyebildiğinize göre programların Process ID'lerine de sahip olduğunuzu düşünüyorum. Bir Process ID'nin domain ve username bilgilerine buradaki GetUserAndDomainFromPID fonksiyonu sayesinde ulaşabilirsiniz.
There's no place like 127.0.0.1
Kullanıcı avatarı
emrgln
Üye
Mesajlar: 50
Kayıt: 03 May 2013 04:58

Re: Kullanıcı tarafından açılan program listesi

Mesaj gönderen emrgln »

çok tşk ederim. Söylediğiniz işimi görecek gibi duruyor. Size ikinci kezdir borçlanıyorum bay SimaWB :)
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Kullanıcı tarafından açılan program listesi

Mesaj gönderen SimaWB »

Daha önce bir sorunuza cevap verdiğimi hatırlamıyorum ama verdiysem bile borç söz konusu olamaz :!:
Bu güzel foruma birazcık katkımız olursa ve birileri Allah razı olsun derse amaca ulaşılmıştır :wink:
There's no place like 127.0.0.1
Kullanıcı avatarı
baypipox
Üye
Mesajlar: 122
Kayıt: 16 Eki 2006 04:23
İletişim:

Re: Kullanıcı tarafından açılan program listesi

Mesaj gönderen baypipox »

Ben bir projemde aşağıdaki procedure ü kullanmıştım belki işine yarar;

Not: Eğer ne var ne yok kapatmak istiyosan bu satırda "ExitWindowsEx(EWX_SHUTDOWN or EWX_PowerOff or EWX_FORCE,0);" yapabilirsin.

Kod: Tümünü seç

procedure TForm1.CloseWindows;
var
   tkHandle : THandle;
   BufferLun,ret : DWORD;
   tk,tkPrevious : TTokenPrivileges;
   LID : TLargeInteger;
   LUID : TLuIDAndAttributes;
   versione : TOSVersionInfo;
begin
   BufferLun := 1024;
   ret := 0;
   versione.dwOSVersionInfoSize := sizeof(versione);
   GetVersionEx(versione);
   if versione.dwPlatformId = VER_PLATFORM_WIN32_NT then
         begin
         tkHandle := GetCurrentProcess;
         OpenProcessToken(tkHandle,TOKEN_ALL_ACCESS,tkHandle);
         LookupPrivilegeValue(PChar(''),PChar('SeShutDownPrivilege'),LID);
         LUID.Luid := LID;
         LUID.Attributes := SE_PRIVILEGE_ENABLED;
         tk.PrivilegeCount := 1;
         tk.Privileges[0] := LUID;
         AdjustTokenPrivileges(tkHandle,False,tk,BufferLun,tkPrevious,ret);
      end;
      ExitWindowsEx(EWX_SHUTDOWN or EWX_PowerOff ,0);
   end;
Cevapla