Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: [C++] Blocco tastiera

  1. #1

    [C++] Blocco tastiera

    Hello all!
    Mi servirebbe sapere se è possibile tramite un qualcosa disabilitare l'uso della tastiera...
    cioè fare come se fosse scollegata...
    Uso Visual Studio 2003
    Grazie a chi mi aiuterà

  2. #2
    Puoi usare la API BlockInput (ma blocca anche il mouse) o creare una hook globale che scarti tutte le pressioni di tasti.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Ma l'applicazione mia è in console win32 non è grafica :master:

  4. #4
    Setta un'interrupt "vuoto", per la tastiera
    Experience is what you get when you don’t get what you want

  5. #5
    Setta un'interrupt "vuoto", per la tastiera
    Cioè?!
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  6. #6
    L'interrupt della tastiera "occupa" la nona posizione, nella tabella dei vettori di interruzione...
    Con funzioni quali dos_setvect o dos_getvect (delle quali non ricordo la corretta sintassi) contenute nell'header dos.h è possibile cabiare le funzioni standard con delle funzioni definite dall'utente (void interrupt)...
    Al termine del programma basta mettere una keep per farlo terminare senza deallocare la memoria ad esso dedicata.
    In questo modo si può ridefinire un interrupt della tastiera che non esegue nessuna operazione(o magari settarlo in modo da ripristinare la vecchia interruzione alla pressione di un tasto o una sequenza particolare)

    EDIT:
    Vabbè ecco una bozza ...
    Controlla la keep se è corretto usarla in questo modo...
    codice:
     #include <stdio.h>
     #include <dos.h>
     #ifdef __cplusplus
         #define __CPPARGS ...
     #else
         #define __CPPARGS
     #endif
     void interrupt newInt(__CPPARGS);   
    
     int main(void)
     {
       /* install interrupt handler */
       _dos_setvect(9,newInt);
    
       keep(0, (_SS + (_SP/16) - _psp));
    
       return 0;
     }
    
     void interrupt newInt(__CPPARGS) 
     {
       
     }
    Infine l'interrupt della tastiera deve fare una srittura in un registro che non ricordo ... se mi viene lo posto (altrimenti non funziona niente)
    Experience is what you get when you don’t get what you want

  7. #7
    Se non mi sono spiegato ditemelo
    Non è un problema di essersi spiegati bene o male, il fatto è che non riesco a capire come vorresti gestire gli interrupt in un'applicazione console WIN32...
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    In effetti, tutto quello che hai detto vale per il DOS, quando questo gira effettivamente nel PC.

    La "finestra DOS" di Win32 e' una "emulazione" e non puoi gestire gli interrupt in quel modo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Ecco infatti ho chiesto aiuto a voi...
    Se ci fate caso una app si chiude con CTRL+C oppure la termini dal task...
    Il prof ha chiesto se riuscivamo a fare una cosa che "bloccasse" quelle due funzioni...
    Così appena premi invio esci dal programma e puoi "riusare" la tastiera...
    Impossibile? :master:

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Il professore vi ha chiesto di evitare che il processo si chiuda dal task manager?

    E a che scopo?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.