Newsgroup: it.comp.lang.visual-basic
Titolo: Simulare ctrl-alt-canc

Sembra strano ma ho il problema opposto a quello più volte richiesto: ho la
necessità di inviare ctrl-alt-canc al sistema.
Come posso fare? (sul sito comune c'è come abilitarlo e disabilitarlo, ma
non come simularlo).
Grazie a tutti in anticipo.

Ti serve per ottenere l'elenco dei task attivi o per riavviare il computer?
      ~=~ ?
  <°>  <°>
        []
     ____
Pasquale
mine...@libero.it

Spiego perchč la situazione č alquanto strana.
Ho fatto un programma che fa tutto da solo; volutamente ho fatto in modo che
non fosse possibile per l'utente interagirci.
Per spegnerlo basta attendere un ciclo di attesa (per evitare blocchi
durante qualche query) e usare ctrl-alt-canc o task manager.
Cosa č successo?
Uso pcanywhere per connettermi con questi pc in remoto; ho scoperto che
questo simpatico programma mi permette di inviare ctrl-alt-canc a sistemi NT
(pc sul quale ho sviluppato l'applicazione) ma NON a win98.
Quindi non so piů come terminarlo!!!!
Per complicare il tutto: il programma cambia caption ogni volta che esegue
un'operazione, in modo che andandoci sopra col mouse compare tooltiptext per
indicare cosa sta facendo; quindi non posso usare API per avere handle e
inviare una chiusura, perchč la caption varia continuamente (quantomeno le
API che io conosco usano caption per prendere l'handle).
L'unica soluzione che mi č venuta in mente č di fare programmino a parte che
semplicemente invia ctrl-alt-canc; cosě eseguendolo sul desktop del client
aggiro pcanywhere.
Scusatemi per questa spatacchiata lunga ma necessaria.
Se qualcuno sa aiutarmi o consigliarmi un metodo alternativo ringrazio.

 durante qualche query) e usare ctrl-alt-canc o task manager.
Una "sporca" proposta: dal remoto, scrivi un file che ti fa da flag, se
durante il ciclo di attesa il tuo prg trova il file, esce dopo averlo cancellato.
In alternativa potrebbe esserti utile:
Simulating Input
http://msdn.microsoft.com/library/sdkdoc/winui/keybinpt_1ltg.htm
e da lě prosegui...
Volevo consigliarti la semplice keybd_event, ma quando l'ho provata non
sono riuscito a farla funzionare per Ctrl-Alt-Canc, in compenso funziona
per tutto il resto... perfino alt-printscreen e control-esc ! :-((
Se ci riesci tu, fammi sapere come hai fatto !
______________________
Private Declare Sub keybd_event Lib "user32" _
     (ByVal bVk As Byte, ByVal bScan As Byte, _
     ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_CONTROL = &H11
Private Const VK_DELETE = &H2E
Private Const VK_MENU = &H12
Private Const VK_ESCAPE = &H1B
______________________
Esempio per control-esc
______________________
keybd_event VK_CONTROL, 0, 0, 0  ' simula la pressione del tasto Control
keybd_event VK_ESCAPE, 0, 0, 0  ' simula la pressione del tasto Alt
keybd_event VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0  ' tasto Alt rilasciato
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0  ' tasto Del rilasciato
______________________
Bye, G.
--
---------------------------------------------
    Le risposte alle tue domande le trovi
    sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
       ... e nell'help in linea !
---------------------------------------------
Real E-address: 
gaet...@hotmail.com

 ______________________
Sorry.
P.S.: ho provato anche con SendKeys, non va neanche cosě. Brutta giornata, oggi.

...
Dovrebbe fare al caso tuo la chiamata API
Call ExitWindowsEx(param1, param2)
param1:
    EWX_FORCE& = 4
    EWX_REBOOT& = 2
    EWX_SHUTDOWN& = 1
param2:
    il secondo parametro e' ignorato.

 Quindi non so più come terminarlo!!!!
Soluzione più semplice: lanciando TaskMan.exe da Avvio-Esegui ?


Avevo provato anch'io con sendkeys ma niente da fare.
Grazie comunque.

Spaziale!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Mi insulterete ma non avevo mai visto questo taskman.
Grazie.