Tam Sürümünü Görmek İçin : c++ builder ile bilgisayar açma kapama kodları ile ilgili
c++ builder ile yazdığım programda kullandığım bilgisayarı yeniden başlatma kapama kodları çalışmıyor.bana yardım edebilir misiniz?
dos için basit bir reset komutu şudur.
asm (jmp FFFF:0000);
Euclides
25/09/2004, 18:35
@ufuk:
Muhtemelen NT4 ve üzeri (WinXP,Win2k) bir sistem kullandığın için olmuyor.
Öncelikle programına bilgisyarı kapatmak yetkisi vermelisin,Peki nasıl vereceksin ?
http://mdn.microsoft.com/library/en-us/security/security/adjusttokenprivileges.asp
2....
@pulsar:
seni kınıyorum, sadece millete hava atmak için abuk sabuk şeyler yazıp duruyorsun,
adam sana c++ builder(windows) diyor sen ise gidip windows,linüx ve TÜM proteced mod sistemlerde uygulanması mümkün olmayan şeyler söylüyorsun.
Böyle birşeyi neden yaptığını anlayamıyorum ama umarım bir gün olgunlaşırsın ...
Maltanar
25/09/2004, 22:35
XP veya Windows 2000 sistemlerinde programa gerekli yetkileri (priviledge) vermektense sistem aracı olan shutdown.exe'yi kullanmak daha pratik bir yol olarak önerilebilir. ShellExecute ile bu aracı çalıştırarak de sistemin kapanması sağlanabilir.
Bir de komut satırı parametresi gerekiyor shutdown.exe için, mesela -r parametresi restart için kullanılabiliyormuş.
Yani:
ShellExecute(NULL,"open","shutdown.exe","-r ",NULL,SW_SHOW);
gibi birşeyler de iş görecektir.
seni kınıyorum, sadece millete hava atmak için abuk sabuk şeyler yazıp duruyorsun,
adam sana c++ builder(windows) diyor sen ise gidip windows,linüx ve TÜM proteced mod sistemlerde uygulanması mümkün olmayan şeyler söylüyorsun.
Böyle birşeyi neden yaptığını anlayamıyorum ama umarım bir gün olgunlaşırsın ... uyarın için teşekkür ederim. Ama biraz kaba olmuş daha sakin cevap verebilirdin ama sanırım hızlıdan cevap vermeye çalışmışım. Celelallenmeye gerek yok.
entegre78
02/10/2004, 02:25
c++ builder ile yazdığım programda kullandığım bilgisayarı yeniden başlatma kapama kodları çalışmıyor.bana yardım edebilir misiniz?
ExitWindowsEx(EWX_POWEROFF,0);
0 EWX_LOGOFF Aktif kullanıcıyı kapatır ve yeniden başlar.
1 EWX_SHUTDOWN Windowsu kapatır ve Bilgisayarınızı kapatabilirsiniz ekranı çıkar
2 EWX_REBOOT Bilgisayarı yeniden başlatır.
3 EWX_POWEROFF 1 değeri gibidir. Farklı olarak bilgisayar destekliyorsa, bilgisayarın gücünüde keser.
4 EWX_FORCE Sisteme cevap vermeyen uygulamalar varsa bunların sonlandırılması için kullanıcıdan onay ister.
entegre78
02/10/2004, 03:10
bool WINAPI SystemRestart (DWORD mode)
{
BOOL ret;
OSVERSIONINFO vi;
vi.dwOSVersionInfoSize = sizeof(vi);
GetVersionEx (&vi);
if (vi.dwPlatformId == VER_PLATFORM_WIN32_NT) {
HANDLE hToken;
TOKEN_PRIVILEGES tp;
ret = FALSE;
if (OpenProcessToken (GetCurrentProcess (), // open access privilege list.
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
tp.PrivilegeCount = 1;
LookupPrivilegeValue (NULL, SE_SHUTDOWN_NAME, // Ask the "shutdown" LUID
&tp.Privileges[0].Luid);
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; // enable it
AdjustTokenPrivileges (hToken, FALSE, &tp, 0, NULL, 0);
ret = (GetLastError () == ERROR_SUCCESS);
}
}
else
ret = true;
return (ret ? ExitWindowsEx (mode, 0) : false);
}
SystemRestart(EWX_POWEROFF);
yastasinane
25/08/2005, 02:46
boyle bir programin kaynak kodlari olan var mi? heryerde yukardaki kodlar veriliyor. ama bende bu kodlar hata veriyor.
calismiyor.
bi butona tiklayinca win xp kapatacak programin derlenince hata vermeyen kodlari varsa birinde lutfen paylassin bizimle.
iyi calismalar...
Fonksiyon kendi kütüphanemden. özelleştirilmiş şekilde.
parametre olarak 1,2,4,8,10 sayılarından birisini amaca uygun göndermeniz kafi...
//---------------------------------------------------------------------------
bool SistemiKapat(unsigned gorev)
{
/* gorev....
#define EWX_LOGOFF 0
#define EWX_SHUTDOWN 0x00000001
#define EWX_REBOOT 0x00000002
#define EWX_FORCE 0x00000004
#define EWX_POWEROFF 0x00000008
#if(_WIN32_WINNT >= 0x0500)
#define EWX_FORCEIFHUNG 0x00000010
*/
HANDLE hToken;
TOKEN_PRIVILEGES tprivilege;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return false;
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tprivilege.Privileges[0].Luid);
tprivilege.PrivilegeCount = 1;
tprivilege.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tprivilege, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return false;
if (!ExitWindowsEx(/*EWX_SHUTDOWN | EWX_FORCE*/gorev, 0xFFFFFFFF)) // Tüm uygulamaları kapat sonra sistemi...
return false;
return true;
}
//---------------------------------------------------------------------------
Kullanımı bir programdan aynen kopya... Sistemi kapatmazsa problem kodda değil sisteminizdedir. Ya kasan bir uygulama vardır veya başka bir sorun.
int iSor = Application->MessageBox(aYazi.c_str(),
"ASOZA işlem Onayı", MB_YESNO + MB_ICONQUESTION);
switch(iSor) {
case IDYES :
if(!SistemiKapat(2))
MessageBox(NULL, " Bilinmeyen bir sebepten dolayı sistem yeniden başlatılamadı...\n"
" Lütfen açık uygulamalarınızın sistem uyumluluğunu denetleyin...",
"Updater Uyarı...",
48);
break;
case IDNO : break;
}
Volkan Uzun
04/09/2005, 11:00
isletim sistemini check etmeni gerekebilir, bazi isletim sistemlerinde bahsettigini uygulama calismayabilir.
ozellikle tokenprivilege fonklarinda.
winme de test ettinizmi ?
#define satırları ve kodun orjinali microsoftun kendisine ait. Benimki özelleştirmek oldu.
Fonksiyonu da XP için otomatik update yapan bir programım için ilk defa kütüphaneme ekledim. Sonra sp2 çıktı mertlik bozuldu gerçi de. Dolayısı ile diğer sistemlerdeki tepkisini bilemiyoeum. Tabii sorunuz bana ise...
Volkan Uzun
04/09/2005, 20:34
evet sorum sanaydi , yanit icin tskler
not : bu kod parcasi tum ms isletim sistemlerini reboot etmez.
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.