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

Anwendung bereits geöffnet?

Anwendung bereits geöffnet?
27.05.2005 13:31:05
{Boris}
Hi Leute,
ich möchte gerne (VBA) wissen, ob ein bestimmtes IExplorer-Fenster bereits geöffnet ist?
Die gesuchte Fenster-Caption enthält einen eindeutigen Namen, z.B. das Wort XYZ.
Ist es bereits offen, dann möchte ich es gerne aktivieren, andernfalls erst öffnen und dann aktivieren.
Das sollte doch mit APIs möglich sein - ich weiss leider nur nicht welche.
Danke und Grüße
{Boris}

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Umstricken? Ich bin erschlagen...;-)
27.05.2005 15:05:12
{Boris}
Hi Meister,
...vielen Dank - aber das übersteigt leider meine Fähigkeiten.
Fängt schon damit an, dass ich mit der Variablen objPool nix anfangen kann.
Wäre es zu viel verlangt, wenn ich Dich frage, ob du es auf meine Belange abspecken kannst?
Danke und Grüße
Boris
AW: Umstricken? Ich bin erschlagen...;-)
27.05.2005 15:19:05
Nepumuk
Hi Boris,
das ganze ist eine Ergänzung des 5. Teils des Commandbartutorials.
http://www.online-excel.de/excel/singsel_vba.php?f=80
objPool ist eine Klasse die Variablen, Objekte und Klassen verwaltet. Peter hat nen schönen Spruch dazu geschrieben:
&gt&gtAber es ist sicherlich im Klassengedanken, dass du dies auch wieder in einer Klasse auslagerst und in den Klassen dann jeweils die Klasse ansprichst.&lt&lt
Was soll denn passieren, wenn die Seite gefunden wurde? Beep / Msgbox / Windows herunterfahren / Festplatte löschen Oder soll das ganze als Funktion True / False zurückliefern. Soll das ganze mit einem festen Suchbegriff oder per Parameterübergabe arbeiten?
Gruß
Nepumuk
Anzeige
Für meine Belange reicht der VW-Käfer...
27.05.2005 15:29:56
Boris
Hi Nepumuk,
...den Porsche brauch ich noch nicht ;-)
Wenn die Seite schon da ist, soll sie in der Vordergrund - wenn nicht, dann soll sie eben geöffnet werden.
Der Suchbegriff enthält als eindeutiges Merkmal den Begriff XYZ und kann ruhig statisch bleiben.
Grüße Boris
AW: Für meine Belange reicht der VW-Käfer...
27.05.2005 16:08:05
Nepumuk
Hi Boris,
also gut, dann die Kindergartentaugliche Version:


Option Explicit
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As StringAs Long
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" ( _
    ByVal hWnd As Long, _
    ByVal lpString As String, _
    ByVal cch As LongAs Long
Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" ( _
    ByVal hWnd As Long, _
    ByVal lpClassName As String, _
    ByVal nMaxCount As LongAs Long
Private Declare Function GetWindow Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal wCmd As LongAs Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" ( _
    ByVal hWnd As Long, _
    ByVal nIndex As LongAs Long
Private Declare Function GetWindowTextLength Lib "user32.dll" Alias "GetWindowTextLengthA" ( _
    ByVal hWnd As LongAs Long
Private Declare Function SetWindowPos Lib "user32.dll" ( _
     ByVal hWnd As Long, _
     ByVal hWndInsertAfter As Long, _
     ByVal As Long, _
     ByVal As Long, _
     ByVal cx As Long, _
     ByVal cy As Long, _
     ByVal wFlags As LongAs Long
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_SHOWWINDOW = &H40
Private Const GW_HWNDFIRST = 0
Private Const GW_HWNDNEXT = 2
Private Const GWL_STYLE = -16
Private Const WS_VISIBLE = &H10000000
Private Const WS_BORDER = &H800000
Private Const MAX_COUNT = 256
Private Const gcClassnameMSIExplorer = "IEFrame"
Public Sub prcForumssearch()
    Const strSearch = "herbers"
    Dim lnghWnd As Long, lngStyle As Long, lngReturn As Long
    Dim strClassName As String, strTitle As String
    strClassName = Space$(MAX_COUNT)
    lnghWnd = GetWindow(FindWindow(vbNullString, vbNullString), GW_HWNDFIRST)
    Do
        lngStyle = GetWindowLong(lnghWnd, GWL_STYLE) And (WS_VISIBLE Or WS_BORDER)
        If lngStyle = (WS_VISIBLE Or WS_BORDER) Then
            lngReturn = GetClassName(lnghWnd, strClassName, MAX_COUNT)
            If Left$(strClassName, lngReturn) = gcClassnameMSIExplorer Then
                strTitle = LCase$(Trim$(GetWindowTitle(lnghWnd)))
                If InStr(1, strTitle, strSearch) <> 0 Then
                    SetWindowPos lnghWnd, HWND_TOPMOST, 0, 0, 0, 0, _
                        SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW
                    SetWindowPos lnghWnd, HWND_NOTOPMOST, 0, 0, 0, 0, _
                        SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW
                Else
                
'                    hier kommt dein Code zum öffnen der Site
'                    ein bsschen darfst du auch noch dran basteln
                End If
            End If
        End If
        lnghWnd = GetWindow(lnghWnd, GW_HWNDNEXT)
    Loop Until lnghWnd = 0
End Sub
Private Function GetWindowTitle(ByVal lnghWnd As LongAs String
    Dim lngReturn As Long, strTemp As String
    lngReturn = GetWindowTextLength(lnghWnd) + 1
    strTemp = Space$(lngReturn)
    GetWindowText lnghWnd, strTemp, lngReturn
    GetWindowTitle = Left$(strTemp, Len(strTemp) - 1)
End Function


Gruß
Nepumuk
Anzeige
Immer diese Kindergarten-Lösungen...
27.05.2005 16:37:10
{Boris}
Hi Nepumuk,
...dass ich da nicht selbst drauf gekommen bin...:-p
Funktioniert - wie nicht anders zu erwarten - tadellos!
Mit verneigtem Haupt und besten Dank!
Grüße Boris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige