Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB] Chiudere applicazione !!!

    Come posso comandare tramite VB la chiusura di un'applicazione per esempio notepad?

  2. #2
    nn so dirti esattamente quali ma cmq devi usare delle api
    prima devi trovare l'handle (l'identificatore) del programma (e questo con le api (se invece l'hai aperto te con Shell basta che prendi l'handle che ti da quando lo lanci) e con un altra api poi lo chiudi

    volevo smeplicemente farti luce, quali siano le api ora nn te lo so dire am con una ricerca su internet le trovi (prova a guardare su www.programmazione.it)

    byez
    Il Ticino è biancoblù
    DVDS delegato ufficiale

  3. #3

    Re: [VB] Chiudere applicazione !!!

    Originariamente inviato da Miky-SilentBoB
    Come posso comandare tramite VB la chiusura di un'applicazione per esempio notepad?
    Questo discorso vale solo se sei tu a lanciare l'applicativo che vuoi successivamente chiudere...
    Quando lanci l'applicativo lancialo così:

    Ti metto tutto il codice...
    __________________________________________________ _________________

    Option Explicit

    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    Private Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
    Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
    Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long

    Private Const STILL_ACTIVE = &H103
    Private Const PROCESS_QUERY_INFORMATION = &H400
    Private Const SYNCHRONIZE = &H100000

    Public Const WAIT_FAILED = -1& 'Error on call
    Public Const WAIT_OBJECT_0 = 0 'Normal completion
    Public Const WAIT_ABANDONED = &H80& '
    Public Const WAIT_TIMEOUT = &H102& 'Timeout period elapsed
    Public Const IGNORE = 0 'Ignore signal
    Public Const INFINITE = -1& 'Infinite timeout

    Public Const SW_HIDE = 0
    Public Const SW_SHOWNORMAL = 1
    Public Const SW_SHOWMINIMIZED = 2
    Public Const SW_SHOWMAXIMIZED = 3
    Public Const SW_SHOWNOACTIVATE = 4
    Public Const SW_SHOW = 5
    Public Const SW_MINIMIZE = 6
    Public Const SW_SHOWMINNOACTIVE = 7
    Public Const SW_SHOWNA = 8
    Public Const SW_RESTORE = 9

    Private Const WM_CLOSE = &H10
    Private Const GW_HWNDNEXT = 2
    Private Const GW_OWNER = 4

    __________________________________________________ _________________

    Public Function ShellAndWait(ByVal JobToDo As String, Optional ExecMode, Optional TimeOut) As Long

    Dim ProcessID As Long
    Dim hProcess As Long
    Dim nRet As Long
    Const fdwAccess = SYNCHRONIZE

    If IsMissing(ExecMode) Then
    ExecMode = vbMinimizedNoFocus
    Else
    If ExecMode < vbHide Or ExecMode > vbMinimizedNoFocus Then
    ExecMode = vbMinimizedNoFocus
    End If
    End If

    On Error Resume Next
    ProcessID = Shell(JobToDo, CLng(ExecMode))
    If Err Then
    ShellAndWait = vbObjectError + Err.Number
    Exit Function
    End If
    On Error GoTo 0

    If IsMissing(TimeOut) Then
    TimeOut = INFINITE
    End If

    hProcess = OpenProcess(fdwAccess, False, ProcessID)
    nRet = WaitForSingleObject(hProcess, CLng(TimeOut))
    Call CloseHandle(hProcess)

    Select Case nRet
    Case WAIT_TIMEOUT: Debug.Print "Timed out!"
    Case WAIT_OBJECT_0: Debug.Print "Normal completion."
    Case WAIT_ABANDONED: Debug.Print "Wait Abandoned!"
    Case WAIT_FAILED: Debug.Print "Wait Error:"; Err.LastDllError
    End Select
    ShellAndWait = nRet
    End Function

    __________________________________________________ _________________

    Public Function ShellAndLoop(ByVal JobToDo As String, Optional ExecMode) As Long

    Dim ProcessID As Long
    Dim hProcess As Long
    Dim nRet As Long
    Const fdwAccess = PROCESS_QUERY_INFORMATION

    If IsMissing(ExecMode) Then
    ExecMode = vbMinimizedNoFocus
    Else
    If ExecMode < vbHide Or ExecMode > vbMinimizedNoFocus Then
    ExecMode = vbMinimizedNoFocus
    End If
    End If

    On Error Resume Next
    ProcessID = Shell(JobToDo, CLng(ExecMode))
    If Err Then
    ShellAndLoop = vbObjectError + Err.Number
    Exit Function
    End If
    On Error GoTo 0

    hProcess = OpenProcess(fdwAccess, False, ProcessID)
    Do
    GetExitCodeProcess hProcess, nRet
    DoEvents
    Sleep 100
    Loop While nRet = STILL_ACTIVE
    Call CloseHandle(hProcess)

    ShellAndLoop = nRet
    End Function

    __________________________________________________ _________________

    Public Function ShellAndClose(ByVal JobToDo As String, Optional ExecMode) As Long

    Dim ProcessID As Long
    Dim PID As Long
    Dim hProcess As Long
    Dim hWndJob As Long
    Dim nRet As Long
    Dim TitleTmp As String
    Const fdwAccess = PROCESS_QUERY_INFORMATION

    If IsMissing(ExecMode) Then
    ExecMode = vbMinimizedNoFocus
    Else
    If ExecMode < vbHide Or ExecMode > vbMinimizedNoFocus Then
    ExecMode = vbMinimizedNoFocus
    End If
    End If

    On Error Resume Next
    ProcessID = Shell(JobToDo, CLng(ExecMode))
    If Err Then
    ShellAndClose = vbObjectError + Err.Number
    Exit Function
    End If
    On Error GoTo 0

    hWndJob = FindWindow(vbNullString, vbNullString)
    Do Until hWndJob = 0
    If GetParent(hWndJob) = 0 Then
    Call GetWindowThreadProcessId(hWndJob, PID)
    If PID = ProcessID Then Exit Do
    End If
    hWndJob = GetWindow(hWndJob, GW_HWNDNEXT)
    Loop

    hProcess = OpenProcess(fdwAccess, False, ProcessID)
    Do
    TitleTmp = Space(256)
    nRet = GetWindowText(hWndJob, TitleTmp, Len(TitleTmp))
    If nRet Then
    TitleTmp = UCase(Left(TitleTmp, nRet))
    If InStr(TitleTmp, "FINISHED") = 1 Then
    Call SendMessage(hWndJob, WM_CLOSE, 0, 0)
    End If
    End If

    GetExitCodeProcess hProcess, nRet
    DoEvents
    Sleep 100
    Loop While nRet = STILL_ACTIVE
    Call CloseHandle(hProcess)

    ShellAndClose = nRet
    End Function

    __________________________________________________ _________________


    Public Function hWndShell(ByVal JobToDo As String, Optional ExecMode) As Long

    Dim ProcessID As Long
    Dim PID As Long
    Dim hProcess As Long
    Dim hWndJob As Long

    If IsMissing(ExecMode) Then
    ExecMode = vbMinimizedNoFocus
    Else
    If ExecMode < vbHide Or ExecMode > vbMinimizedNoFocus Then
    ExecMode = vbMinimizedNoFocus
    End If
    End If

    On Error Resume Next
    ProcessID = Shell(JobToDo, CLng(ExecMode))
    If Err Then
    hWndShell = 0
    Exit Function
    End If
    On Error GoTo 0

    hWndJob = FindWindow(vbNullString, vbNullString)
    Do While hWndJob <> 0
    If GetParent(hWndJob) = 0 Then
    Call GetWindowThreadProcessId(hWndJob, PID)
    If PID = ProcessID Then
    hWndShell = hWndJob
    Exit Do
    End If
    End If
    hWndJob = GetWindow(hWndJob, GW_HWNDNEXT)
    Loop
    End Function





    Ciao
    Diego
    Son del Canavese..come tanti qui

  4. #4
    Ho risposto a questa domanda tempo fa. Ti rimando al topic.
    Clicca QUI

    Ciao
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  5. #5

    Thanks

    grazie dell'aiuto!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.