Missione impossibile Visual Basic

di il
3 risposte

Missione impossibile Visual Basic

Urgente:
come faccio a capire se un programma VB compilato è o meno impiantato?
Non esiste un api in grado di dirmi che un eseguibile non risponde...??!!??!!

Grazie

fabio

3 Risposte

  • Re: Missione impossibile Visual Basic

    Che vuoi dire con "impiantato"?
    Vuoi sapere se è in esecuzione? installato?

    Nel primo caso ci sono una serie di api per sapere se il programma sta girando (dalle più semplici se hai tutte le informazioni possibili sul programma incriminato alle più complicate se hai,ad esempio, solo il nome che appare sulla barra del titolo). Dovrebbero essere funzioni della shell32.dll, magari prova a cercare qualcosa sui "process".

    Nel secondo caso l'unico sistema (a meno che il programma non abbia indicato il suo path in qualche file .ini o nel registro) è una bella scansione di tutto l'hard disk, al limite una volta sola...

    Ciaociao :)

    Venite a visitarci qui: http://spazioinwind.libero.it/bottomapsoftware
  • Re: Missione impossibile Visual Basic

    Intendevo dire proprio se l'eseguibile sta o meno "girando".
    grazie

    fabio
  • Re: Missione impossibile Visual Basic

    Puoi fare ricorso al task manager e vedere tutte le applicazioni in esecuzione...ma non credo che non ci avevi pensato. Se invece ti interessa il codice in Vb che visualizza (e permette anche di avviare i processi attivi ecco qui:

    Option Explicit
    Public Const TH32CS_SNAPPROCESS As Long = 2&
    Public Const MAX_PATH As Integer = 260
    Public Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long
    th32DefaultHeapID As Long
    th32ModuleID As Long
    cntThreads As Long
    th32ParentProcessID As Long
    pcPriClassBase As Long
    dwFlags As Long
    szExeFile As String * MAX_PATH
    End Type
    Public Declare Function CreateToolhelpSnapshot Lib "Kernel32" _
    Alias "CreateToolhelp32Snapshot" _
    (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
    Public Declare Function ProcessFirst Lib "Kernel32" _
    Alias "Process32First" _
    (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
    Public Declare Function ProcessNext Lib "Kernel32" _
    Alias "Process32Next" _
    (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
    Public Declare Sub CloseHandle Lib "Kernel32" _
    (ByVal hPass As Long)
    'Add the following code to the form:
    Private Sub Command1_Click()
    Dim hSnapShot As Long
    Dim uProcess As PROCESSENTRY32
    Dim r As Long
    hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
    If hSnapShot = 0 Then Exit Sub
    uProcess.dwSize = Len(uProcess)
    r = ProcessFirst(hSnapShot, uProcess)
    Do While r
    List1.AddItem uProcess.szExeFile
    r = ProcessNext(hSnapShot, uProcess)
    Loop
    Call CloseHandle(hSnapShot)
    End Sub

    Ciao

    sergio
Devi accedere o registrarti per scrivere nel forum
3 risposte