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. John8

Beiträge von John8

  • Umbau eines Skriptes

    • John8
    • 1. Dezember 2012 um 14:29
    Zitat von autoBert

    eine glatte Lüge ist. Ich hbe bei deiner Warheitsliebe und dem mangeldem Respekt vor anderer Leute Eigentum (Urheberrecht)auch starke Zweifel ob du dich an die Auflagen (Namensnennung!) jemals halten wirst.


    Habe eben eine Mail von ihm gelesen, in der er nach Erlaubnis gefragt hat.
    Also eine Lüge ist das nicht, diesen Satz:

    Zitat

    Du kannst Codeteile von FT-Backup verwenden aber nur unter expliziter Nennung meines Namens (Cyrox @AutoIt.de). Allerdings solltest du demnächst von Anfang an nachfragen und die Lizenzinformationen respektieren.


    habe ich geschrieben, da er ja schon vorher den Code in seinen Post eingefügt hatte, ohne zu fragen.
    Deshalb schrieb ich "Allerdings solltest du demnächst von Anfang an nachfragen".
    Der Threadersteller scheint aber nach Lesen weiterer Posts von ihm dennoch nicht sehr viel Wert auf Urheberrechte zu legen...

  • Umbau eines Skriptes

    • John8
    • 1. Dezember 2012 um 13:09

    Hi,

    du kannst Codeteile von FT-Backup verwenden aber nur unter expliziter Nennung meines Namens (Cyrox @AutoIt.de). Allerdings solltest du demnächst von Anfang an nachfragen und die Lizenzinformationen respektieren.
    Auch mehr Eigeninitiative wäre nicht schlecht... Gut zum AutoIt lernen ist z.B. das Buch von peethebee oder generell die AutoIt-Hilfe zu lesen.
    Da mein Backupskript aber noch etwas unleserlich geschrieben ist, ist es ziemlich schwer für andere, daraus die nötigen Codeinformationen für ein Updateprogramm zu extrahieren.
    Ich habe mal das Grundgerüst geschrieben, das auf den in FT-Backup eingebauten Updateprozess beruht. Dieser ist sehr einfach gehalten, es wird nur verglichen, ob die aktuelle Dateiversion anders ist als die installierte. Du kannst das Update-Beispiel ja selbst noch weiter anpassen/ausbauen:

    Update Beispiel
    [autoit]

    ; Example written by Cyrox (@AutoIt.de)

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

    #NoTrayIcon
    Const $sTitle = 'Updater' ; => Name of the window
    Const $sVersion = '0.7.1b' ; => Installed program version
    Const $sCheckURL = 'http://cy3bc.bplaced.de/data/ftb-version.tmp' ; => Check URL for update
    Const $sDownloadURL = 'http://bit.ly/FT-Backup' ; => Download URL for the update

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

    Global $hGUI, $hUpdate, $hVersion
    $hGUI = GUICreate($sTitle, 171, 92)
    $hUpdate = GUICtrlCreateButton('Check for Update!', 30, 40, 107, 25)
    GUICtrlCreateLabel('Installed:', 32, 16, 46, 17)
    $hVersion = GUICtrlCreateLabel($sVersion, 84, 16, 30, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(5)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3 ; = $GUI_EVENT_CLOSE
    Exit
    Case $hUpdate
    _StartUpdateCheck()
    EndSwitch
    WEnd

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

    Func _StartUpdateCheck()
    Local $sNewVersion = _CheckVersion($sCheckURL, $sVersion)
    If @error Then
    _GUIMsg('Could not connect to update server.' & @CRLF & 'Check internet connection or try again later.', $sTitle, 16)
    ElseIf $sNewVersion <> $sVersion Then
    $iMsg = _GUIMsg('A new version (v' & $sNewVersion & ') is available! Do you want to download it?', $sTitle, 36)
    If $iMsg = 6 Then
    ShellExecute($sDownloadURL)
    EndIf
    Else
    _GUIMsg('No update available.')
    EndIf
    EndFunc ;==>_StartUpdateCheck

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

    Func _CheckVersion($sCheckURL, $sInstalledVersion, $sUserAgent = 'DefaultUpdate')
    Local $sNewVersion
    HttpSetUserAgent($sUserAgent)
    $sNewVersion = BinaryToString(InetRead($sCheckURL, 1))
    If @error Then
    Return SetError(1, Default, 0)
    ElseIf $sNewVersion <> $sInstalledVersion Then
    Return $sNewVersion
    Else
    Return $sNewVersion
    EndIf
    EndFunc ;==>_CheckVersion

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

    Func _GUIMsg($sMsgText, $sMsgTitle = $sTitle, $iMsgFlag = 64)
    Local $iMsg
    WinSetTrans($hGUI, '', 200)
    $iMsg = MsgBox($iMsgFlag, $sMsgTitle, $sMsgText, 0, $hGUI)
    WinSetTrans($hGUI, '', 255)
    Return $iMsg
    EndFunc ;==>_GUIMsg

    [/autoit]


    Die Konstanten musst du logischerweise noch anpassen (aktuell sind die Daten von FT-Backup eingetragen).
    Auf dem (deinem) Server muss eine Datei mit dem Inhalt der aktuellen Version liegen, der Link zu dieser Datei muss logischerweise in der Konstante $sCheckURL eingetragen werden.

    Edit:

    Zitat

    bevor ich es vergesse, habe den inhaber des scriptes um erlaubnis angefragt, falls diese negativ sein sollte, so kann dies ja immerhin als gedankenanstoß helfen...
    was ein profi sowieso machen würde... aber... naja

    Nach erneutem Lesen frage mich gerade, was du uns mit dieser Aussage sagen möchtest...
    Achja und eigenartig finde ich auch, dass du schon einige Lösungsvorschläge bekommen hast, allerdings - wie name22 schon geschrieben hat (unter meinem Beitrag) - nie darauf eingegangen bist...

  • Ping gibt falschen Wert zurück

    • John8
    • 29. November 2012 um 16:33

    Hier mal ein Beispiel für eine Funktion, die CMD zum Testen der Verbindung nutzt. Vielleicht kannst du die ja gebrauchen.
    (Auch nützlich, wenn man feststellen möchte, ob das kompilierte Programm durch eine Firewall geblockt wird)

    _IsConnectedExternal
    [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _IsConnectedExternal
    ; Description ...: Checks if a connection is available on PC using "ping.exe". It doesn't depend on the (compiled) AutoIt script.
    ; You can use this e.g. to find out if a firewall blocks the AutoIt program.
    ; Syntax.........: _IsConnectedExternal($sHost = 'google.com', $sTempFile = 'isconnected.tmp')
    ; Parameters ....: $sHost - A solid host that is online around the clock (Default: google.com)
    ; Return values .: Success : Returns 1 (if external connection test was successful)
    ; Failure : Returns 0 (if external connection test failed)
    ; Author ........: Cyrox (@AutoIt.de)
    ; ===============================================================================================================================

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

    Func _IsConnectedExternal($sHost = 'google.com')
    Local $sResult, $sTempPath = @TempDir & '\isconnected.tmp'
    RunWait('ping.exe /n 1 ' & $sHost & ' >"' & $sTempPath & '"', '', @SW_HIDE)
    $sResult = FileRead($sTempPath)
    FileDelete($sTempPath)
    If StringInStr($sResult, '%') Then Return 1
    Return 0
    EndFunc

    [/autoit]
    Beispiel
    [autoit]

    ; _IsConnectedExternal
    ; ===== E X A M P L E =====

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

    #include "_IsConnectedExternal.au3"

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

    $sRead = InetRead('http://www.autoitscript.com/autoit3/files/beta/update.dat', 1)
    If @error Then
    If _IsConnectedExternal() Then
    MsgBox(16, 'Error', 'Firewall forbids "' & @ScriptName & '" the internet access.')
    Else
    MsgBox(16, 'Error', 'No connection available.')
    EndIf
    Else
    MsgBox(64, 'Connection OK - Current AutoIt version:', BinaryToString($sRead))
    EndIf

    [/autoit]
  • Funktion RunAs: Bat Datei wird nicht mit Administrativen Rechten ausgeführt

    • John8
    • 26. November 2012 um 19:34

    Hi,

    ShellExecute fordert nur die UAC(-Meldung) an bzw. "erzeugt" diese für das zu startende Programm, ein richtiges RunAs <Benutzername> gibt es da nicht standardmäßig leider, vielleicht aber als UDF.
    Ich habe ganz ehrlich noch nicht so richtig verstanden, was du eigentlich machen möchtest.
    Du willst, ohne dass die UAC Meldung kommt, Adminrechte haben oder?

  • Windows 8 - Was meint ihr?

    • John8
    • 25. November 2012 um 20:38

    Habe Windows 8 auf einem meiner Rechner und finde, dass dadurch für nicht-Touchscreen User alles komplizierter wird (zumindest ohne irgendwelche Zusatztools, Registry-Hacks etc.).
    Meiner Meinung nach hätte Microsoft lieber Windows 7 noch weiter ausbauen sollen, statt gleichzeitig ein Betriebssystem für Smartphones/Tablets und PCs zu erstellen.
    Vielleicht muss ich mich nur an die Hybridversion gewöhnen, aber im Moment ist für mich 7 klar besser (auch wenn 8 schneller startet).

    Edit: Was mir auch nicht gefällt ist, dass ich schon merke, dass man einige (immer mehr) Sachen zusätzlich kaufen muss, die sonst standardmäßig dabei waren.
    Habe Angst, dass das ganze in Richtung Xbox Live (Gold) geht, da muss man bspw. monatlich für's Onlinespielen blechen...

  • Funktion RunAs: Bat Datei wird nicht mit Administrativen Rechten ausgeführt

    • John8
    • 25. November 2012 um 00:28

    Hi, um das Starten mit Adminrechten zu ermöglichen verwendet man - wie Raupi schon geschrieben hat - #RequireAdmin und fordert damit für das ganze Skript Administratorrechte an:

    [autoit]

    #RequireAdmin
    Run(@ComSpec) ; ==> @ComSpec kann durch das gewünschte Programm ersetzt werden

    [/autoit]

    Wenn du allerdings nur für ein bestimmtes Programm diese Rechte anfordern möchtest, kannst du auch ShellExecute nehmen und das jeweilige Programm so aufrufen:

    [autoit]

    ShellExecute(@ComSpec, '', '', 'runas') ; ==> @ComSpec kann durch das gewünschte Programm ersetzt werden

    [/autoit]

    Ich sehe in deinem Skript allerdings auch nicht deutlich eine Batch-Datei, sondern eine .exe. (Batch 2 Exe - Converter genutzt ?)

  • AutoIt Watermark Image v0.89 beta build 2014-08-25

    • John8
    • 21. November 2012 um 19:22

    Hi,

    sehr tolles Programm, funktioniert super!
    Was hat sich eigentlich bei v0.60 geändert? (Meine mich zu erinnern, dass es vorher 0.55 war)

  • Backupscript

    • John8
    • 15. November 2012 um 19:18

    Hi,
    das " /C" ist ein Parameter von cmd.exe und bewirkt, dass cmd nach Ausführen des jeweiligen Befehls automatisch geschlossen wird. (das siehst du auch, wenn du cmd/? in die Konsole eingibst)

    Ich würde die Windows Kommandozeilen-Kopiertools nutzen, da diese sehr zuverlässig arbeiten und für dein Ziel in jedem Fall ausreichen sollten.

    [autoit]

    _RunCommand('echo Hello && pause')

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

    Func _RunCommand($sCommand, $iState = @SW_SHOW)
    RunWait(@ComSpec & ' /C ' & $sCommand, '', $iState)
    EndFunc

    [/autoit]

    Robocopy ist auch eine Option und Alternative zu xcopy (sofern die Parameter davon nicht mehr ausreichen)

  • Ladebalken im Batch Programmieren an einer If schleife hängend geht das?

    • John8
    • 29. Oktober 2012 um 14:05

    Hi,

    habe das von BugFix etwas abgeändert, jetzt sollte es funktionieren:

    Ladebalken Beispiel
    Code
    @echo off
    title Ladebalken Beispiel
    color 09
    
    
    :: START SETTINGS
    
    
    set text=Bitte einen Moment warten... Programm wird geladen.
    set countmax=79
    set wait=1
    
    
    :: END SETTINGS
    
    
    Set progress=³
    Set count=1
    
    
    :LOOP
    cls
    echo.
    echo %text%
    echo.
    echo %progress%
    set progress=%progress%²
    set /a count=count+1
    ping localhost -n %wait% >nul
    if %count%==%countmax% GOTO NEXT
    GOTO LOOP
    
    
    :NEXT
    cls
    echo.
    echo %text%
    echo.
    echo %progress%³
    echo.
    echo Fertig! %count% mal LOOP durchlaufen
    pause >nul
    Alles anzeigen

    Du kannst ja die Abbruchbedingung gegebenenfalls noch anpassen.
    Warum eigentlich nicht mit AutoIt ? Das wäre nicht so unschön...
    Okay, Batch hat auch Stil :D

  • GUI Status auslesen

    • John8
    • 28. Oktober 2012 um 19:51

    autoBert:

    Wusste ich noch nicht, gut zu wissen, danke! :)

    @Captcha:

    Du kannst also doch das Handle, also $GUI nutzen, war da wohl falsch informiert...
    Was genau klappt denn nicht?
    In der Hilfe ist dazu auch ein gutes Beispiel:

    [autoit]

    ; Prüft ob ein neues Editor-Fenster minimiert ist
    $state = WinGetState("[CLASS:Notepad]", "")

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

    ; Wurde der Wert für Minimieren gesetzt?
    If BitAnd($state, 16) Then
    MsgBox(0, "Beispiel", "Fenster ist minimiert")
    EndIf

    [/autoit]
  • GUI Status auslesen

    • John8
    • 28. Oktober 2012 um 19:25

    Einfach nur Hilfe lesen... :P
    Den Titel des Fensters, nicht das GUI Handle nehmen!

    Zitat von Hilfe

    Der Titel des Fensters, das gelesen werden soll. Siehe Erweiterte Fenstertiteldefinition.

    Außerdem ist dein Code nicht richtig eingebettet, die ganzen Absätze fehlen (zumindest bei mir).

  • Dateipfade?

    • John8
    • 28. Oktober 2012 um 18:54
    [autoit]

    Global $sRoot = "C:\root\"
    Global $sSys = "sys\"
    Global $sFileName = "test"
    Global $sPath = $sRoot & $sSys & $sFileName & ".txt"
    MsgBox(0, "", $sPath)

    [/autoit]

    Funktioniert bei mir. Poste am besten mal den ganzen Code.

    Edit: Da du ja den Fehler gefunden hast würde ich einen neuen Beitrag schreiben und nicht einfach als Bearbeitungsgrund den Fehler angeben. ;)

  • GUI Status auslesen

    • John8
    • 28. Oktober 2012 um 18:46

    WinGetState sollte dabei helfen. ;)

    Rückgabewerte
    [...]
    16 = Minimiert
    32 = Maximiert

  • AutoIT Window Info als Script

    • John8
    • 26. Oktober 2012 um 17:53
    Zitat von flammus

    Trotzdem erscheint der selbe Fehler :/


    Das kauf' ich dir nicht ab. :P
    Wie Micha_he schon geschrieben hat sollte der obige Code fehlerfrei laufen.
    Ist das denn nur ein Codeteil eines anderen Skripts? Womöglich liegt der Fehler dann an einer anderen Stelle.

  • AutoIT Window Info als Script

    • John8
    • 25. Oktober 2012 um 17:54

    Geht ganz einfach mit WinGetText. ;)

  • Seltsamme Angriffe auf Mailaccount

    • John8
    • 24. Oktober 2012 um 17:11

    Gerne. :)
    Denke allerdings auch nicht, dass jemand das "professionell" oder ernsthaft macht/probiert.
    Sieht eher nach einer Person aus, die Langeweile hat und vielleicht Standardpasswörter durchgeht (noch nicht mal mit einem Brute Force-Programm)...

    Zitat

    War mir garnicht bewusst wie lange es u.U. dauern kann ein Passwort knacken zu können...


    So lange dauert das aber nicht (finde ich), es sind immerhin extrem viele Kombinationen.

  • Seltsamme Angriffe auf Mailaccount

    • John8
    • 24. Oktober 2012 um 15:49

    Hi,

    Techmix:

    Zitat von Techmix

    ...au Wei Dann kopiere ich mir mal Lieber alle Mails mit Thunderbird oder so auf´m Rechner, damit ich nichts verliere... Und regelmässig das Passwort ändern (...das kann ja was werden)
    Nur frage ich mich WAS passieren wird WENN der angreifer erstmal das Passwort rausgefunden hat, im glimpflichsten Fall macht er dann ´ne Passwortänderung.

    Meiner Meinung nach musst du das gar nicht immer ändern, es reicht aus, wenn du das PW auf ca. 10 oder mehr Stellen (mit Sonderzeichen + Groß- und Kleinschreibung) abänderst.
    Dann ist es eigentlich schon unknackbar. Siehe hier
    Ich selbst hatte sowas glücklicherweise noch nie.

  • RUN-Befehl beendet sich plötzlich

    • John8
    • 23. Oktober 2012 um 20:24

    Hi,

    ich sehe da keinen Fehler, bei mir funktioniert das hier einwandfrei:

    [autoit]

    AutoItSetOption("ExpandEnvStrings", 1)
    Const $sCommandline = '%USERPROFILE% D:\ /R:10 /W:1'
    Run(@ComSpec & ' /C robocopy ' & $sCommandline, '', @SW_SHOW, 0x4 + 0x2)

    [/autoit]
  • Registry Zweig auslesen und als Reg File speichern

    • John8
    • 22. Oktober 2012 um 17:36

    Ich finde die Idee (übrigens schade, dass nicht alle Programme so eine Funktion integriert haben) und den Skript schon mal gut, würde aber das was Christoph54 geschrieben hat noch abändern, da die Bedingung sonst ihr Ziel verfehlt und das möglicherweise zu Fehlern führt.
    Außerdem würde ich RegRead (statt FileExists) nutzen.

  • Registry Zweig auslesen und als Reg File speichern

    • John8
    • 21. Oktober 2012 um 18:02

    Hab's zu schnell abgeschickt, so sollte es gehen (siehe auch Edit im ersten Post):

    [autoit]

    Run(@ComSpec & ' /C regedit /e ' & @ScriptDir & '\winrar.reg HKEY_CURRENT_USER\Software\WinRAR')

    [/autoit]

    Edit:

    Zitat

    EDIT: Mein Fehler. Nun klappt es perfekt. Vielen DANK !!


    Dann geht's anscheinend auch so wie's vorher war.
    Gerne.
    Der Code oben steuert regedit über CMD an, der hier (vom ersten Post) greift direkt auf regedit zu:

    [autoit]

    Run('regedit /e ' & @ScriptDir & '\winrar.reg HKEY_CURRENT_USER\Software\WinRAR')

    [/autoit]

    Mir wird gerade klar, dass das noch besser ist. Da war ich zu voreilig mit dem Editieren. :D

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™