Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803

    [win32] riaccendere il monitor onkeydown

    codice:
    #include <windows.h>
    #include<stdio.h>
    #include<conio.h>
    int main(){
        
    char ch;
    SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2); 
              while(1){
                     if (GetAsyncKeyState(VK_RETURN)==-32767){
                                                         SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
                                                         break;
                                                         }
                        Sleep(150);
                       }
                               
    
    return 0;
        
    }
    dato che il monitor si riaccende con qualunque tasto (anche il movimento del mouse), credo che la funz SendMessage abbia una specie di sistema di sicurezza per evitare che programmatori maldestri non sappiano più come riaccendere il monitor una volta eseguita..vuoi che dire?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [win32] riaccendere il monitor onkeydown

    vuoi che dire?
    Vuoi che dire ?



    Scusa, ma la domanda qual e'?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803

    Re: Re: [win32] riaccendere il monitor onkeydown

    Originariamente inviato da oregon
    Vuoi che dire ?



    Scusa, ma la domanda qual e'?

    ultimamente sono dislessico

    il problema è riaccendere il monitor alla pressione del tasto invio

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Re: Re: [win32] riaccendere il monitor onkeydown

    Originariamente inviato da ant_alt
    il problema è riaccendere il monitor alla pressione del tasto invio
    E il codice che hai mostrato cosa dovrebbe fare?

    Vorresti usare "solo" il tasto Invio con il tuo programma escludendo questa funzionalità di Windows ? Non capisco ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803

    Re: Re: Re: Re: [win32] riaccendere il monitor onkeydown

    Originariamente inviato da oregon
    E il codice che hai mostrato cosa dovrebbe fare?
    scusami credevo fosse chiaro, avviando il programma lo schermo si spegne, SOLO alla pressione del tasto INVIO dovrebbe riaccendersi.

    il problema è che una volta avviato il programma qualunque tasto o movimento del mouse fa riaccendere lo schermo

  6. #6

    Re: [win32] riaccendere il monitor onkeydown

    if (GetAsyncKeyState(VK_RETURN)==-32767){
    Leggiti la documentazione relativa a GetAsyncKeyState. Quel valore di confronto non mi sembra abbia molto senso, prova con:

    if (GetAsyncKeyState(VK_RETURN) & 1)

    HTH,

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Adesso e' piu' chiaro ma non penserai di bloccare il funzionamento di Windows solamente eseguendo un programma che attende un tasto ...

    E' normale che il processo dei messaggi continui a funzionare, a prescindere da quello che fa il tuo programma e quindi vengano comunque inviati i messaggi per riaccedere lo schermo ...

    Penso che l'unico modo sarebbe quello di implementare un hook globale e gestire i messaggi per la riaccensione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803

    Re: Re: [win32] riaccendere il monitor onkeydown

    Originariamente inviato da ESSE-EFFE
    Leggiti la documentazione relativa a GetAsyncKeyState. Quel valore di confronto non mi sembra abbia molto senso, prova con:

    if (GetAsyncKeyState(VK_RETURN) & 1)

    HTH,
    no il problema non è GetAsyncKeyState, l'ho sempre usata così
    codice:
    Bit più significativo: il tasto è stato premuto tra una chiamata e l'altra alla funzione
    |              Bit meno significativo: il tasto è correntemente premuto
    |              |
    V     BIN      V       HEX    DEC (con segno)   Significato
    0000000000000000  =  0x0000  =       0          Il tasto non è stato premuto né è correntemente premuto
    1000000000000000  =  0x8000  =  -32768          Il tasto è stato premuto ma ora non lo è più
    0000000000000001  =  0x0001  =       1          Il tasto è premuto in questo momento ma non lo è stato
    1000000000000001  =  0x8001  =  -32767          Il tasto è stato premuto e lo è tuttora

  9. #9
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    Originariamente inviato da oregon
    Adesso e' piu' chiaro ma non penserai di bloccare il funzionamento di Windows solamente eseguendo un programma che attende un tasto ...

    E' normale che il processo dei messaggi continui a funzionare, a prescindere da quello che fa il tuo programma e quindi vengano comunque inviati i messaggi per riaccedere lo schermo ...

    Penso che l'unico modo sarebbe quello di implementare un hook globale e gestire i messaggi per la riaccensione.

    dici che è una cosa complessa?esempi sul web?

    se individuassi e catturassi solo quei 2-3 messaggi che nel mio utilizzo pratico solitamente fanno accendere lo schermo quando non vorrei? tipo movimento mouse, tastiera e "fine di un filmato" (dato che non ho idea di che messaggi stia parlando per questo dicevo di individuarli prima)

  10. #10

    Re: Re: Re: [win32] riaccendere il monitor onkeydown

    no il problema non è GetAsyncKeyState, l'ho sempre usata così
    Bit più significativo: il tasto è stato premuto tra una chiamata e l'altra alla funzione
    http://msdn.microsoft.com/en-us/libr...93(VS.85).aspx

    Io leggo che:

    If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState.

    E comunque:

    Although the least significant bit of the return value indicates whether the key has been pressed since the last query, due to the pre-emptive multitasking nature of Windows, another application can call GetAsyncKeyState and receive the "recently pressed" bit instead of your application.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.