Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1864to1868
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Anwendung beenden mit Userform1

Anwendung beenden mit Userform1
24.01.2022 06:13:28
Oraculix
Hallo Alle!
In meiner Userform1 verwende ich die Windows Bildschirmlupe die per Comandbutton aufgerufen wird.
Frage:
Wie kann ich die Bildschirmlupe schließen wenn die Userform1 beendet wird?
'Userform1 beenden

Private Sub CommandButton19_Click()
Worksheets("FilmeAnsehen").Activate
Unload Me
End Sub
'Lupe wird Aufgerufen

Private Sub CommandButton23_Click()
Dim wsh As Object
Dim strProgramName As String
Set wsh = VBA.CreateObject("WScript.Shell")
wsh.Run "C:\WINDOWS\system32\Magnify.exe"
End Sub
Gruß
Oraculix

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anwendung beenden mit Userform1
24.01.2022 07:39:45
Oraculix
Danke für den Link.
Find nichts mit Unload me Aplication.
Ich Verstehe es halt nicht was dort steht.
Gruß
Oraculix
AW: Anwendung beenden mit Userform1
24.01.2022 08:35:14
volti
Hallo Oraculix,
hier zwei Möglichkeiten, externe Programme zu beenden.
Die feine Art mittels Senden einer Close-Message und die codesparende Holzhammermethode. Beides funktioniert.
Dazu wird der Caption der zu schließenden Anwendung benötigt und ich hoffe, dass ich ihn richtig getroffen habe.
Probiere es halt mal aus....
Code:

[Cc][+][-]

Private Declare PtrSafe Function FindWindowA Lib "user32" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function PostMessageA Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal wMsg As Long, _ ByVal wParam As LongPtr, _ ByVal lParam As LongPtr) As Long Private Const WM_CLOSE = &H10 Dim hwnd As LongPtr Sub AnwendungSchliessen1() ' Anwendung schließen hwnd = FindWindowA(vbNullString, "Bildschirmlupe") PostMessageA hwnd, WM_CLOSE, 0&, 0& End Sub ' ############################################################# Private Declare PtrSafe Function FindWindowA Lib "user32" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function DestroyWindow Lib "user32" ( _ ByVal hwnd As LongPtr) As Long Sub AnwendungSchliessen2() ' Anwendung schließen DestroyWindow FindWindowA(vbNullString, "Bildschirmlupe") End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Anwendung beenden mit Userform1
24.01.2022 09:13:00
Oraculix
Hallo Karl-Heinz Vielen Dank das mir Hilfst!
Ich habe beide Code versucht aber leider ohne Erfolg.
Den ersten Teil in die Userform1 ganz oben unter Option Explicit
'Das ist der Zweite Code auch in der Userform

Private Sub CommandButton19_Click()
hwnd = FindWindowA(vbNullString, "Bildschirmlupe")
PostMessageA hwnd, WM_CLOSE, 0&, 0&
Worksheets("FilmeAnsehen").Activate
Unload Me
Was mach ich da falsch?
Gruß
Oraculix
End Sub

AW: Anwendung beenden mit Userform1
24.01.2022 09:21:45
Rudi
Hallo,
schreib beide in ein Modul!
In der UF:

Private Sub CommandButton19_Click()
Call AnwendungSchliessen1
Worksheets("FilmeAnsehen").Activate
Unload Me
End Sub
Gruß
Rudi
Anzeige
AW: Anwendung beenden mit Userform1
24.01.2022 09:39:30
volti
Und nur eins von den beiden Codes, also entweder den Code vor den ' ### oder den Code nach den '### ins Modul.
Und die Declares nicht vergessen.
Gruß
Karl-Heinz
AW: Anwendung beenden mit Userform1
24.01.2022 09:55:48
Oraculix
Ja Danke hab ich so gemacht tut sich nix Bildschirmlupe bleibt geöffnet.
Gruß
Oraculix
AW: Anwendung beenden mit Userform1
24.01.2022 10:24:47
volti
Hallo Oraculix,
ja in der Tat schließt sich die Bildschirmlupe nicht, obwohl das Handle (also die Anwendung) gefunden wurde. Siehe Mustertestcode.
Da muss ich leider (vorerst) passen.
Code:

[Cc][+][-]

Private Declare PtrSafe Sub Sleep Lib "kernel32" ( _ ByVal dwMilliseconds As Long) Private Declare PtrSafe Function FindWindowA Lib "user32" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function PostMessageA Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal wMsg As Long, _ ByVal wParam As LongPtr, _ ByVal lParam As LongPtr) As Long Private Declare PtrSafe Function DestroyWindow Lib "user32" ( _ ByVal hwnd As LongPtr) As Long Private Const WM_CLOSE = &H10 Dim hwnd As LongPtr Sub AnwendungSchliessenTest() ' Anwendung schließen VBA.CreateObject("WScript.Shell").Run "C:&bsol;WINDOWS&bsol;system32&bsol;Magnify.exe" Sleep 5000 hwnd = FindWindowA(vbNullString, "Bildschirmlupe") If hwnd <> 0 Then Debug.Print hwnd ' PostMessageA hwnd, WM_CLOSE, 0&, 0& DestroyWindow hwnd Else MsgBox "Anwendung nicht gefunden!", vbCritical End If End Sub

_________________________
viele Grüße 😊
Karl-Heinz

Anzeige
AW: Anwendung beenden mit Userform1
24.01.2022 10:39:26
Nepumuk
Hallo,
so vielleicht? (Ist aber nicht ohne Nebenwirkungen)

Sub test2()
Dim objWMI As Object, objProcessList As Object, objProcess As Object
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objProcessList = objWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'Magnify.exe'")
For Each objProcess In objProcessList
Call objProcess.Terminate(0)
Next
Set objProcessList = Nothing
Set objWMI = Nothing
End Sub
Gruß
Nepumuk
Nepumuk hat es genial wie immer gelöst Danke!!
24.01.2022 12:13:29
Oraculix
Vielen Dank Nepumuk! Es geht alles
Nebenwirkung? Wo soll die kommen habe noch nichts bemerkt.
Gruß
Oraculix
Anzeige
AW: Nepumuk hat es genial wie immer gelöst Danke!!
24.01.2022 13:36:57
Nepumuk
Hallo,
bei mir wird der Bildschirmbereich in dem sich die Lupe befindet nicht freigegeben. Wenn es bei dir nicht so ist, dann ist es ja gut.
Gruß
Nepumuk
AW: Anwendung beenden mit Userform1
24.01.2022 12:15:06
Oraculix
Trotzdem Danke für Deine Mühe !
Problem durch Nepumik gelöst.
Gruß
Oraculix
AW: Anwendung beenden mit Userform1
24.01.2022 09:53:39
Oraculix
Danke auch Dir!
Aber Es bleibt trotzdem geöffnet.
Da stimmt was nicht mit dem Code glaub ich. Weil ich Windofs 11 64Bit benutze vielleicht liegt es daran?
Gruß
Oraculix
AW: Anwendung beenden mit Userform1
24.01.2022 11:42:11
volti
Nachtrag,
Weil ich Windoof 11 64Bit benutze vielleicht liegt es daran?
Nein, daran liegt es nicht. Der Code ist auch 64Bit-fähig.
Gruß KH
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige