Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - controllare esistenza processo
Forum - Visual Basic 6 - controllare esistenza processo

Avatar
fa1212 (Normal User)
Pro


Messaggi: 101
Iscritto: 09/10/2008

Segnala al moderatore
Postato alle 19:02
Venerdì, 20/11/2009
Salve a tutti, tempo fa su internet avevo trovato 5-6 righe di codice vb6 che permetevano di controllare se un processo era attivo e di terminarlo. Pultroppo ho smarrito il files e quindi mi apello a voi.

Non vorrei il seguente codice:

Codice sorgente - presumibilmente Visual Basic 6

  1. For Each obj In GetObject("winmgmts:").ExecQuery("select * fromWin32_Process WHERE Name='nomeprocesso.exe'")
  2.  
  3.      obj.Terminate
  4.  
  5. Next


perchè non mi permette di eseguire altre operazioni se il processo è stato trovato. (la mia esigenza sarebbe quella di mostrare una msgbox se un processo viene trovato attivo)

Grazie mille

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 19:25
Venerdì, 20/11/2009
in un array inserisci tutti i processi attivi e con un ciclo vedi se c'è anche quello ricercato...

Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2.  
  3. Private Const TH32CS_SNAPPROCESS = &H2
  4. Private Const MAX_PATH As Integer = 260
  5.  
  6. Private Type PROCESSENTRY32
  7. dwSize As Long
  8. cntUsage As Long
  9. th32ProcessID As Long
  10. th32DefaultHeapID As Long
  11. th32ModuleID As Long
  12. cntThreads As Long
  13. th32ParentProcessID As Long
  14. pcPriClassBase As Long
  15. dwFlags As Long
  16. szExeFile As String * MAX_PATH
  17. End Type
  18.  
  19. Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
  20. Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  21. Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  22. Private Declare Sub CloseHandle Lib "kernel32" (ByVal hObject As Long)
  23.  
  24. Private Sub Command1_Click()
  25. Dim hSnapShot As Long
  26. Dim uProcess As PROCESSENTRY32
  27. Dim lngRet As Long
  28. dim arr(1 to 100) as string, x as integer
  29.  
  30. hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&)
  31. uProcess.dwSize = Len(uProcess)
  32. lngRet = Process32First(hSnapShot, uProcess)
  33. lbprocessi.Clear
  34. Do While lngRet
  35. x = x + 1
  36. arr(x) = Left$(uProcess.szExeFile, InStr(1, uProcess.szExeFile, vbNullChar) - 1)
  37. lngRet = Process32Next(hSnapShot, uProcess)
  38. Loop
  39. CloseHandle hSnapShot
  40. end sub



il ciclo per il "controllo" implementalo tu...

PM Quote
Avatar
fa1212 (Normal User)
Pro


Messaggi: 101
Iscritto: 09/10/2008

Segnala al moderatore
Postato alle 19:42
Venerdì, 20/11/2009
LOL, sono un botto di righe di codice per controllare l'esistenza di un processo...
comunque grazie

Ultima modifica effettuata da fa1212 il 20/11/2009 alle 20:11
PM Quote
Avatar
fa1212 (Normal User)
Pro


Messaggi: 101
Iscritto: 09/10/2008

Segnala al moderatore
Postato alle 20:01
Venerdì, 20/11/2009
Grazie mille
Direi che ho trovato un alternativa valida, contrariamente a quanto detto, il codice che ho postato per primo se modificato funziona! non te la prendere XD, ero appena tornato da scuola ed ero alquanto rincoglionito!!:

Codice sorgente - presumibilmente VB.NET

  1. Dim Process, strObject
  2. strObject = "winmgmts://"
  3. For Each Process In GetObject(strObject).InstancesOf("win32_process")
  4. If Process.Name = "firefox.exe" Then
  5. MsgBox ("firefox is running.")
  6. End If
  7. Next


Ultima modifica effettuata da fa1212 il 20/11/2009 alle 20:09
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 10:46
Sabato, 21/11/2009
tranquillo, questa volta io volevo aiutare te, invece alla fine ti sei "aiutato" da solo e mi hai insegnato una cosa nuova =)

PM Quote
Avatar
fa1212 (Normal User)
Pro


Messaggi: 101
Iscritto: 09/10/2008

Segnala al moderatore
Postato alle 14:22
Domenica, 22/11/2009
XD
ricordati solo che siccome il codice utilizza le librerie winmgmt funzionerà automaticamente su tutti i pc con win xp o superiore mentre per gli altri sono da scaricare le librerie dal sito microsoft!

PM Quote