Newsgroup: it.comp.lang.delphi
Titolo: Disabilitare il mouse

Vorrei poter disabilitare il mouse, nel senso che si possa vedere sullo
schermo, ma disattivare la funzione dei tasti.
Ho realizzato un hook per intercettare i clic, ma non riesco ad annullarli.
Grazie a tutti in anticipo

 Ho realizzato un hook per intercettare i clic, ma non riesco ad
annullarli.
Posta il contenuto della Hook Procedure. In teoria, comunque, è sufficiente
impostare result diverso da 0:
To enable the system to process the message, the return value must be zero.
To discard the message, the return value must be a nonzero value.
Ciao
--
- Carlo -
cbertu81(at)libero(dot)it

"Carlo Bertuccini" <cber...@DOHlibero.it> ha scritto nel messaggio
news:U0mX8.26315$7N3.5...@twister2.libero.it...
Non capisco cosa vorrebbe dire "Posta il contenuto della Hook Procedure". Ho
provato ad impostare il Result>1 ma continua a non andare. Ho provato a
impostare il contenuto della variabile Message a 0 e funziona, ma comunque a
volte il clic del mouse lo prende ed ho un funzionamento anomalo.
Grazie per la risposta.

 Non capisco cosa vorrebbe dire "Posta il contenuto della Hook Procedure".
Significa "posta un messaggio contenente la procedura di callback dello
hook". In pratica dovrei vedere il codice della funzione di cui è inserito
il puntatore in SetWindowsHookEx().
Ciao! :-)


Eccola quì:
 FUNCTION HProcMessaggi(Code     : Integer;//clic mouse+tastiera
                        WPar     : Wparam;
                        Var LPar : TMsg) : Integer; StdCall;
    BEGIN //messaggio del mouse
          If (LPar.Message=WM_LBUTTONDOWN) Or (LPar.Message=WM_RBUTTONDOWN)
Then
             Begin
             InviaMsg1;//mia procedura
             LPar.Message := 0;//annullo il messaggio
             Exit;
             End;
          If (LPar.Message=WM_LBUTTONUP) Or (LPar.Message=WM_RBUTTONUP) Then
             Begin
             InviaMsg1;//mia procedura
             LPar.Message := 0;//annullo il messaggio
             Exit;
             End;
          //messaggio della tastiera
          If LPar.Message=WM_KEYDOWN Then
             Begin
             InfoToPrg(LPar.wParam);//mia procedura
             LPar.Message := 0;//annullo il messaggio
             Exit;
             End;
          //processo gli altri messaggi
          Result := CallNextHookEx(hHookMessaggi,Code,WPar,Longint(@LPar));
    END;
....
hHookMessaggi := SetWindowsHookEx(WH_GETMESSAGE,@HProcMessaggi,hInstance,0);
In questo modo funziona, ma comunque il clic del mouse a volte mi fa dei
scherzi strani, che può finire per bloccarmi il sistema o non riesco più a
processare i messaggi della tastiera, specie se clicco più di una volta sul
pulsantino di minimize di una finestra aperta.
Spero di essere stato chiaro.

 pulsantino di minimize di una finestra aperta.
Posso chiederti qual e' il problema che stai cercando di risolvere ?
Forse (sicuramente ?), sapendo qual e' il problema di partenza, si
riesce ad arrivare ad una soluzione migliore che l'impostazione di un
hook globale.
Soluzioni di questo tipo, che inibiscono tutte le (o parte delle)
funzioni di sistema non mi piacciono molto e sono, generalmente,
facilmente sorpassabili.

Sto cercando di realizzare una password per windows, ossia lanciare il mio
programma e bloccare il pc. Il programma tuttora č funzionante (o quasi),
solo che ho dei problemi con il clic del tastino sinistro del mouse. Se
gioco troppo con questo (effettuo diversi clic), a volte non riesco piů
acatturare i clic della tastiera.