Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Frage zu API Funktionen Sendmessage

Forumthread: Frage zu API Funktionen Sendmessage

Frage zu API Funktionen Sendmessage
28.07.2005 07:38:05
Sylvio
Guten Morgen liebes Forum,
ich hab mir mit den API Funktionen ne Fensterabfrage gebastelt.
nun zu meinem Problem VBA findet zwar das Fenster, aber
wenn ich mit SendMessage versuche das Fenster zu schließen dann geht das nicht
ich hab das fenster über API Getwindow und seinen entsprechenden Titel gefunden.
also hwnd ist bereits richtig gefüllt.
GetClassName funktioniert auch lReturn erhält Wert
Option Explicit
...
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_SYSCOMMAND = &H112
Const SC_CLOSE = &HF060
Const LNULL = 0&

Sub Schließen ()
Dim lReturn As Long
lReturn = GetClassName(hwnd, lpClassName, 256)
lReturn = SendMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, LNULL)
End Sub

Er führt SendMessage aus und lReturn ist dann null aber das gefundene Fenster ist immer noch offen.
Wer kann helfen?
Danke Sylvio
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage zu API Funktionen Sendmessage
28.07.2005 11:05:23
bst
Hallo Sylvio,
vielleicht reagiert das Teil ja einfach nicht auf SC_CLOSE wie z.B. Notepad.
Versuch's vielleicht mal mit WM_CLOSE.
cu, Bernd
--
Option Explicit

Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
   (ByVal lpClassName As String, ByVal lpWindowName As String) As Long


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_SYSCOMMAND = &H112
Const SC_CLOSE = &HF060
Const WM_CLOSE = &H10
Const LNULL = 0&

Sub Schließen()
   Dim lReturn As Long
   Dim hwnd As Long
   
   ' das geht
   hwnd = FindWindow("IEFrame", vbNullString)
   If hwnd Then lReturn = SendMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, LNULL)
   
   ' das nicht
   hwnd = FindWindow("Notepad", vbNullString)
   If hwnd Then lReturn = SendMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, LNULL)
   
   ' aber das wieder
   hwnd = FindWindow("Notepad", vbNullString)
   If hwnd Then lReturn = SendMessage(hwnd, WM_CLOSE, LNULL, LNULL)
End Sub

Anzeige
SUPER SO GEHTS DANKE DANKE BST o.w.t
28.07.2005 12:05:18
Sylvio
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige