الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

restart

مغلق
بدأه great_word في 11 فبراير 2002 · 10 رد · 725 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هذا الكود يستخدم لأعادة تشغيل الوينذوز

ExitWindowsEx(EWX_REBOOT, 0);

ولكن كيف اضعه في برنامج ... هل ممكن أن تعطوني برنامج صغير

لأستخدام هذا الكود ؟

#2

السلام عليكم.

أخي ما عليك إلا كتابة هذا السطر في المكان ( التابع ) الذي تريد أن تنفذه فيه فهو لا يحتاج إلى إلى أية تجهيزات أولية قبل استدعائه .

مع التحيات.

#3

هل هذا صحيح ؟

#include

main()

{

ExitWindowsEx(EWX_REBOOT, 0);

return 0;

}

لقد سويت له كومبايل .. وشغلته ولكن لا شيء يحدث ...

أنا استخدم وينذوز 2000

#4

السلام عليكم

في win2k ,winxp لا ينفع استخدام الدالة مباشرة

راحع الموضوع هنا

http://arabteam.nicmatic.com/vb/showthread...ghlight=restart

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#5

شكرا لك يا أخ

ولكن لم أستفد منه لأن تلك البرمجة بالدلفي

#6

السلام عليكم

ولا يهمك أخي نغيره لك الى c ;) .

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#7

السلام عليكم

تأخرت عليك . عملت restart مرتين و shutdown مرة :D :D :D

هاك الكود

 
 #include 
#include 
void restart();
int main(int argc, char* argv[])
{
	restart();
	return 0;
}

void restart()
{
HANDLE TokenHandle=NULL; 
_TOKEN_PRIVILEGES  tkp;
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&TokenHandle))
{
printf("Error");
exit(0);
} 
tkp.PrivilegeCount = 1;
if(! LookupPrivilegeValue("", SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid))
{
printf("Error");
exit(0);
}
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(TokenHandle, FALSE, &tkp, 0, NULL ,NULL);
ExitWindowsEx( EWX_REBOOT, 0 );
tkp.PrivilegeCount = 0;
AdjustTokenPrivileges( TokenHandle, FALSE, &tkp, 0, NULL, NULL);
CloseHandle( TokenHandle );
}

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#8

مشكور على هذا الجهد أخوي tmaaa

:)

;) ;)

#9

شكرا جزيلا لك يا أخ tmaaa

لقد جربته إنه شغال .. ;)

#10

شكرا أخ tmaa على هذا الكود ... هذه التوابع الجديدة فقط تعمل على Windows NT و 2000 و XP لذا يجب الحذر عند استخدامها مع Windows 9X ..

:)

Coding on the Cloud and for the Cloud!

My Blog

#11

السلام عليكم

مشكور أخ هاني ;)

المعذرة على اغفال هذه النقطة في الكود ( أشرت انها للـ winxp,win2k في ردي :D ).

هذا الكود بعد التعديل

#include 
#include 
#include 
void DisplayErrorMSG();
void restart();
int main(int argc, char* argv[])
{
	restart();
	return 0;
}

void restart()
{
HANDLE TokenHandle=NULL; 
_TOKEN_PRIVILEGES  tkp;
OSVERSIONINFO OSVersionInfo;
OSVersionInfo.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
if(!GetVersionEx(&OSVersionInfo))
 DisplayErrorMSG();
if(OSVersionInfo.dwPlatformId==2)
/*
  VER_PLATFORM_WIN32s = 0      win3.1
  VER_PLATFORM_WIN32_WINDOWS = 1  win9x/me
  VER_PLATFORM_WIN32_NT = 2    Windows NT/2000/XP
*/
{
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&TokenHandle))
 DisplayErrorMSG();
tkp.PrivilegeCount = 1;
if(! LookupPrivilegeValue("", SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid))
 DisplayErrorMSG();
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(TokenHandle, FALSE, &tkp, 0, NULL ,NULL))
 DisplayErrorMSG();
}
if(ExitWindowsEx( EWX_REBOOT, 0 ))
 DisplayErrorMSG();
tkp.PrivilegeCount = 0;
if(!AdjustTokenPrivileges( TokenHandle, FALSE, &tkp, 0, NULL, NULL))
 DisplayErrorMSG();
if(CloseHandle( TokenHandle ))
 DisplayErrorMSG();
}
void DisplayErrorMSG()
{
printf("Error %d .n Press any key to halt .",GetLastError());
getch();
exit(0);
}

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

هذا الموضوع مغلق.

مواضيع مشابهة