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ı tarafından açılan program listesi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Kullanıcı tarafından açılan program listesi
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
Re: Kullanıcı tarafından açılan program listesi
çok tşk ederim. Söylediğiniz işimi görecek gibi duruyor. Size ikinci kezdir borçlanıyorum bay SimaWB
Re: Kullanıcı tarafından açılan program listesi
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
Bu güzel foruma birazcık katkımız olursa ve birileri Allah razı olsun derse amaca ulaşılmıştır
There's no place like 127.0.0.1
Re: Kullanıcı tarafından açılan program listesi
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.
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;