Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [C] Spegere e Fare il Reboot a Windows XP

    Sto' facendo un Programma Client Server per i miei PC
    Per non passare da un PC all'altro avevo pensato di fare un programmino che pensi a spegnere uno dei due PC...

    La Comunicazione Tra i due PC funziona solo che non so' Come si fa' a spegere quello con XP

    (Uno ha il 98 l'altro L'XP)

    Per il 98 Uso :
    c:\\windows\\rundll.exe user.exe, exitwindows

    richiamato con system();

    ma per xp non funziona...
    #include <stdio.h>
    int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
    int i = (((3*7))-21); for (; m[i]; i++)
    (i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
    puts(m); getchar(); return 0; };

  2. #2
    Hai XP?! allora apri:

    Guida in linea di windows... [focus/mouse sul desktop, premi F1]
    ricerca con chiave: "shutdown"

    leggi tutte le possibili combinazioni di parametri... e passa il
    comando a system();

    system("shutdown -f -r");

    oppure... ci sono le API di windows:

    codice:
    #include <windows.h>
    
    BOOL MySystemShutdown()
    {
        HANDLE hToken; 
        TOKEN_PRIVILEGES tkp; 
     
        // Get a token for this process. 
     
        if (!OpenProcessToken(GetCurrentProcess(), 
            TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) 
            return( FALSE ); 
     
        // Get the LUID for the shutdown privilege. 
     
        LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, 
            &tkp.Privileges[0].Luid); 
     
        tkp.PrivilegeCount = 1;  // one privilege to set    
        tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
     
        // Get the shutdown privilege for this process. 
     
        AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, 
            (PTOKEN_PRIVILEGES)NULL, 0); 
     
        if (GetLastError() != ERROR_SUCCESS) 
            return FALSE; 
     
        // Shut down the system and force all applications to close. 
     
        if (!ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0)) 
            return FALSE; 
    
        return TRUE;
    }
    
    int main()
    {
        MySystemShutdown();
        ... 
        ...
    ...Terrible warlords, good warlords, and an english song

  3. #3
    Originariamente inviato da nightfall
    Sto' facendo un Programma Client Server per i miei PC
    Per non passare da un PC all'altro avevo pensato di fare un programmino che pensi a spegnere uno dei due PC...

    La Comunicazione Tra i due PC funziona solo che non so' Come si fa' a spegere quello con XP
    Questa funzione che segue funziona solo su Win2k/XP/NT

    InitiateSystemShutdown

    se non hai MSDN su CD, troverai qui info su come utilizzarla
    http://msdn.microsoft.com/library/de...emshutdown.asp

  4. #4
    Io sto' facendo una cosa simile a quella di nightfall...
    solo che quando spengo il win98 mi dice...

    "C'e' un altro utente collegato... Sicure di voler arrestare il sistema SI | No"...

    (Il Messaggio e' una cosa simile )

    Io Dovrei dare invio o cliccare su SI...
    Solo che per fare questo devo fare le scale...

    Come posso fare a dare il comando dall'altro PC ???
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  5. #5
    E' lo stesso motivo per cui ho desistito anch'io, infatti su win98 non ho trovato il modo di non far comparire quel messagebox. Forse modificando il registro ... oppure con SendMessage

  6. #6
    Cos'e' sendMessage ???
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  7. #7
    Originariamente inviato da kNemo
    Cos'e' SendMessage ???
    serve per spedire messaggi alle finestre, in questo caso il client dovrebbe spedire un WM_KEYDOWN sul bottone SI della finestra titolata "C'è un altro utente collegato...".

    SendMessage(HandleFinestra, WM_KEYDOWN, 0, VK_RETURN);

    http://msdn.microsoft.com/library/en...endmessage.asp

    in pratica ogni oggetto (finestre ecc...) sono gestiti tramite messaggi (o eventi) di vario genere, con SendMessage è possibile inviare dei messaggi apposti (ad esempio la pressione del tasto invio tramite il messaggio WM_KEYDOWN)

    WM = Window Message, perchè ci sono anche messaggi che non si applicano alle finestre

    http://msdn.microsoft.com/library/de...sageQueues.asp

    pensandoci bene forse è meglio provare con SendInput

  8. #8
    "SendInput" Sarebbe ???
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  9. #9
    Quando compare il messaggio basta che gli dici di fare una SendKeys con lo invio così è come se tu salissi le scale per dare invio.. :adhone:

    Se nn funge invio prova spazio..

    Il sendkeys è una funzione e invia un carattere ad una finestra attiva....
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  10. #10
    A mi sono dimenticato una cosa...

    Per far sto programmino usa Visual basic dato che la sendkeys è una funzione di Visual...

    Basta che fai un programmino in visual che gira in background ed interviene appena si accorge che è stata aperta una finestra con il titolo della finestra che chiede il si per lo spegnimento ed è fatta...

    Ciao ciao
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.