Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
332to336
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
332to336
332to336
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

fenster aktivieren ohne genauen Fensternamen

fenster aktivieren ohne genauen Fensternamen
09.11.2003 19:15:24
chris b.
Hallo Excelprofis,
habe ein Problem und hoffe ihr könnt mir helfen,
es geht um diesen Code, mit dem code aktiviere ich mir Fenster und diese bleibenm dann dauerhaft im vordergrund.
das funktioniert auch mit diesem Beispiel wunderbar mit dem "rechner" weil der fenstername "rechner" ist .
Habe es jetzt aber bei mehreren anwendeungen gehabt das ich den korrekten Fensternamen eingebe und das Makro mir das Programm nicht in den vordergrund holt.
z.B habe ich das Problem bei ICQ und sonstigen chatfenstern.
Meine frage jetzt gibt es eine möglichkeit den fensternamen nicht 100% genau anzugeben und das makro sucht mir das fenster das am ehesten zutrifft ? In etwa so das Fenster heist genau
"Microsoft chat-fenster" und ich gebe nur an "Microsoft chat-" und das Makro erkennt automatisch das Fenster das aktiviert werden soll !?
Würde mich riesig freuen wenn es dafür eine lösung gibt.
habe einen Code der das sogar macht nur das Problem ist der code holt das fenster nur einmalig in den Vordergrund und sobald ich ein anderes fenster klicke ist es wieder im Hintergrund.
Das ist der code
"

Sub neu() AppActivate ("Rechner") End Sub
"

das ist der Code den ich umbauen möchte ->
Private Declare

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

Function SetWindowPos Lib "user32" _
(ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long

Sub vordergrung()
wHandle = FindWindow(vbNullString, "Rechner")
Call SetWindowPos(wHandle, -1, 0, 0, 0, 0, 3)
End Sub



Sub hintergrund()
wHandle = FindWindow(vbNullString, "Rechner")
Call SetWindowPos(wHandle, -2, 0, 0, 0, 0, 3)
End Sub


P.s Vielen dank für eure Hilfe !!!
Gruß Christian !

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

Betreff
Datum
Anwender
Anzeige
AW: fenster aktivieren ohne genauen Fensternamen
09.11.2003 20:31:48
Nepumuk
Hallo Christian,
ich habe da ein Programm geschrieben, das alle Namen der aktiven Anwendungen ermittelt. Das kannst du dir sicher so ummodeln, dass du durch einem Vergleich mit der InStr-Funktion oder dem Like-Operator den korrekten Namen ermitteln um ihn in deiner Funktion einzusetzen.


Option Explicit
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal wIndx As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hWnd As Long) 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 FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2
Const GWL_STYLE = (-16)
Const WS_VISIBLE = &H10000000
Const WS_BORDER = &H800000
Public Sub GetWindowList()
Dim hWnd As Long, sTitle As String, lStyle As Long
hWnd = GetWindow(FindWindow(ByVal 0&, ByVal 0&), GW_HWNDFIRST)
Do
lStyle = GetWindowLong(hWnd, GWL_STYLE) And (WS_VISIBLE Or WS_BORDER)
sTitle = GetWindowTitle(hWnd)
If (lStyle = (WS_VISIBLE Or WS_BORDER)) = True And Trim(sTitle) <> "" Then MsgBox sTitle
hWnd = GetWindow(hWnd, GW_HWNDNEXT)
Loop Until hWnd = 0
End Sub
Private Function GetWindowTitle(ByVal hWnd As Long) As String
Dim lResult As Long, sTemp As String
lResult = GetWindowTextLength(hWnd) + 1
sTemp = Space(lResult)
lResult = GetWindowText(hWnd, sTemp, lResult)
GetWindowTitle = Left(sTemp, Len(sTemp) - 1)
End Function



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige
AW: fenster aktivieren ohne genauen Fensternamen
10.11.2003 07:01:36
chris b
Danke Nepumuk, ich werde es versuchen und hoffe ich schaffe es, VBA kentnissen sollten soweit ausreichen, Hoffe ich :)))))

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige