Fokus umsetzen nach Aufruf einer Shellanwendung

  • Ich habe einen "Assistenten" der eine Signaturdatei erstellt (für ne Art "corporate design"). Funktioniert nach Hilfe durch die Gemeinde mittlerweile auch gut.


    Um es meinen Nutzern einfacher zu machen habe ich eine readme Datei geschrieben die analog zu Windows-Assistenten beim Beenden angezeigt wird (klappt auch).


    Einziges unschönes Detail ist, dass die (pdf)-Readme-Datei durch einen Shellcommand geöffnet wird und sich dann im Hintergrund öffnet und somit von nicht so versierten Nutzern (für die die Datei ja gedacht ist) meist übersehen wird. Kann ich nach einem Shellaufruf den Fokus auf diese Anwendung (in diesem Fall adobe) setzen?


    Das Aufrufscript liest sich wie folgt:


    Sub Click(Source As Button)
    Dim ws As New notesuiworkspace
    Dim ui As notesuidocument
    Set ui=ws.currentdocument
    Dim taskId As Integer
    If ui.fieldgettext("Hilfe1")="Hilfe-Datei anzeigen" Then
    taskID% = Shell("C:\Program Files\Adobe\Acrobat 9.0\Acrobat\Acrobat.exe " & "h:\readme.pdf")
    End If
    Call ui.close


    End Sub

  • Hab mir das mal angeschaut, hänge aber leider schon wieder :(


    Ich deklariere die Funktionen FindWindow (um an das whnd - Handle zu kommen) und SetActiveWindow (bzw in einem zweiten Versuch BringWindowToTop):


    Declare Function BringWindowToTop Lib "user32.dll" (Byval hwnd As Integer) As Integer
    Declare Function FindWindow Lib "user32.dll" (Byval lpClassName As String, Byval lpWindowName As String) As Integer


    Danach rufe ich mit


    test=BringWindowToTop(FindWindow,"readme.pdf - Acrobat Reader")


    die Funktion auf.


    Dabei meckert Windows, das eine "external function" nicht gefunden wird.


    Was mache ich falsch?

    • Offizieller Beitrag

    bei shell gibt es noch einen 2. Parameter, der dies eigentlich tun sollte.


    Shell ( program [ , windowStyle ] )
    windowStyle:
    1,5 oder 9 ... SHELL_NORMAL_FOCUS
    2 ... SHELL_MIN_FOCUS
    3 ... SHELL_MAX_FOCUS
    4 oder 8 ... SHELL_NORMAL_NO_FOCUS
    6 oder 7 ... SHELL_MIN_NO_FOCUS


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein