1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Shadowigor

Beiträge von Shadowigor

  • Powerpoint 2007 - Officemenü ansteuern

    • Shadowigor
    • 28. August 2011 um 17:50

    Also Ich würde das mit dem COM-Interface von PowerPoint machen. Das ist einfacher und zuverlässiger. So in der Art:

    Spoiler anzeigen
    [autoit]

    Global $oPPT = ObjCreate("PowerPoint.Application")

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

    Func _SetzeFusszeile($sPfad, $sFusszeile) ; Fusszeile Setzten

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

    $oPPT.Visible = True
    $oPPT.Presentations.Open($sPfad)
    $oPPT.ActivePresentation.SlideMaster.HeadersFooters.Footer.Text = $sFusszeile
    $oPPT.ActivePresentation.Save()

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

    EndFunc ;==>_SetzeFusszeile

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

    $oPPT.ActivePresentation.PrintOut() ; Ausdrucken

    [/autoit]

    Das müsste eigentlich auch gehen (kanns grad nicht ausprobieren). Falls du noch mehr machen willst kannst du Hier nachschlagen.

    Gruss Shadowigor

  • Script-Update UDF

    • Shadowigor
    • 23. August 2011 um 19:03

    Hallo zusammen

    Ich hab mir gerade ein kleines Script geschrieben um ein AutoIt-Programm zu aktualisieren und dachte ich poste es mal. Vielleicht kann es ja wer brauchen.
    Der Download geschieht via FTP. Eine ausführliche beschreibung liegt bei.

    Falls jetzt jemand kommen sollte mit "Hey, das gibts doch schon" (Hier), ja, ich weis.
    Ich habs gerade gefunden. Aber da ichs ja sowieso schon geschrieben habe... Ich hoffe es hilft jemandem.


    PS: Das GUI ist nicht gerade der Hammer. Ich rate dazu es noch ein wenig anzupassen. ;)

    Gruss Shadowigor

  • Telnet auslesen

    • Shadowigor
    • 23. August 2011 um 18:09

    Mit den 1024 hat das nichts zu tun. Jedenfalls nicht wenn du dein 'Test' empfängst. Dass es jedoch mit StringInString nicht funktioniert ist etwas seltsam.
    Wenn das nicht funktioniert wird es schwierig.

    [autoit]

    If StringInStr($sRecv, "Test") <> 0 Then ; etc

    [/autoit]

    Dann wirst du wohl ein Muster in den scheinbar zufälligen Strings davor finden müssen.

    Gruss Shadowigor

  • TCP Problem

    • Shadowigor
    • 21. August 2011 um 21:42
    Spoiler anzeigen
    [autoit]


    While 1
    $AcceptedSocket = TCPAccept($Socket)
    If $AcceptedSocket <> -1 Then
    ToolTip("Empfange Binary...",0,0)
    $ReceivedData = TCPRecv($AcceptedSocket, 9999999999999999999999999999999999999999999999)
    ToolTip("Schreibe Binary in Zip...",0,0)
    FileWrite("temp.zip",$ReceivedData)
    ToolTip("Unzippe Zip...",0,0)
    _UnZipFolder("temp.zip")
    ToolTip("Lösche temporäre Zip...",0,0)
    FileDelete("temp.zip")
    ToolTip("Ordner erfolgreich empfangen!",0,0)
    Sleep(2000)
    ToolTip("Beende TCP...",0,0)
    EndIf
    TCPCloseSocket($AcceptedSocket)
    TCPCloseSocket($Socket)
    TCPShutdown()
    WEnd

    [/autoit]


    Du hast das EndIf zu früh gemacht. So wie es jetzt ist prüft er TCPAccept, vergleicht beim If, und dann aber, schliesst er die Sockets und den TCP-Service.
    Ausserdem wird er so nie die Schleife verlassen. Und du wirst nichts empfangen, da bis der Client alles gezipt hat, der Server schon längst beim TCPRecv vorbei ist.
    Richtig wärs so:

    Spoiler anzeigen
    [autoit]


    While 1
    $AcceptedSocket = TCPAccept($Socket)
    If $AcceptedSocket <> -1 Then
    ToolTip("Empfange Binary...",0,0)
    Do
    $ReceivedData = TCPRecv($AcceptedSocket, 9999999999999999999999999999999999999999999999)
    Until $ReceivedData <> ""
    ToolTip("Schreibe Binary in Zip...",0,0)
    FileWrite("temp.zip",$ReceivedData)
    ToolTip("Unzippe Zip...",0,0)
    _UnZipFolder("temp.zip")
    ToolTip("Lösche temporäre Zip...",0,0)
    FileDelete("temp.zip")
    ToolTip("Ordner erfolgreich empfangen!",0,0)
    Sleep(2000)
    ToolTip("Beende TCP...",0,0)
    TCPCloseSocket($AcceptedSocket)
    ;TCPCloseSocket($Socket) --> Unnötig, da kein Socket
    TCPShutdown()
    ExitLoop
    EndIf
    WEnd

    [/autoit]

    Und Dateien anhängen kannst du indem du unten bei den Smileys auf den Reiter 'Dateianhänge' klickst.

    Gruss Shadowigor

  • Daten via TCP versenden / empfangen

    • Shadowigor
    • 18. August 2011 um 20:33

    Da wären noch ein paar Sachen.

    [autoit]

    $Datei = @ScriptDir&"/"&$DateiSenden

    [/autoit]


    Das müsste ein Backslash sein.

    [autoit]

    $Datei = @ScriptDir & "\" & $DateiSenden

    [/autoit]

    Und das musst du wohl auch noch ändern:

    [autoit]

    FileWrite($Zieldatei,$String)

    [/autoit]


    $Zieldatei ist in dem Moment @ScriptDir. Das geht nicht, denn dann hast du keinen Dateinamen angegeben.
    Bei einer .exe müsste das dann so sein:

    [autoit]

    FileWrite($Zieldatei & "\Dateiname.exe", $String)

    [/autoit]

    Und es geht noch weiter.

    [autoit]

    If @error Then ExitLoop

    [/autoit]


    Das funktioniert auch nicht. TCPRecv wird dir keinen @error setzen wenn die Übertragung abgeschlossen ist.
    Stattdessen solltest du das verwenden.

    [autoit]

    If $rev = "" Then ExitLoop

    [/autoit]

    So, ich denke das wars. Ich hoffe ich konnte dir helfen.

  • Text aus GUICtrlCreateEdit automatisch mit Trennzeichen versehen

    • Shadowigor
    • 15. August 2011 um 20:27

    Das könntest du so machen:

    [autoit]

    $arSplit = StringSplit($InhaltDeinerInput, @CRLF)

    [/autoit]

    Ich nehme mal an es ist das was du willst. Dann kannst du die Adresse über meherere Zeilen schreiben.

    Gruss Shadowigor

  • Unerklärliche Schleife

    • Shadowigor
    • 26. Juli 2011 um 21:09

    Ahh..... Wusst ich nicht. Hätte ich wohl noch mal die Hilfe lesen müssen. Danke vielmals.

  • Unerklärliche Schleife

    • Shadowigor
    • 26. Juli 2011 um 19:51

    Das ist mir schon klar. So ist es natürlich nicht. Hier ist sonst noch die Client.au3:

    Spoiler anzeigen
    [autoit]


    TCPStartup()
    $_LocalTemp = TCPListen(@IPAddress1, 50000)
    $idServerSocket = -1
    Do
    $idServerSocket = TCPAccept($_LocalTemp)
    Until $idServerSocket <> -1
    Global $idClientSocket = -1
    $idClientSocket = TCPConnect(@IPAddress1, 50001)

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

    While 1
    Sleep(100) ; Hier kommt dann später noch etwas
    WEnd

    [/autoit]

    Hat sonst noch jemand eine Idee?

  • Unerklärliche Schleife

    • Shadowigor
    • 26. Juli 2011 um 17:54

    Hallo zusammen

    Ich kann mir folgende Situation beim besten willen nicht erklären. Folgender Code:

    Spoiler anzeigen
    [autoit]


    #include "ConsoleControl.au3"
    #include "MyLib.au3"
    Global Const $_Console_USEWINDOW = False
    _ConsoleStartup()
    ShellExecute(@AutoItExe, "X:\Client\Source\Client.au3")
    MsgBox(0, "1", @error)
    Sleep(1000)
    _ServiceStartup()
    MsgBox(0, "2", @error)
    _ConsoleWrite("Willkommen" & @CRLF)

    [/autoit]

    Die Funktion _ServiceStartup():

    Spoiler anzeigen
    [autoit]


    Func _ServiceStartup()
    Local $iListen
    Global $idClientSocket = -1, $idServerSocket = -1
    TCPStartup()
    $idClientSocket = TCPConnect(@IPAddress1, 50000)
    $iListen = TCPListen(@IPAddress1, 50001)
    Do
    $idServerSocket = TCPAccept($iListen)
    Until $idServerSocket <> -1
    EndFunc ;==>_ServiceStartup

    [/autoit]

    Und noch der Inhalt der ConsoleControl.au3:

    Spoiler anzeigen
    [autoit]


    #cs
    Put the following two lines in your Script to use CMD-Funtions:

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

    #include
    ; These two lines, if the existing Console should be used, if possible
    #AutoIt3Wrapper_Change2CUI=y
    Global Const $_Console_USEWINDOW = True
    ; This line, if always a new Console should be created:
    ;~ Global Const $_Console_USEWINDOW = False

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

    #ce

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

    #include
    Global $GLOBAL_hConsole, $GLOBAL_hConsoleIn, $CMD_INFINITE = 0xFFFFFFFF
    ; Initialize the CMD Funcs
    ; Parameter: [Opt] $ExitOnFatal - If True, The App exits with Fatal error if an error occurs in this Function (Default: False)
    ; Return values: Success: 1
    ; Error: 0 and @error:
    ; 1 - Could not allocate Console -> no In or outuput-Handle
    ; 2 - GetStdHandle for Output failed -> No Output-Handle, too
    ; 3 - GetStdHandle for Input failed, but we have an Ouput-Handle
    ;Author: Prog@ndy
    Func _ConsoleStartup($ExitOnFatal = 0)
    If Not @Compiled Then
    If Not IsDeclared("_Console_USEWINDOW") Then
    #Region --- CodeWizard generated code Start ---
    ;MsgBox features: Title=Yes, Text=Yes, Buttons=Yes and No, Default Button=Second, Icon=Critical
    If 6 = MsgBox(276, "No Console App specified!", "You hav to copy these lines to your main-Script, just before you call _Console_STARTUP:" & @CRLF & "; These two lines, if the CMD-Console should be used, if possible" & @CRLF & " #AutoIt3Wrapper_Change2CUI=y" & @CRLF & " Global $_Console_USEWINDOW = True" & @CRLF & "; This line, if always a new Console should be created:" & @CRLF & " Global $_Console_USEWINDOW = False" & @CRLF & @CRLF & " COPY TO CLIPBOARD?") Then
    ClipPut("; These two lines, if the CMD-Console should be used, if possible" & @CRLF & _
    "#AutoIt3Wrapper_Change2CUI=y" & @CRLF & _
    "Global Const $_Console_USEWINDOW = True" & @CRLF & _
    "; This line, if always a new Console should be created:" & @CRLF & _
    ";~ Global Const $_Console_USEWINDOW = False")
    EndIf
    EndIf
    MsgBox(16, 'Console UDF error', "Console does not work in uncompiled scripts.")
    Exit
    EndIf
    If Not IsDeclared("_Console_USEWINDOW") Then Local $_Console_USEWINDOW = True
    If Not $_Console_USEWINDOW Or ($_Console_USEWINDOW And (Not _WinAPI_AttachConsole())) Then
    $ret = DllCall("Kernel32.dll", "long", "FreeConsole")
    $ret = DllCall("Kernel32.dll", "long", "AllocConsole")
    If $ret = 0 Then
    If $ExitOnFatal Then _WinAPI_FatalAppExit("Could not allocate Console")
    Return SetError(1, 0, 0)
    EndIf
    $HWND = DllCall("kernel32.dll", "hwnd", "GetConsoleWindow")
    WinSetState($HWND[0], "", @SW_SHOW)
    EndIf
    Global $GLOBAL_hConsole = _WinAPI_GetStdHandle(1)
    If $GLOBAL_hConsole = -1 Then
    If $ExitOnFatal Then _WinAPI_FatalAppExit("GetStdHandle for Output failed")
    Return SetError(2, 0, 0)
    EndIf
    DllCall("Kernel32.dll", "long", "SetConsoleActiveScreenBuffer", "handle", $GLOBAL_hConsole)
    Global $GLOBAL_hConsoleIn = _WinAPI_GetStdHandle(0)
    If $GLOBAL_hConsoleIn = -1 Then
    If $ExitOnFatal Then _WinAPI_FatalAppExit("GetStdHandle for Input failed")
    Return SetError(1, 0, 0)
    EndIf
    Return 1
    EndFunc ;==>_Console_STARTUP

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

    ; PASUES CMD, waits for any key
    ; Author: ProgAndy
    Func _ConsolePause($iTime = -1)
    Local $ret, $Key_Event = False
    _ConsoleWrite("PAUSE: Press any key to continue ")
    DllCall("Kernel32.dll", "long", "FlushConsoleInputBuffer", "handle", $GLOBAL_hConsoleIn)
    Local $tInp = DllStructCreate("long;uint64[4]")
    Do
    $ret = DllCall("Kernel32.dll", "long", "WaitForSingleObject", "handle", $GLOBAL_hConsoleIn, "dword", $iTime)
    If @error Then Return SetError(1, 0, 0)
    If $ret[0] = -1 Then Return SetError(2, 0, 0)
    Local $rce = DllCall("kernel32.dll", "bool", "ReadConsoleInput", "handle", $GLOBAL_hConsoleIn, "ptr", DllStructGetPtr($tInp), "dword", 1, "dword*", 0)
    $Key_Event = DllStructGetData($tInp, 1) = 1
    Until ($Key_Event And $rce[4]) Or $ret[0] = 0x00000102
    DllCall("Kernel32.dll", "long", "FlushConsoleInputBuffer", "handle", $GLOBAL_hConsoleIn)
    Return SetExtended($ret[0] = 0x00000102, 1)
    EndFunc ;==>_Console_Pause

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

    Func _ConsoleClose()
    Local $ret = DllCall("Kernel32.dll", "int", "FreeConsole")
    If @error Then Return SetError(1, 0, 0)
    Return SetError($ret[0] <> 0, 0, $ret[0])
    EndFunc ;==>_Console_Close

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

    ;Writes Text to CMD
    ; Author: ProgAndy
    Func _ConsoleWrite($text)
    Local $temp = _WinAPI_WriteConsole($GLOBAL_hConsole, $text)
    Return SetError(@error, @extended, $temp)
    EndFunc ;==>_Console_Write

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

    ;Reads Text from CMD
    ; Author: ProgAndy
    Func _ConsoleRead($pInputControl = 0)
    Local $tBuffer = DllStructCreate("wchar[4000]")
    Local $aResult = DllCall("Kernel32.dll", "int", "ReadConsoleW", "handle", $GLOBAL_hConsoleIn, "ptr", DllStructGetPtr($tBuffer), "DWORD", 4000, "dword*", 0, "ptr", $pInputControl)
    If @error Then Return SetError(1, @error, "")
    If $aResult[0] = 0 Then Return SetError(2, 0, "")
    Return StringLeft(DllStructGetData($tBuffer, 1), $aResult[4])
    EndFunc ;==>_Console_Read

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

    ; Writes the prompt and then reads Text from CMD
    ; Author: ProgAndy
    Func _Console_Ask($sPrompt)
    _ConsoleWrite($sPrompt)
    If @error Then Return SetError(1, @error, "")
    Local $sBuff = _ConsoleRead()
    If @error Then Return SetError(2, @error, "")
    Return $sBuff
    EndFunc ;==>_Console_Ask

    [/autoit]

    Die Beiden MsgBoxen sind nur zur Fehlersuche da. Die Client.au3 Stellt nur eine TCP-Verbindung mir dem Script (siehe _ServiceStartup()) her und geht dann in eine Schleife.
    Wenn ich das ganze nun Kompiliere, öffnet sich erst eine Konsole und dann die erste MsgBox. Danach öffnet sich jedoch gleich wider eine Konsole und eine MsgBox.
    Und das im Eiltempo immer wider. Am Schluss hatte ich so viele Fenster dadurch offen, dass ich meinen PC ausschalten musste. Ich hab sie sonst nicht mehr weggebracht.
    Kann mir das einer von euch erklären????

  • Dateipfad in Unterordner finden

    • Shadowigor
    • 29. März 2011 um 16:03

    Super!!! Ganz genau was ich gesucht habe. Perfekt. Danke Vielmals.

  • Dateipfad in Unterordner finden

    • Shadowigor
    • 28. März 2011 um 21:48

    Der Ansatz ist schon sehr gut. Gibt es so etwas auch noch so, dass man Wildcards wie * benutzen kann?
    Wäre noch wichtig...

  • Dateipfad in Unterordner finden

    • Shadowigor
    • 28. März 2011 um 21:24

    Hallo zusammen

    Gibt es eine möglichkeit vom Dateinamen der z.B. FileFindNextFile zurückgibt, den gesamten Dateipfad der Datei zu erhalten, auch wenn die sich noch in Unterordnern befindet? Hab alles versucht aber bin bis jetzt nicht drauf gekommen.

    Beispiel:

    Ich möchte im Ordner "C:\Ordner" nach "test.txt" suchen.
    "test.txt" befindet jedoch in "C:\Ordner\Unterordner", was ich natürlich nicht weis.
    Wie mache ich es jetzt dass es mir "C:\Ordner\Unterordner\test.txt" ausgibt?

  • String nach bestimmter Eingabe auslesen

    • Shadowigor
    • 5. März 2011 um 19:59

    Danke für die (sehr) schnelle Antwort. Habe es mit StringLeft und StringTrimLeft ganz gut hinbekommen.

  • String nach bestimmter Eingabe auslesen

    • Shadowigor
    • 5. März 2011 um 15:43

    Hallo zusammen

    Ich habe ein Script geschrieben mit einer GUI welche eine Input-Box beinhaltet. Meine Frage:
    Gibt es eine Möglichkeit das der String nach einem bestimmten Schlüsselwort ausgegeben wird.

    Nur so als Beispiel:

    Wenn man in die Input-box "schreibe hallo", hineinschreibt, dass dann eine MsgBox "hallo"ausgibt und das sie wenn man "scheibe hallo zusammen" eingibt, "hallo zusammen" ausgibt.
    Bei der Eingabe von "sonstwas hallo" dürfte natürlich nichts oder ein Error ausgegeben werden.

    Wie könnte man das machen?

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™