Newsgroup: it.comp.lang.visual-basic
Titolo: Disabilitare tastiera

Ho un'applicazione che vorrei far girare su una macchina Windows 2000 ma con
la garanzia che l'utente non la possa mai fermare.
L'ideale sarebbe disabilitare la combinazione CTRL+ALT+CANC, ma da quello
che leggo č quasi impossibile.
Non posso invece disabilitare via software proprio tutta la tastiera... come
se si staccasse fisicamente il cavetto dal PC? Cosě per me sarebbe proprio
meglio, perchč nel periodo che gira questo tool l'utente non deve fare nulla
(č in pausa).
Grazie

(č in pausa).
Ah, allora l'utente usa il pc ;-)
E' sufficiente che l'utente non abbia il diritto di fermare
l'applicazione, non serve riscrivere il sistema operativo ;-)
-- 
ciao, hal

 l'applicazione, non serve riscrivere il sistema operativo ;-)
E come si fa?

E come si fa?
Non e' piu' un problema vb, ti conviene rivolgerti presso un newsgroup
che tratti di reti windows o sicurezza (sempre su windows).
-- 
ciao, hal

 che tratti di reti windows o sicurezza (sempre su windows).
No... non mi piace.
Ma avete presente quando SMS (di Microsoft) manda un pacchetto da installare
su un client della rete? In quel momento, mentre il client fa
l'installazione, viene visualizzato un messaggio che informa l'utente che
tastiera e mouse sono stati disattivati.
Vorrei una cosa del genere...

No... non mi piace.
Perche'?
E' pulito, trasparente, semplice da gestire.
-- 
ciao, hal

 bisogna riavviare...
Comincia a mandarla... faccio una ricerca...

 > disabilitare, non so piů riabilitarla.


 Non posso invece disabilitare via software proprio tutta la tastiera...
Se ci pensi un attimo ti rendi conto che l'utente deve avere in qualsiasi
momento la possibilità di bloccare (killare) l'esecuzione di un programma.
Non ti basta disabilitare eventuali tasti e chiusure di finestre?
-- 
Ciao,
        Fabrizio
<=- 
http://www.negusweb.it
 -=>

 Luciano
tratto da:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI
/WindowsUserInterface/UserInput/KeyboardInput/KeyboardInputReference/Keyboar
dInputFunctions/BlockInput.asp
[...]
The system will unblock input in the following cases:
  a.. The thread that blocked input unexpectedly exits without calling
BlockInput with fBlock set to FALSE. In this case, the system cleans up
properly and re-enables input.
  b.. Windows 95/98/Me: The system displays the Close Program/Fault dialog
box. This can occur if the thread faults or if the user presses
CTRL+ALT+DEL.
  c.. Windows 2000/XP: The user presses CTRL+ALT+DEL or the system invokes
the Hard System Error modal message box (for example, when a program faults
or a device fails).

 Non ti basta disabilitare eventuali tasti e chiusure di finestre?
Deve poterlo fare con gli altri, ma non col mio.
Il mio tool deve partire quando l'utente va in pausa, deve girare per 15
minuti, e nessuno può fermarlo.

 Long
Ho provato, ma almeno su win 2000 (dove mi interessa) non si blocca nulla.
Ma è possibile che non ci sia un modo?
Cavolo sono io che faccio il tool... è l'amministratore che amministra le
macchine... e vuoi vedere che non possiamo evitare che l'utente mi killi
questo benedetto processo...
Grazie.



E se il programma crasha nel bel mezzo ... chi rimedia alla situazione
senza un riavvio?
Non so se sia effettivamente praticabile ma la soluzione di hal1961
non mi sembrava male.
Ciao!

questo benedetto processo...
Abbi fede, se l'amministratore di rete sa fare il proprio mestiere
puoi legare le mani all'utente esattamente nel modo che ti serve :-)
-- 
ciao, hal

 non mi sembrava male.
A quale ti riferisci... alle permission sul kill di un processo?

 puoi legare le mani all'utente esattamente nel modo che ti serve :-)
Si, ma proviamoci però...

 puoi legare le mani all'utente esattamente nel modo che ti serve :-)
In ogni modo, mettiamo il caso che abbia risolto il problema di non
permettere all'utente di killare un processo, esiste ancora un altro
problema.
La mia applicazione deve essere sempre visibile a video. E' per questo che
volevo proprio evitare di far lockare la macchina. Se questa viene lockata
la mia schermata sparisce... non si vede più.
Tale applicazione, molto banale, deve girare su circa 1000 macchine di un
call center. Quando l'operatore va in pausa (15 minuti) deve scattare la mia
applicazioncina che farà delle cose ed in più visualizzerà un timer per
permettere al team leader di passaggio di capire da quanto tempo
quell'utente è in pausa. Se chiunque mi locka la macchina... l'applicazione
non si vede più...
Vediamo se adesso vi viene qualche idea per aiutarmi...
Grazie.

 minuti, e nessuno può fermarlo.
