Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565

    C++ - Fermare lo spegnimento del pc

    Premettendo che uso Windows...
    Ogni volta che si preme il tasto Power del pc, se questo è acceso, si chiude windows e si spegne
    E' possibile intercettare questo evento per poter far prima compiere una determinata operazione?
    Non la chiusura di windows in qualsiasi modo, solo quando si preme il pulsante power del pc.
    Vorrei poi inserire un msgbox per annullare lo spegnimento, se necessario.

    E' una cosa a fin di didattica, non devo ne venderlo ne regalarlo, comunque.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  2. #2
    Premetto: esistono programmi che modificano "la funzione" dei tasti della tastiera ...
    Esistono utenti che eliminano il problema alla radice (tirano via il tasto)...
    Se utilizzi windows XP (credo funzioni così pure sul 2000), ogni volta che premi il tasto, viene avviato il programma: C:\Windows\System32\Shutdown.exe (con alcuni parametri che ne specificano il modo): non è un'ottima idea ma potresti cercare di killare questo processo (non ti assicuro nulla)...
    Altrimenti puoi leggere il codice di scansione del tasto e personalizzare l'interrupt della tastiera, in modo che ogni volta che viene premuto un tasto venga chiamata la tua funzione e non quella di default...
    La tua interruzione la strutturi in modo che per il tasto di power venga eseguita un'operazione e per tutti gli altri tasti venga chiamata la vecchia int...
    Experience is what you get when you don’t get what you want

  3. #3
    Originariamente inviato da Xaratroom
    Se utilizzi windows XP (credo funzioni così pure sul 2000), ogni volta che premi il tasto, viene avviato il programma: C:\Windows\System32\Shutdown.exe (con alcuni parametri che ne specificano il modo): non è un'ottima idea ma potresti cercare di killare questo processo (non ti assicuro nulla)...
    Purtroppo non è così semplice. La pressione del tasto probabilmente viene gestita direttamente a livello di kernel, e comunque senza l'avvio di programmi esterni (shutdown.exe tra l'altro non esiste nemmeno sotto Windows 2000); di fatto la pressione di tale tasto probabilmente si traduce in una chiamata a ExitWindowsEx(EWX_FORCE, 0).
    Altrimenti puoi leggere il codice di scansione del tasto e personalizzare l'interrupt della tastiera, in modo che ogni volta che viene premuto un tasto venga chiamata la tua funzione e non quella di default...
    La tua interruzione la strutturi in modo che per il tasto di power venfa eseguita un'operazione e per tutti gli altri tasti venga chiamata la vecchia int...
    Anche qui temo che non sia così semplice... il pulsante situato sul case non c'entra nulla con la tastiera, e quello della tastiera credo venga gestito in modo differente rispetto agli altri tasti... ma qui entro nel campo delle congetture...
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Mi dispiace molto ...
    Ho interpretato male la richiesta ...
    Credevo stesse parlando del tasto power situato su alcune tastiere ...
    Per quello del case credo esista qualche eccezione (sulla quale sarebbe meglio non mettere mano)
    Experience is what you get when you don’t get what you want

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Io intendevo il tasto del case del pc.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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.