Voila tu peux tout faire en applescript ces methodes ont leurs
équivalents
cherche les même noms dans la doc
mais tu seras toujours sujet au cancel si une app demande la sauvegarde et heureusement
<font class="small">Code:</font><hr /><pre>
#include <stdio.h>
int main (int argc, const char *argv []) {
OSStatus error = noErr;
if(argv[1] != NULL){
if(strcmp(argv[1] , "reboot") ==0 ){
error = SendAppleEventToSystemProcess(kAERestart);
if(error == noErr){
DisplayMessage("Computer is going to restart\n");
}else{
DisplayMessage("Computer wouldn't restart\n");
}
}else if(strcmp(argv[1] , "shutdown") ==0 ){
error = SendAppleEventToSystemProcess(kAEShutDown);
if (error == noErr){
DisplayMessage("Computer is going to shutdown\n");
}else{
DisplayMessage("Computer wouldn't shutdown\n");
}
}else if(strcmp(argv[1] , "logout") ==0 ){
error = SendAppleEventToSystemProcess(kAEQuitApplication);
//error = SendAppleEventToSystemProcess(kAEReallyLogOut);
if (error == noErr){
DisplayMessage("Computer is going to logout\n");
}
else{
DisplayMessage("Computer wouldn't logout\n");
}
}else if(strcmp(argv[1] , "sleep") ==0 ){
error = SendAppleEventToSystemProcess(kAESleep);
if (error == noErr){
DisplayMessage("Computer is going to sleep\n");
}
else{
DisplayMessage("Computer wouldn't sleep\n");
}
}else{
DisplayMessage("invalid option\n");
}
}else{
DisplayMessage("no option ?\nsleep | reboot | logout | shutdown");
}
return 0;
}
OSStatus SendAppleEventToSystemProcess(AEEventID EventToSend)
{
AEAddressDesc targetDesc;
static const ProcessSerialNumber kPSNOfSystemProcess = { 0, kSystemProcess };
AppleEvent eventReply = {typeNull, NULL};
AppleEvent appleEventToSend = {typeNull, NULL};
OSStatus error = noErr;
error = AECreateDesc(typeProcessSerialNumber, &kPSNOfSystemProcess,
sizeof(kPSNOfSystemProcess), &targetDesc);
if (error != noErr)
{
return(error);
}
error = AECreateAppleEvent(kCoreEventClass, EventToSend,
&targetDesc, kAutoGenerateReturnID,
kAnyTransactionID, &appleEventToSend);
AEDisposeDesc(&targetDesc);
if (error != noErr)
{
return(error);
}
error = AESend(&appleEventToSend, &eventReply, kAENoReply,
kAENormalPriority, kAEDefaultTimeout,
NULL, NULL);
AEDisposeDesc(&appleEventToSend);
if (error != noErr)
{
return(error);
}
AEDisposeDesc(&eventReply);
return(error);
}
</pre><hr />