Word 2010 in GUI einbetten

  • Hallo,

    ich habe bis dato word 2003 genutzt und konnte mit diesem Codebeispiel (quick and dirty nur als Beispiel)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _IEErrorHandlerRegister ()

    [/autoit] [autoit][/autoit] [autoit]

    $oIE = _IECreateEmbedded ()
    GUICreate("Embedded Web control Test", 640, 580, _
    (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
    $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
    $GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 600, 360)
    GUISetState() ;Show GUI
    $file = "word file.doc"

    [/autoit] [autoit][/autoit] [autoit]

    _IENavigate ($oIE, $file)

    [/autoit] [autoit][/autoit] [autoit]

    ; Waiting for user to close the window
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    GUIDelete()

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    ein Word File innerhalb der Gui anzeigen. Leider funktioniert das mit word2010 nicht mehr. Hier erscheint ein prompt zum öffnen des Word files und dann geht Word2010 als eigenes Fenster auf. Weiß jemand rat, wie ich Word2010 in der GUI anzeigen kann?

    Entweder man kann in Word2010 hier etwas umstellen, dass es auch im Internet Explorer startet. Oder vielleicht kann man ja sonst irgendwie das Word file innerhalb der gui anzeigen.

    vielen Dank

    Bin für jeden Tipp dankbar.

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • habe den thread jetzt dreimal gelesen 8|
    Ich verstehe nicht was das mit meinem Problem zu tun hat? :whistling:


    Edit: unter XP habe ich die Lösung gefunden:

    Starten Sie Windows Explorer.
    Gehen Sie folgendermaßen vor, wenn Sie mit Microsoft Windows NT arbeiten:
    Klicken Sie im Menü Ansicht auf Optionen. Wenn Internet Explorer 4.0 installiert ist, klicken Sie auf Ordneroptionen.
    Klicken Sie im Dialogfeld Optionen auf die Registerkarte Dateitypen.
    Klicken Sie unter Registrierte Dateitypen auf Microsoft Word-Dokument und anschließend auf Bearbeiten.
    Gehen Sie folgendermaßen vor, wenn Sie mit Microsoft Windows 2000 oder einer höheren Windows-Version arbeiten:
    Klicken Sie im Menü Extras auf Ordneroptionen.
    Klicken Sie im Dialogfeld Ordneroptionen auf die Registerkarte Dateitypen.
    Klicken Sie unter Registrierte Dateitypen auf Microsoft Word-Dokument und anschließend auf Erweitert.
    Aktivieren Sie im Bild Dateityp bearbeiten das Kontrollkästchen Im selben Fenster durchsuchen, das festlegt, ob ein Word-Dokument außerhalb von Internet Explorer gestartet wird.
    Klicken Sie auf OK, um die Dialogfelder zu schließen.

    Unter Windows 7 ist es mal wieder vollständig anders :cursing:

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

    Einmal editiert, zuletzt von franzp (26. August 2011 um 15:45)

  • Weiß niemand wo sich die unten genannte einstellung von XP ind Windows 7 befindet ? :whistling:

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Diese Änderung gefiehl mir auch nicht beim Umstieg auf Win 7.

    Du kannst hier mal reinsehen:

    Systemsteuerung\Alle Systemsteuerungselemente\Standardprogramme

    (Kannst den Link genau wie er da steht in der Windows Explorer Adressleiste eingeben).

    Vllt wirst du fündig.

    Gruß

    Prajoss

    "Never touch a running System!"

  • Hallo Prajoss,

    danke für den Tipp. Leider war ich da auch schon :( Da es für windows 7 diese Funktion nicht mehr zu geben scheint, gibt es sogar ein extra tool mit dem man die Fuktion nachrüstet:
    http://www.extman.com/

    Aber leider fehlt auch hier das Kontrollkästchen "Im selben Fenster durchsuchen"

    Microsoft schafft es immer wieder :D

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • habe den thread jetzt dreimal gelesen 8|
    Ich verstehe nicht was das mit meinem Problem zu tun hat? :whistling:

    Na vielleicht auch mal den Anhang ansehen und das für den Wettbewerb eingereichte Script von stayawayknight bewundern? Was mit Notepad funktioniert wird wohl auch mit word und den meisten anderen Fenstern funktionieren:


    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <GuiConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;###Beispiel Start
    $gui = GUICreate("Gui", 300, 300, 50, 50) ;Erstellt eine Gui
    GUISetState(@SW_SHOW) ;Macht die Gui sichtbar
    $controlid = _Embedded_Create($gui, @SystemDir & "\notepad.exe", "[CLASS:Notepad]", 0, 0, 300, 300) ;erstellt ein eingebettetes Notepadfenster in der Gui
    Sleep(5000);Pausiert das Script 5 Sekunden lang
    _Embedded_Delete($controlid) ;Löscht das Notepadcontrol

    [/autoit] [autoit][/autoit] [autoit]

    Do ;Hält das Script offen bis die Gui beendet wird
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE
    Exit
    ;###Beispiel Ende

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Description: Bettet ein anderes Programm (.exe) in eine Gui ein
    ; Parameter(s): $hwnd - Handle der Gui
    ; $path - Pfad des zu einbettenden Programmes
    ; $title - Titel des Fensters des Programmes das eingebettet werden soll
    ; $x - X-Positon des Controls in der Gui
    ; $y - Y-Position des Controls in der Gui
    ; $width - Weite des Controls in der Gui
    ; $height - Höhe des Controls in der Gui
    ; Requirement(s): user32.dll
    ; Return Value(s): erolgreich: Control-ID für _Embedded Controls
    ; fehlgeschlagen: 0, @error auf 1
    ; Author(s): stayawayknight
    ;===============================================================================
    Func _Embedded_Create($hwnd, $path, $title, $x, $y, $width, $height)
    $pid = Run($path, "", @SW_HIDE)
    WinWait($title, "", 5)
    $handle = WinGetHandle($title, "")
    $style = DllCall("user32.dll", "int", "GetWindowLong", "hwnd", $handle, "int", 236)
    DllCall("user32.dll", "int", "SetWindowLong", "hwnd", $handle, "int", 236, "int", BitOR($style[0], $WS_EX_MDICHILD))
    DllCall("user32.dll", "int", "SetParent", "hwnd", $handle, "hwnd", $hwnd)
    WinMove($handle, "", $x, $y, $width, $height)
    WinSetState($handle, "", @SW_SHOW)
    If ProcessExists($pid) Then
    Return $pid & "|" & $title & "|" & $handle
    Else
    SetError(1)
    Return 0
    EndIf
    EndFunc ;==>_Embedded_Create

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Description: Löscht ein _Embedded Control
    ; Parameter(s): $id - Control-ID des zu löschenden _Embedded Controls
    ; Return Value(s): erolgreich: 1
    ; fehlgeschlagen: 0
    ; Author(s): stayawayknight
    ;===============================================================================
    Func _Embedded_Delete($id)
    Local $splitted = StringSplit($id, "|")
    If IsArray($splitted) Then
    ProcessClose($splitted[1])
    Return 1
    Else
    Return 0
    EndIf
    EndFunc ;==>_Embedded_Delete

    [/autoit]
  • Hallo,

    ja danke... ok das stand ich aufm Schlauch :whistling: Habe das ausprobiert. Das funktioniert mit allen Anwendungen, die ich getestet habe, außer Word 2010 :wacko:
    Word 2010 startet sich unbeeindruckt in einem neuen eigene Fenster.

    Aber Danke für die Hilfe. Das wäre genau gewesen was ich gesucht habe.

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---