Send Key Probleme

  • Hi Leute,

    ich hab aktuell ein nerviges Problem mit Send()

    und zwar habe ich folgendes programm (leider nur pseudokode bin unterwegs :) )

    word öffnen
    datei öffnen
    PDF macro anschmeißen

    hier kommt dann das problem

    wenn ein PDF erstellt werden soll wird gefragt ob man speichern möchte, dazu geht save file as auf, dies muss man einfach nur mit enter bestätigen.

    Das Problem ist dass manchmal klappt es manchmal nicht, wenn es nicht klappt und ich mit der Maus auf speichern klicke lläuft das script weiter ...

    gibt es die möglichkeit das subfenster (save file as) abzufragen ob es existiert? weil es ist ja kein eigenes richtiges fenster wo ich mit WinExists ran komme oder?

    hat mir jemand eine Idee woran das liegen könnte oder wie ich das Problem das nicht immer Enter gedrückt wird lösen könnte?


    also mit sleep hab ich schon genügend experimentiert damit komm ich nicht weiter das ändert nichts an dem komischen verhalten ...

    Grüße

  • Schau dir mal das Programm Au3Info.exe(wird in der AutoIt Installation mitgeliefert) an.
    Dann probiers nochmal mit WinExists. Wenn es damit nicht klappt kannst du es auch mit WinWaitActive versuchen.

    Um Enter zu ersetzen kannst du dir mal ControlClick anschauen.

    ~IRC: irc.afterworkchat.de #autoit

    Einmal editiert, zuletzt von Photon (18. November 2013 um 08:58)

  • Mein ansatz währe mit ObjCreate()

    Achtung! Code ist nicht getestet habe hier zur zeit keinen zugriff auf AutoIt und kann den code daher nicht testen

    Spoiler anzeigen
    [autoit]


    Local $sFilePath = "Path\to\Your\File.doc" ;Hier den Pfad deiner .doc Angeben
    Local $sSavePath = "Path\for\your\New\File.pdf" ;Hier den Zielpfad deiner PDF angeben
    Local $oWord = ObjCreate("Word.Application") ;Hier wird das MSWord Object erstellen
    if IsObj($oWord) Then ;überprüfe ob das object wirklich erstellt wurde
    if FileExists($sFilePath) Then ;überprüfe ob die .doc file existier
    $oWord.Documents.Open($sFilePath) ;öffne die .doc File
    if StringLower(StringTrimLeft($sSavePath, StringLen($sSavePath) - StringLen(".pdf"))) <> ".pdf" Then
    $sSavePath &= ".pdf" ;wenn die .pdf endung vergessen wurde wird sie hier hinzugefügt
    Endif
    $oWord.ActiveDocument.SaveAs($sSavePath) ;Speichere die PDF
    Else
    MsgBox("","Error","File does not exist")
    Exit
    Endif
    Else
    MsgBox("","Error","Failed to create Object")
    Exit
    Endif
    If FileExists($sSavePath) Then
    MsgBox("","Success","File " & $sSavePath & " Creating successful")
    Else
    MsgBox("","Error", "Failed to create " & $sSavePath)
    Endif
    $oWord.Quit
    $oWord = ""
    Exit

    [/autoit]


    Bin mir leider auch nicht sicher ob Word es dann auch als .pdf speichert gehe aber mal davon aus.