PDA

View Full Version : [VBScript]Chiudere un processo non terminandolo brutalmente.


AlexGatti
31-07-2006, 14:07
Ho un file .vbs che deve elencare e chiudere una serie di processi ed è fatto così:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
penletter=Lcase(mid(wscript.scriptfullname,1,1))
'wscript.echo "driveletter=" +penletter
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process where Name<>'pstart.exe'")
For Each objProcess in colProcesses
if Lcase(mid(objProcess.ExecutablePath,1,1))=penletter then
objProcess.Terminate
end if
Next

Il fatto è che objprocess.Terminate termina un processo senza chiedere nulla a nessuno, ovvero se il processo in questione è un Notepad con un file aperto non salvato, il notepad non chiede se si vuole salvare il file.
Quel che mi interessa fare non è terminare il processo, ma inviare una richiesta di chiusura al processo stesso e aspettare fin quando l'utente non ha "finito" ad esempio salvando il file.
Sapete per caso come fare?

cionci
31-07-2006, 20:15
Dovresti inviare all'applicazione il messaggio WM_QUIT, il problema è che poi l'applicazione potrebbe visualizzare un messaggio per la conferma della chiusura...

AlexGatti
31-07-2006, 23:50
Dovresti inviare all'applicazione il messaggio WM_QUIT, il problema è che poi l'applicazione potrebbe visualizzare un messaggio per la conferma della chiusura...

Ma quello non è un problema, è proprio l'effetto che voglio ottenere, ovvero non voglio tagliar l'erba sotto i piedi all'applicazione, ma voglio chiederle educatamente di chiudersi... e magare aspettare che si sia chiusa prima di fare lo stesso con la successiva.

Però come lo faccio in Vbscript magari appoggiandomi su WSH?

cionci
01-08-2006, 07:28
Vedo che stai usando VBScript...a questo punto mi sorge una domanda... Ma da VBScript puoi usare le API di Windows ? In tal caso la soluzione sarebbe relativamente semplice...

AlexGatti
01-08-2006, 08:56
Vedo che stai usando VBScript...a questo punto mi sorge una domanda... Ma da VBScript puoi usare le API di Windows ? In tal caso la soluzione sarebbe relativamente semplice...

Acc... non credo, o meglio, usare le Api di windows non credo sia una cosa semplice da Vbscript.
Non è che io sia un esperto di Vbscript (lavoro in c#) ma sto cercando di documentarmi.