Camping Skrevet 18. oktober 2006 Skrevet 18. oktober 2006 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?
backup Skrevet 19. oktober 2006 Skrevet 19. oktober 2006 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.
Camping Skrevet 19. oktober 2006 Forfatter Skrevet 19. oktober 2006 6.0 eller .NET? 7102155[/snapback] Det er i 6.0
HDSoftware Skrevet 19. oktober 2006 Skrevet 19. oktober 2006 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
Moskus Skrevet 19. oktober 2006 Skrevet 19. oktober 2006 Hvordan gjør du det med API da? (Trenger det til et annet prosjekt...)
backup Skrevet 19. oktober 2006 Skrevet 19. oktober 2006 Vil dette virke?? Hva hvis det er flere Notepads gående da? Alle notepad.exe blir avsluttet.
HDSoftware Skrevet 19. oktober 2006 Skrevet 19. oktober 2006 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
Moskus Skrevet 19. oktober 2006 Skrevet 19. oktober 2006 Det er forståelig nok til at jeg skal klare å finne ut av det. Takker!
backup Skrevet 19. oktober 2006 Skrevet 19. oktober 2006 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
HDSoftware Skrevet 19. oktober 2006 Skrevet 19. oktober 2006 Se det ;-) Der kom VB måten å bruke dem på git. Takker Ole
Moskus Skrevet 19. oktober 2006 Skrevet 19. oktober 2006 (endret) Bare et lite tips: ApiViewer er en god hjelp hvis man leter etter bestemte APIer. http://www.activevb.de/rubriken/apiviewer/...ng.html Endret 19. oktober 2006 av moskus
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå