PDA

View Full Version : [VB6]Modificare messaggio di taskmanager disabilitato


Miao88
21-08-2006, 21:23
ciao a tutti ho disabilitato il task manager modificando l'opportuna chiave di registro.... però quando faccio la combinazione ctrl+alt+canc mi appare un messaggio con scritto che il task manager è stato disabilitato dall'amministratore.... il mio problema è che io voglio che al posto di questo messaggio venga visualizzata una form creata da me... e se non è possibile almeno voglio sostituire il testo del messaggio di errore... è possibile fare una cosa del genere? :)

grazie ciao :)

ViolaX
22-08-2006, 06:47
Ciao, la sequenza che dici non è recepita da VB, credo, perché il controllo passa a Windows, che chiama Task Manager.

Puoi però prevenire: se il progetto non usa la combinazione di Ctrl+Alt, basta scrivere il comando:
Sub Form_GotFocus()
Me.KeyPreview = True

End Sub


Poi, nell'evento Form_KeyDown, puoi gestire il codice di ritorno:
KeyCode=17 tasto Ctrl
KeyCode=18 tasto Alt

Se il progetto non prevede neppure l'utilizzo di Ctrl sarebbe più semplice, perchè il tuo form potrebbe essere mostrato nel momento in cui viene rilevato KeyCode=17
In caso contrario, occorre eseguire il test due volte perchè l'evento si ripete per ogni tasto premuto, anche se alla fine risulta una sequenza combinata.

Non so se sono stata chiara, ciao

Miao88
22-08-2006, 15:50
ViolaX grazie per il suggerimento :) cmq ero già arrivato a una soluzione simile con il usando il seguente codice:


Private Sub Timer1_Timer()
On Error Resume Next
Dim obj As Object
For Each obj In GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_Process WHERE Name='taskmgr.exe'")
Form4.Show
obj.Terminate
Next
End Sub


Dopodichè quando si visualizzava il Form4 con l'api SetwindowsPos facevo si che il form4 si visualizzasse sopra qualsiasi altra finestra aperta.

Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, y, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Sub Form_Load()
Call SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
' altro codice.....
end sub


cmq adesso ho un nuovo problema :D aprò un'altro theared xkè il nuovo prob nn c'entra nulla cn questo....

grazie mille ciao