Avatar billede kamak Praktikant
01. februar 2002 - 12:49 Der er 7 kommentarer og
1 løsning

Lukke et program

Jeg har et program som automatisk skal lukke et andet program når det startes!

Hvordan ser koden ud der lukker et andet program der køre.
Avatar billede kennethrisum Nybegynder
01. februar 2002 - 13:32 #1
Hvad ved du om programmet du skal lukke?

Instance, PID...?
Avatar billede sjh Nybegynder
01. februar 2002 - 13:41 #2
'----------------------------------------- Module1 -----------------------------------------
Option Explicit

Private Declare Function EnumWindows& Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam 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 IsWindowVisible& Lib "user32" (ByVal hwnd As Long)
Private Declare Function GetParent& Lib "user32" (ByVal hwnd As Long)

Dim sPattern As String, hFind As Long

Private Function FindActivateTitle(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim k As Long, sName As String
    If IsWindowVisible(hwnd) And GetParent(hwnd) = 0 Then
        sName = Space$(128)
        k = GetWindowText(hwnd, sName, 128)
        If k > 0 Then
            sName = Left$(sName, k)
            If lParam = 0 Then sName = UCase(sName)
            If sName Like sPattern Then
                hFind = hwnd
FindActivateTitle = 0
    Exit Function
End If
End If
End If
FindActivateTitle = 1
End Function

Function ActivateAppHwnd(sTitle As String, Optional sMatchCase As Boolean = True) As Long
sPattern = sTitle: hFind = 0
If Not sMatchCase Then sPattern = UCase(sPattern)
EnumWindows AddressOf FindActivateTitle, sMatchCase
ActivateAppHwnd = hFind
End Function
'----------------------------------------- Module1 -----------------------------------------


'----------------------------------------- Form1 -----------------------------------------
Option Explicit

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_CLOSE = &H10

Private Sub Timer1_Timer()
'lukker Microsoft Internet Explore
  PostMessage ActivateAppHwnd("*Microsoft Internet Explore*", False), WM_CLOSE, 0&, 0&
End Sub
'----------------------------------------- Form1 -----------------------------------------
Avatar billede kamak Praktikant
01. februar 2002 - 14:04 #3
Hvad er instance og PID?
Det er altid det samme program der skal og lukkes og det består kun af en exe-fil.
Avatar billede kamak Praktikant
03. februar 2002 - 18:46 #4
Jeg har forhøjet point for rigtig svar til 75!!! hjælp mig
Avatar billede kamak Praktikant
04. februar 2002 - 08:50 #5
sjh> det virker ikke!
Avatar billede kennethrisum Nybegynder
04. februar 2002 - 09:05 #6
Selvom det er det samme program, bliver det tildelt en ny handle hver gang det startes. Det er med det handle du kan lukke programmet. Problemet er bare at nogle programmer har et window handle (hWnd) mens andre kører med en Process ID (PID). Derfor er det vigtigt at vide hvilken type program det er du vil lukke. Er det et windows program eller er det en service?
Avatar billede sjh Nybegynder
04. februar 2002 - 13:43 #7
kamak >Det skulle funke hvis du har sat "Timer1.Interval = 10"

husk også at endre navnet til det vindue du vil lukke.

ActivateAppHwnd("*vindue navn*"....
Avatar billede kamak Praktikant
05. februar 2002 - 15:51 #8
sjh > det virker når

Private Sub Timer1_Timer()
ActivateAppHwnd("*Microsoft Internet Explore*", True),WM_CLOSE, 0&, 0&
End Sub

er sat til True. tak for hjælpen sjh.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester