Gå til innhold

Lukke program åpnet med Shell


Anbefalte innlegg

Skrevet

Finnes det en funksjon i vb som lukker et program jeg har åpnet fra applikasjonen min ved å bruke Shell. Programmet skal avsluttes uten at det er behov for å lagre.

 

Tips?

Videoannonse
Annonse
Skrevet

Her har du et eksempel i vb6 der shell-funksjonen avslutter notepad.exe.

 

Private Sub Command1_Click()

Shell "cmd /c TASKKILL /F /IM notepad.exe"

End Sub

 

Bytt ut notepad.exe med din egen exe-fil.

Skrevet
Her har du et eksempel i vb6  der shell-funksjonen avslutter notepad.exe.

 

Private Sub Command1_Click()

Shell "cmd /c TASKKILL /F /IM notepad.exe"

End Sub

 

Bytt ut notepad.exe med din egen exe-fil.

7102263[/snapback]

 

Vil dette virke?? Hva hvis det er flere Notepads gående da?

 

Tror måten må være å gjøre en enumerate på alle vinduer og sende EVENT:CloseApplication direkte til det aktuelle tråden. Jeg aner desverre ikke hvordan du gjør det i VB, men jeg vet hvordan du gjør det med API. Si ifra hvis dette er et alternativ for deg så skal jeg grave frem noen kall.

 

Ole

Skrevet
Hvordan gjør du det med API da? (Trenger det til et annet prosjekt...) ;)

7102325[/snapback]

 

Heisan

 

Sjekk ut disse API'ene så greier du sikkert finne ut hvordan du gjør det i VB

 

GetWindowText(UNSIGNED, *CSTRING, SIGNED),SIGNED, PASCAL, RAW, NAME("GetWindowTextA")

 

GetClassName(UNSIGNED, *CSTRING, SIGNED), SIGNED, PASCAL, RAW, NAME("GetClassNameA")

 

SendMessage(UNSIGNED, UNSIGNED, UNSIGNED, SIGNED, LONG), LONG, PASCAL, NAME("SendMessageA")

 

FindWindow(<*CSTRING lpClassName>, <*CSTRING lpWindowName>),HWND, RAW, PASCAL,NAME("FindWindowA")

 

Mulig jeg har glemt noen her, men ved hjelp av disse API skal du kunne finne finne det aktuelle vinduet og bruke SendMessage for å poste eventer til det. Det er mye morro du kan gjøre med disse API. F.eks. kan du endre innholdet i kontroller i andre kjørende programmer - hihi.

 

btw - beklager hvis prototypen er ukjent for deg. Dette er slik jeg prototyper det i Clarion, men jeg tror nok du finner ut av det ;-)

 

Ole

Skrevet

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _

(ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _

(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Const WM_CLOSE = &H10

 

Private Sub Command1_Click()

'Her avsluttes et vb exe-program som har

' Form1 som window caption

Dim ret As String

ret = "Form1"

WinWnd = FindWindow(vbNullString, ret)

SendMessage WinWnd, WM_CLOSE, 0, 0

End Sub

 

Private Sub Command2_Click()

'Her avsluttes et Notepad dokument som har

'test.txt - Notisblokk som window caption

Dim ret As String

ret = "test.txt - Notisblokk"

WinWnd = FindWindow(vbNullString, ret)

SendMessage WinWnd, WM_CLOSE, 0, 0

End Sub

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...