Visualizzazione dei risultati da 1 a 4 su 4

Discussione: killare processo

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    379

    killare processo

    Come si fa a killare un programma?
    In poche parole devo creare 2 programmi:

    uno che svolge le funzioni da me richieste
    e l'altro che semplicemente chiude e riapre il programma uno
    ogni 10 minuti

    come si fa?

    postate pls!!
    StripMAN

  2. #2
    Utente di HTML.it L'avatar di Grunt
    Registrato dal
    Dec 2001
    Messaggi
    246
    In un modulo:
    codice:
    Option Explicit
    
    'Chiude un programma.
    
    Private Type THREADENTRY32
        dwSize              As Long
        cntUsage            As Long
        th32ThreadID        As Long
        th32OwnerProcessID  As Long
        tpBasePri           As Long
        tpDeltaPri          As Long
        dwFlags             As Long
    End Type
    Private Const TH32CS_SNAPTHREAD As Long = &H4&
    
    Private Const WM_QUIT As Long = &H12
    
    Private Declare Function FindWindow Lib "User32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function GetWindowThreadProcessId Lib "User32.dll" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    
    Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32.dll" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
    Private Declare Function Thread32First Lib "Kernel32.dll" (ByVal HSnapShot As Long, ByRef EntryModule As THREADENTRY32) As Long
    Private Declare Function Thread32Next Lib "Kernel32.dll" (ByVal HSnapShot As Long, ByRef EntryModule As THREADENTRY32) As Long
    
    Private Declare Function PostThreadMessage Lib "User32.dll" Alias "PostThreadMessageA" (ByVal idThread As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    
    Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal hObject As Long) As Long
    Dove ti serve:
    codice:
    Function CloseProcess(pID As Long) As Boolean
        'Chiude tutti i thread del processo.
        Dim EntryThread As THREADENTRY32
        Dim HSnapShot As Long, RetVal As Long
        'Recupera tutti i thread del processo.
        HSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, pID)
        If HSnapShot <> -1 Then
            EntryThread.dwSize = Len(EntryThread)
            RetVal = Thread32First(HSnapShot, EntryThread)
            Do While RetVal
                If EntryThread.th32OwnerProcessID = pID Then
                    'Invia il messaggio di chiusura.
                    Call PostThreadMessage(EntryThread.th32ThreadID, WM_QUIT, 0, 0)
                End If
                RetVal = Thread32Next(HSnapShot, EntryThread)
            Loop
            Call CloseHandle(HSnapShot)
        End If
    End Function
    Per cercare il processo:
    codice:
    Private Sub CloseWindProc(sText As String)
        'Chiude la finestra specificata.
        Dim H As Long, ID As Long
        'Recupera l'handle della finestra.
        H = FindWindow(vbNullString, sText)
        'Recupera l'identificatore del thread associato alla finestra.
        Call GetWindowThreadProcessId(H, ID)
        If MsgBox("Chiudere '" & sText & "'?", vbInformation Or vbYesNo, "Chiudi Processo") = vbYes Then CloseProcess (ID)
    End Sub
    Spero fosse quello che cercavi

  3. #3
    anche se ho aperto un topic...
    forse voi mi potete aiutare..
    ho visto come posso lanciare un .exe dalla mia applicazione vb
    pero ho un bug
    perchè se faccio ..
    shell(primo.exe)
    shell(sec.bat)
    mi partono in contemporanea.
    poiche il primo.exe è l'installazione della jdk
    e il secondo è l'installazione di un jar.
    vorrei sapere è possibile far partire shell(sec.bat) solo che dopo
    shell(primo.exe) af finito il suo.
    Prementto che di di vb non ne capisco molto.
    grazie
    Giralatina.it e’ nato con il preciso intento di promuovere varie attività che si svolgono nella provincia di Latina.

    E’ diviso in varie sezioni che spaziano passando dalla gastronomia, al benessere, alla vita notturna ed ai vari negozi da visitare. Le diverse sezioni renderanno più semplice la consultazione ai visitatori.

  4. #4
    Utente di HTML.it L'avatar di Grunt
    Registrato dal
    Dec 2001
    Messaggi
    246
    codice:
    Public Sub ExecCmd(cmdline$)
            Dim proc As PROCESS_INFORMATION
            Dim start As STARTUPINFO
            
            'Inizializza la struttura STARTUPINFO:
            start.cb = Len(start)
            
            'Inizia l'applicazione shelled:
            ret& = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
            
            'Attende che shelled application finisca:
            ret& = WaitForSingleObject(proc.hProcess, INFINITE)
            ret& = CloseHandle(proc.hProcess)
    End Sub
    Per lanciare un prog fai
    codice:
    ExecCmd "mioprog.exe"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.