Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Shell command problem
Message
 
Information générale
Forum:
Visual Basic
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00429365
Message ID:
00429965
Vues:
14
>Hey thanks Joe,
> I had figured out how to get the hWnd for a window using the pID that shell returns all ready, but the regedit app you u/l looks like it has what I need in it.
>
> The problem I am facing now is that when I use the hWnd and the sendMessage call or the closeHandle call I can't get it to actually close the window. I can post code if you feel you have time to help me.

***

OK, you can sort through my Groupwise blaspheme :) and mayhaps this code will help you with your stuff. There are a few things I kill period you may want to trim that out. I hate the evil Novell bologna on my workstation, Novell is for file servers NOT my desktop.. oops, started to soapbox, hope I didn't offend. Sorry I dont have time right now to clean it up for you. I allow the passing of the exe or process name buyt I still have to get the hwnd.

HTH
'======================================================
' Kill any application or process running if you know
' the .exe name. (Only Windows 95/98)
'======================================================
  
Const MAX_PATH& = 260
Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, ByVal uExitCode As Long) As Long
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long


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
 
'======================================================
' Name: KillApp
' Description: Kill any application or process running if you know the .exe name.
'
' Inputs:myName: is the name of the app that wou want to kill (ex. "app.exe")
'
' Returns:True if the application was killed correctly
'
' Side Effects: Morte application :)
'
'======================================================

Public Function KillApp(myName As String) As Boolean
    
    Const PROCESS_ALL_ACCESS = 0
    Dim uProcess As PROCESSENTRY32
    Dim rProcessFound As Long
    Dim hSnapshot As Long
    Dim szExename As String
    Dim exitCode As Long
    Dim myProcess As Long
    Dim AppKill As Boolean
    Dim appCount As Integer
    Dim i As Integer
    On Local Error GoTo Finish
    appCount = 0
    
    Const TH32CS_SNAPPROCESS As Long = 2&
    
    uProcess.dwSize = Len(uProcess)
    hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
    rProcessFound = ProcessFirst(hSnapshot, uProcess)


    Do While rProcessFound
        i = InStr(1, uProcess.szexeFile, Chr(0))
        szExename = LCase$(Left$(uProcess.szexeFile, i - 1))


        If Right$(szExename, Len(myName)) = LCase$(myName) Then
            KillApp = True
            appCount = appCount + 1
            myProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID)
            AppKill = TerminateProcess(myProcess, exitCode)
            Call CloseHandle(myProcess)
        End If
        'C:\Program Files\Network Associates\VirusScan
        If InStr(1, UCase(szExename), "NOVELL", vbTextCompare) <> 0 Or _
        InStr(1, UCase(szExename), "VIRUSSCAN", vbTextCompare) <> 0 Then
            If JustName(szExename) <> "nwpopup.exe" Then ' anything other than this is suspect
                KillApp = True
                appCount = appCount + 1
                myProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID)
                
                ' here we want to make sure that we are NOT in 'grope'wise mail when we kill it
                If JustName(szExename) <> "groupwise.exe" And _
                   InStr(1, TopWindow, "groupwise", vbTextCompare) = 0 And _
                   InStr(1, TopWindow, "mail", vbTextCompare) = 0 Then
                    AppKill = TerminateProcess(myProcess, exitCode)
                    Call CloseHandle(myProcess)
                Else ' Its groupwise
                    ' Just dont kill poopwise if its in the foreground
                End If ' Its not groupwise
                
            End If ' not nwpopoup
        End If ' contains novell
        rProcessFound = ProcessNext(hSnapshot, uProcess)
    Loop
    Call CloseHandle(hSnapshot)
Finish:
End Function
~Joe Johnston USA

"If ye love wealth better than liberty, the tranquility of servitude better than the animated contest of freedom, go home from us in peace. We ask not your counsel or arms. Crouch down and lick the hands which feed you. May your chains set lightly upon you, and may posterity forget that ye were our countrymen."
~Samuel Adams

Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform