none
VBA API Get Window Suche Programmname Powerpoint RRS feed

  • Frage

  • Hallo Experten,

    ich suche verzweifelt nach einer einfachen Lösung, um festzustellen, ob Powerpoint 2000 bzw. Powerpoint 2003 bereits geladen ist.

    Für Excel geht das z.B. so:

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

    If FindWindow("XLMAIN", vbNullString) Then ....

    Aber wie lautet der Suchstring für Powerpoint ?

    Oder, anders gefragt:

    Bei meinen diesbezüglichen Recherchen im Web ersticke ich in einer API-Flut von EnumWindows, GetClassName, hwnd, GetWindowText, etc. etc. mit Dutzenden von unverständlichen Beispielen.

    Gibt es einen Link, wo das alles mal kurz oder übersichtlich *verständlich* beschrieben ist?

    Danke für Tipps

    Raimund Gryszik, Berlin

    Freitag, 10. Dezember 2010 09:17

Antworten

  • Hallo!

    IT-Designer schrieb:

    ich suche verzweifelt nach einer einfachen Lösung, um festzustellen, ob Powerpoint 2000 bzw. Powerpoint 2003 bereits geladen ist.

    Für Excel geht das z.B. so:

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

    If FindWindow("XLMAIN", vbNullString) Then ....

    Aber wie lautet der Suchstring für Powerpoint ?

    Reicht GetObject nicht aus?

    GetObject(,"PowerPoint.Application")

    Beachte: Das löst einen Fehler aus, wenn PowerPoint nicht geladen ist. => Fehler abfangen

    Private Function IsLoaded(ByVal ProgID As String, _
                     Optional ByRef obj As Object = Nothing) As Boolean
       On Error Resume Next
       Set obj = GetObject(, ProgID)
       On Error GoTo 0
       IsLoaded = Not (obj Is Nothing)
    End Function

    Anwendung:

    If IsLoaded("PowerPoint.Application") then ...

    oder

    dim powerPointApplication as Object
    If IsLoaded("PowerPoint.Application", powerPointApplication) then
       macEtwasMit powerPointApplication
    end If

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    • Als Antwort markiert IT-Designer Freitag, 10. Dezember 2010 10:38
    Freitag, 10. Dezember 2010 09:44

Alle Antworten

  • Hallo!

    IT-Designer schrieb:

    ich suche verzweifelt nach einer einfachen Lösung, um festzustellen, ob Powerpoint 2000 bzw. Powerpoint 2003 bereits geladen ist.

    Für Excel geht das z.B. so:

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

    If FindWindow("XLMAIN", vbNullString) Then ....

    Aber wie lautet der Suchstring für Powerpoint ?

    Reicht GetObject nicht aus?

    GetObject(,"PowerPoint.Application")

    Beachte: Das löst einen Fehler aus, wenn PowerPoint nicht geladen ist. => Fehler abfangen

    Private Function IsLoaded(ByVal ProgID As String, _
                     Optional ByRef obj As Object = Nothing) As Boolean
       On Error Resume Next
       Set obj = GetObject(, ProgID)
       On Error GoTo 0
       IsLoaded = Not (obj Is Nothing)
    End Function

    Anwendung:

    If IsLoaded("PowerPoint.Application") then ...

    oder

    dim powerPointApplication as Object
    If IsLoaded("PowerPoint.Application", powerPointApplication) then
       macEtwasMit powerPointApplication
    end If

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    • Als Antwort markiert IT-Designer Freitag, 10. Dezember 2010 10:38
    Freitag, 10. Dezember 2010 09:44
  • Danke Josef,

    super, super! Das war genau das, was ich gesucht habe.

    Raimund

     

    Freitag, 10. Dezember 2010 09:56