Non mi sembra che windows consenta di avviare programmi come altro utente.
Per cui non puoi avviare un programma con altri privilegi (a differenza di
linux).
Questo è un limite di windows, se è cosi'.
Per cui se tu avvii un programma, devi anche in ogni momento avere la
possibilità di ucciderlo. Questo mi sembra ovvio.


>
Anche perchè, una volta disabilitati tastiera e mouse, con che cosa dici al
programma di riavviarsi ? 
L'unica è tramite rete o qualche altra porta (seriale, parallela).


 minuti, e nessuno può fermarlo.
Ma a cosa serve questo programma ?
Se l'utente non è un idiota e sa che è importante che quel programma giri,
sicuramente non premerà ctrl+alt+canc per bloccarlo.


 differenza di linux).
Vedi "runas" :P

 capire da quanto tempo quell'utente è in pausa.
[ot polemico]
bella applicazione da negrieri
[fine ot]
--
Salutoni
Sergio

 Grazie.

Vediamo se adesso vi viene qualche idea per aiutarmi...
Hai gia' l'idea, ma sei de coccio, lasciatelo dire...
Installa la tua app come servizio, ad esempio, anche se imho sarebbe
meglio non usare il vb per scrivere servizi.
-- 
ciao, hal

 ha scritto nel messaggio
news:2paelb...@192.168.1.1...


 Ho provato, ma almeno su win 2000 (dove mi interessa) non si blocca nulla.
scolta non leggo tutto il thread e forse hai gia' risolto ...
C'e' una piccola dll (78kb) che fa' quello che vuoi
http://www.hiddensoft.com/cgi-bin/countdown.pl?AutoIt/AutoItX.zip
BlockInput
--------------------------------------------------------------------------------
Will prevent any user input via the mouse or keyboard.
See the Remarks section for limitations.
BlockInput(
    strToggle
)
Parameters
strToggle [in]  This should set to the string "on" to block input, and "off" to enable input.
Return value
None.
Remarks
This function will have different effects depending on the operating system used:.
Operating System "BlockInput" Results
Windows 95 No effect.
Windows 98 User input is blocked but AutoIt is also unable to simulate input.
Windows NT 4 (Without ServicePack 6) No effect.
Windows NT 4 (With ServicePack 6) User input is blocked and AutoIt can simulate input.
Windows 2000 User input is blocked and AutoIt can simulate input.
Example
To Block all user input:
Set oAutoIt = CreateObject("AutoItX.Control")
oAutoIt.BlockInput "on"
--
Fosco

 
http://www.hiddensoft.com/cgi-bin/countdown.pl?AutoIt/AutoItX.zip
Provata, ma come mi aspettava blocca effettivamente la tastiera, tranne la
combinazione CTRL+ALT+CANC.
Ciao e grazie.

 virus??
No, il Visual Basic è un linguaggio "buono".


 Vedi "runas" :P
Quindi allora il suo problema č risolto: se fa partire il programma come
amministratore, teoricamente un utente normale non puņ killare il processo.


 il processo.
Appunto! ;-)

"Peppe"
Disabling the Task Keys
Need to force the user to follow the flow of your application?
Disable CTRL-ALT-DEL, ALT-TAB and CTRL-ESC by disguising your application as a screensaver, with this sneaky code snippet.
To use it, simply copy and paste the below code into a module, and run the EnableTaskKeys method, passing a True or False
depending on whether you want to enable or disable the task keys.
This code works by utilising a Windows API call usually reserved for screensaver developers, one that stops the user from
accessing any of the Windows task-switching functions. Don't forget to turn the task keys back on again before you exit the
application, else the user will be left without such core Windows functionality.
For best results, make your form (either the one you are using or its MDI parent) full-screen maximised, without any control
buttons or title bar.
Usage
' To disable task keys
Call EnableTaskKeys(False)
Code
Private Const SPI_SCREENSAVERRUNNING = 97
Declare Function SystemParametersInfo Lib "user32" _
    Alias "SystemParametersInfoA" (ByVal uAction As _
    Long, ByVal uParam As Long, lpvParam As Any, ByVal _
    fuWinIni As Long) As Long
Public Sub EnableTaskKeys(Enabled As Boolean)
If Enabled = False Then
    'Disable task keys
    SystemParametersInfo SPI_SCREENSAVERRUNNING, 1&, 0&, 0
Else
    'Enable task keys
    SystemParametersInfo SPI_SCREENSAVERRUNNING, 0&, 0&, 0
End If
End Sub
PS:
su win98se funge
--
Fosco

Bello, peccato che non funzioni non  ALT+F4...
Comunque si può rimediare facilmente intercettando l'evento queryunload
della form.
"Fosco" <fa...@fake.invalid> ha scritto nel messaggio
news:7Csfb.163901$hE5.5...@news1.tin.it...


 su win98se funge
Che peccato che i risultati non siano gli stessi su Windows 2000.
Ciao e grazie lo stesso.