Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    15

    [ C ] Catturare la pressione di un tasto da un altro programma

    Ciao, questo è il mio problema:
    Sto sviluppando un'applicazione in cui uso la funzione

    if (getch () == 13) ....

    che mi esegue il resto del codice solo quando il tasto premuto è "invio".
    Il problema sta nel fatto che funziona benissimo quando
    la finestra della console è in primo piano (si dice attiva?), ma
    quando sto usando un gioco o qualsiasi altro programma non intercetta
    più la pressione di "invio" e quindi non parte.
    Esiste una soluzione?

    Ciao e grazie

  2. #2
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    Se la finestra è in primo piano il programma sta girando in foreground, altrimenti gira in background.
    Un programma in background ha quasi tutte le caratteristiche di uno in foreground, a parte il fatto di non essere collegato al canale di input, quindi si blocca appena effettua una chiamata a funzione bloccante.
    Quello che mi chiedo è: perché vuoi utilizzare un programma senza vedere quello che fa?
    Se tu hai un gioco aperto ed il tuo pogramma ti fa una domanda, che senso ha che tu risponda senza vederla?
    Se non c'è bisogno che l'utente del programma sappia cosa succede mentre viene eseguito, semplicemente elimina la getch.
    Ciao!

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    15
    Si scusa sono stato un po' generico. Il programma in questione è un timer e quando arriva a zero emette un suono. E' per questo che non mi serve vedere il programma mentre è in esecuzione, ma ho il problema che non posso farlo partire se uso giochi o altri programmi.

    if (getch () == 13) mi serve per farlo partire quando premo invio (13 identifica "invio"), una volta arrivato a 0 premendo ancora invio riparte.

    E' possibile usare qualche funzione che ha le caratteristiche di getch ma che "intercetta" la pressione del tasto invio mentre uso altri programmi (quindi quando il timer è in background)?

    Ciao ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    41
    ciao se sei sotto windows puoi usare svariate api

    tipo GetKeyState

    è una funzione che vuole come parametro il carattere ascii del tasto che si vuole intercettare e che restituisce un valore
    che ti permette di capire molte cose tra le quali se il tasto è stato premuto... mi sembra che se la usi cosi

    a=GetKeyState(13); //metto in A il risultato di GetKeyState
    if ((a<0)) //se il tasto è stato premuto
    {
    //quà ci metti il codice che vuoi eseguire quando il
    //asto è stato premuto
    }

    dovbrebbe fare al caso tuo...ovviamente devi mettere la funzione in un while ( ricordati di mettere uno sleep) perchè
    GetKeyState restituisce lo stato di un tasto nel momento in cui GetKeyState viene chiamato

    spero di essere stato chiaro ...non credo comunque...chiedi pure delucidazioni ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    15
    Grazie sei stato chiarissimo, appena ho un po' di tempo libero ci lavoro sopra, grazie ancora

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.