98`de bilgisayarı kapatma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
eduran
Üye
Mesajlar: 52
Kayıt: 03 Tem 2003 04:02

98`de bilgisayarı kapatma

Mesaj gönderen eduran »

arkadaşlar ExitWindowsEx(EWX_SHUTDOWN,0); kodu ile 98`de bilgisayar kapatılıyor. fakat çalışan programlar varsa değişiklikler kaydedilsin mi diye soruyor. değişiklikler kaydedilmeden direk olarak bilgisayarı kod ile kapat mümkün mü? Yardımcı olursanız sevinirim. Kolay gelsin...
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

böyle birşey olsa bile kullanıcılar açısından çok sakıncalı olmaz mı? Ben o anki tüm çalışamalarımın bir anda yok olmasından pek memnun olmam.

Kolay gelsin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@Admin'e katılıyorum... Bu onayları almadan kapatmak kullanıcı adına geri dönülmez şekilde veri kaybı yaratabilir...

- Bunları bilgin dahilinde halen yapmak istiyorsan uyguladığın

Kod: Tümünü seç

ExitWindowsEx(EWX_SHUTDOWN, 0); 
kodundaki EWX_SHUTDOWN parametresine, bunu şartsız yap şeklinde EWX_FORCE parametresini eklemelisin...

Kod: Tümünü seç

ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0); 
şeklinde bir dene...
Resim
Resim ....Resim
Kullanıcı avatarı
eduran
Üye
Mesajlar: 52
Kayıt: 03 Tem 2003 04:02

Mesaj gönderen eduran »

bilinçli olarak kullanacağım. Zaten veri kaybına neden olacak bir şey üzerinde öğrenciler çalışmıyorlar. Ağdan bilgisayarı kapatmak için kullanmak istiyorum.

ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0); kodunu denedim ama sadece kendi programımı kapattı. teşekkür ederim.
Özdemir
Üye
Mesajlar: 21
Kayıt: 18 Oca 2004 02:57
Konum: istanbul

Mesaj gönderen Özdemir »

function ShutMeDown:string;
var
hToken : THandle;
tkp,p : TTokenPrivileges;
RetLen : DWord;
ExReply: LongBool;
Reply : DWord;
begin
case Win32Platform of VER_PLATFORM_WIN32_WINDOWS: //***Windows 9x/ME***//
begin
ExReply:= ExitWindowsEx(EWX_POWEROFF or EWX_SHUTDOWN or EWX_FORCE,0);
if ExReply then
Result:='Shutdown Initiated'
else
Result:='Shutdown failed with ' + IntToStr(GetLastError);
end;
VER_PLATFORM_WIN32_NT: //***Windows NT/2000/XP***//
begin
if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken) then
begin
if
LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid) then
begin
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes :=
SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken,False,tkp,SizeOf(TTokenPrivileges),p,RetLen);
Reply := GetLastError;
if Reply = ERROR_SUCCESS then
begin
ExReply:= ExitWindowsEx(EWX_POWEROFF or EWX_FORCE, 0);
if ExReply then
Result:='Shutdown Initiated'
else
Result:='Shutdown failed with ' + IntToStr(GetLastError);
end;
end;
end;
end; //case bitişi
end;
end;


tüm vindows versiyonlarını kapatan kod :)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Tekar selam...
antenonline yazdı:ExReply:= ExitWindowsEx(EWX_POWEROFF or EWX_SHUTDOWN or EWX_FORCE,0);
- Burada da aynı teknik kullanılmış farklı olarak VER_PLATFORM_WIN32_NT ile Win2K, NT, XP için eklenti var...

- Her iki kodun çalışması lazım... Bence siz bunu Delphi IDE altında Run ederek kullanıyorsunuz... Lütfen programınızı derleyip EXE halini dışardan çalıştırın... Delphi IDE trace kontrolü sebebiyle kendini kapatmış olabilir...

- Hatta... Word ile boş bir belge açıp bişeyler yazın ama kaydetmeyin... sonra bir de Delphi'yi açıp başka bir proje açın ve değişiklik yapın...

- Sonra da kendi programınızı EXE'sinden çalıştırıp deneyin, göreceksiniz çalışacaktır... Lütfen sonucu deneyip bildirin...
Resim
Resim ....Resim
Kullanıcı avatarı
eduran
Üye
Mesajlar: 52
Kayıt: 03 Tem 2003 04:02

Mesaj gönderen eduran »

haklısınız. ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0); kodu dediğinizi yaptı. ben programı delphi içinden çalıştırmıştım. sanırım o yüzden sadece delphiyi kapattı. exe`den çalıştırınca bilgisayar hemen kapandı. ilgilenen arkadaşlara tekrar teşekkür ederim. saygılarımla...
Kullanıcı avatarı
eduran
Üye
Mesajlar: 52
Kayıt: 03 Tem 2003 04:02

Mesaj gönderen eduran »

bilgisayarı kapatma konusunda verdiğiniz kodlar işime çok yaradı sağolun. her iki kodda bilgisayarı kapatıyor. kendi bilgisayarımda sorun çıkarmadı. Fakat ağdan öğrenci bilgisayarlarını kapatmak istediğimde "Windows Kapatılıyor" mesajı vererek bilgisayar duruyor. Bunun sorunu sizce ne olabilir? Bu komutu program gizli olarak çalışırken ve ağdaki bir biilgisayardaki tabledaki kayıdı kontrol ettirerek veriyorum. Tekrar yardımcı olabilirseniz sevinirim. saygılarımla..
Cevapla