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

Beiträge von dieselwiesel

  • Progressbar für FileCopy

    • dieselwiesel
    • 14. Januar 2013 um 10:58

    autoBert
    Thx 4 Help! In Zeile 61 (94) hat er etwas gemeckert, hab es dann umgeschrieben - hoffe das es richtig ist.

    Spoiler anzeigen
    [autoit]


    ConsoleWrite(@ScriptDir & "\"&$aToCopy[$i] & " ==> " & $sLW & $dir[$j] & &$aToCopy[$i] @CRLF)
    ;geändert
    ConsoleWrite(@ScriptDir & "\"&$aToCopy[$i] & " ==> " & $sLW & $dir[$j] & $aToCopy[$i] & @CRLF)

    [/autoit]


    Gestartet wurde dann, auch die ProgressBar hat sich in Bewegung gesetzt, nur kopiert wurde irgendwie nichts ?(

    RR04
    Danke für den Link.

  • Progressbar für FileCopy

    • dieselwiesel
    • 13. Januar 2013 um 22:17

    Hallo...
    versuche verzweifelt eine Prgressbar fürs FileCopy zu integrieren. Habe schon über die Suche div. Beiträge gesucht, einiges gefunden und probiert - aber ich krieg es absolut nicht auf die Reihe :cursing:

    So schaut es bisher aus (ja, ich weis - es geht mit sicherheit vieeeeel eleganter :D)

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("MeinProgramm", 314, 196, 192, 114)
    $cprog = GUICtrlCreateButton("C:", 72, 45, 75, 25)
    $dprog = GUICtrlCreateButton("D:", 166, 45, 75, 25)
    $eprog = GUICtrlCreateButton("E:", 72, 77, 75, 25)
    $fprog = GUICtrlCreateButton("F:", 166, 77, 75, 25)
    $Progress1 = GUICtrlCreateProgress(82, 130, 150, 16)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $data1 = @ScriptDir & '\dateiA*.zip' ;Die Updatedateien sind fortlaufend numeriert, also dateiA001...002...003 usw. darum eine Wildcard wenn mehrere vorhanden sind.
    $data2 = @ScriptDir & '\dateiB*.zip' ;Sie sollen auch nur Dateien kopiert werden, die in der ScriptDir sind.
    $data3 = @ScriptDir & '\dateiC*.zip'
    $data4 = @ScriptDir & '\dateiD*.zip'
    $alle = @ScriptDir & '\datei*.zip'

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

    $dir1 = '\meinprogramm\1\update'
    $dir2 = '\meinprogramm\2\update'
    $dir3 = '\meinprogramm\3\update'
    $dir4 = '\meinprogramm\4\update'

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

    Func _message1()
    MsgBox(64, "Info","Keine Dateien gefunden in " & @scriptdir )
    EndFunc

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

    Func _message2()
    MsgBox(64,"Fehler","Meinprog.exe nicht gefunden")
    EndFunc

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

    Func _cprog()
    If Not FileExists($alle) Then
    _message1()
    ElseIf FileExists("c:\meinprogramm\meine.exe") Then
    FileCopy($data1, "c:" & $dir1,1)
    FileCopy($data2, "c:" & $dir2,1)
    FileCopy($data3, "c:" & $dir3,1)
    FileCopy($data4, "c:" & $dir4,1)
    Else
    _message2()
    EndIf
    EndFunc

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

    Func _dprog()
    If Not FileExists($alle) Then
    _message1()
    ElseIf FileExists("d:\meinprogramm\meine.exe") Then
    FileCopy($data1, "d:" & $dir1,1)
    FileCopy($data2, "d:" & $dir2,1)
    FileCopy($data3, "d:" & $dir3,1)
    FileCopy($data4, "d:" & $dir4,1)
    Else
    _message2()
    EndIf
    EndFunc

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

    Func _eprog()
    If Not FileExists($alle) Then
    _message1()
    ElseIf FileExists("e:\meinprogramm\meine.exe") Then
    FileCopy($data1, "e:" & $dir1,1)
    FileCopy($data2, "e:" & $dir2,1)
    FileCopy($data3, "e:" & $dir3,1)
    FileCopy($data4, "e:" & $dir4,1)
    Else
    _message2()
    EndIf
    EndFunc

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

    Func _fprog()
    If Not FileExists($alle) Then
    _message1()
    ElseIf FileExists("f:\meinprogramm\meine.exe") Then
    FileCopy($data1, "f:" & $dir1,1)
    FileCopy($data2, "f:" & $dir2,1)
    FileCopy($data3, "f:" & $dir3,1)
    FileCopy($data4, "f:" & $dir4,1)
    Else
    _message2()
    EndIf
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cprog
    _cprog()
    Case $dprog
    _dprog()
    Case $eprog
    _eprog()
    Case $fprog
    _fprog()
    EndSwitch
    WEnd

    [/autoit]


    Als zweites würde mich noch interessieren, ob man den FileCopy Dialog anders gestallten kann. Wie Ihr seht, ändert sich ja immer nur der LW Buchstabe. Dank euch schonmal.

  • Werte in INI Datei ändern?

    • dieselwiesel
    • 1. Januar 2013 um 23:03

    OK, das wars ;)

    So schauts jetzt aus und funktioniert soweit auch ganz gut.

    [autoit]


    Global $iniPath = @ScriptDir & "\meine.ini"

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

    $ini1 = IniRead ($iniPath, "SektionsName1", "Schlüssel1", "not found")

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

    $ini2 = IniRead ($iniPath, "Sektionsname2", "Schlüssel2", "not found")

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

    Func _Message()
    MsgBox(64,"Info","Erfolgreich geändert.")
    EndFunc

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

    If $ini1 = "abc" And $ini2 = "abc" Then
    IniWrite ($iniPath, "SektionsName1", "schlüssel1", "xyz")
    IniWrite ($iniPath, "SektionsName2", "schlüssel2", "xyz")
    _Message()
    Exit
    ElseIf $ini1 = "abc" And $ini2 = "xyz" Then
    IniWrite ($iniPath, "SektionsName1", "schlüssel1", "xyz")
    _Message()
    ElseIf $ini1 = "xyz" And $ini2 = "abc" Then
    IniWrite ($iniPath, "SektionsName2", "schlüssel2", "xyz")
    _Message()
    Exit
    ElseIf $ini1 = "xyz" And $ini2 = "xyz" Then
    MsgBox(0,"Info","Wert ist bereits gesetzt")
    Exit
    Else
    MsgBox(0,"Info","Schlüssel existiert nicht oder unerwarteter Wert")
    Exit
    EndIf

    [/autoit]


    Könnte vllt. eleganter aussehen... :D

  • Werte in INI Datei ändern?

    • dieselwiesel
    • 1. Januar 2013 um 21:35

    Wünsch euch ein gesundes neues Jahr 2013!

    Raupi
    Dank dir erstmal. So oft benötige ich das nicht, darum hab ich mich auch noch nicht so intensiv damit beschäftigt. Für das was ich mache/ machen will finde ich hier eigentlich immer schöne Ansätze ;)
    Irgendwo bei deinem Bsp. ist was faul, denn es springt direkt zur MsgBox "Schlüssel existiert nicht oder unerwarteter Wert" obwohl beide Werte abc sind.

    Zeitriss
    Auch dir ein Dankeschön für deine Beispiele. Ja, es sollte schon geprüft werden ob der Wert überhaupt abc ist (am besten sogar an beiden Stellen) ansonsten soll da nichts dran geändert werden oder der Wert dazu geaddet werden.

  • Werte in INI Datei ändern?

    • dieselwiesel
    • 29. Dezember 2012 um 01:02

    Hallo Leutz,

    habe eine INI in der ich 2 Werte ändern möchte. Die INI schaut ungefähr so aus...

    Code
    [SektionsName1]
    Schlüssel1=abc
    
    
    [SektionsName2]
    Schlüssel2=abc

    Geändert werden soll der Wert abc in xyz, wie zu sehen sind aber die Sektionsnamen und Schlüssel unterschiedlich. So habe ich angefangen und konnte den Wert bei Schlüssel1 ändern.

    [autoit]


    Global $iniPath = '@ScriptDir & "\meine.ini"'

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

    If IniRead ($iniPath, "SektionsName1", "schlüssel1", "abc") <> "abc" Then
    IniWrite ($iniPath, "SektionsName1", "schlüssel1", "xyz")
    Else
    ;ab hier komme ich nicht so recht weiter :(

    [/autoit]


    Was kann ich als Else machen wenn der Wert schon xyz (MsgBox + Exit?) ist oder ein unerwarteter Wert wie z.B. LMN an dieser Stelle steht und der dann auf gar keinen Fall geändert werden soll? Hab auch noch nicht rausbekommen, wie ich den Wert bei SektionsName2/Schlüssel2 auf xyz bekomme ?( auch hier könnte ein unerwarteter Wert stehen. Danke schonmal fürs lesen :thumbup:

  • Vorgang wiederholen (Schleife)?

    • dieselwiesel
    • 12. August 2012 um 20:53

    Also das läuft so ab...

    Bei Fenster 1 wird etwas entpackt. Die Dauer hängt von der Grösse der Datei ab.

    Bei Fenster 2 wird das entpackte installiert, auch hier hängt die Dauer von der Grösse ab.

    Bei Fenster 3 muss nur etwas bestätigt werden.

    Wenn dann noch eine Datei vorhanden ist, gehts wieder mit Fenster 1 los, Fenster 2 und Fenster 3.

    Ist keine Datei mehr vorhanden soll es "ganz normal" weiter im Programm gehen.

  • Vorgang wiederholen (Schleife)?

    • dieselwiesel
    • 12. August 2012 um 19:44

    Hi, danke für die Antwort - aber das klappt leider nicht. Auch hier wird nicht gewartet bis der Vorgang aus Fenster 1 fertig ist und dann erst zu Fenster 2 übergeht.

  • Vorgang wiederholen (Schleife)?

    • dieselwiesel
    • 12. August 2012 um 14:30

    Hallo,

    wie kann ich einen Vorgang wiederholen bis ein Fenster nicht mehr erscheint?

    Spoiler anzeigen
    [autoit]


    If WinActive("Fenster1", "") or WinExists("Fenster1", "") Then
    WinWaitActive("Fenster1", "")
    WinWaitClose("Fenster1", "")
    Else
    ExitLoop ; <- Hier soll die Schleife beendet werden, wenn das Fenster nicht mehr erscheint.
    EndIf

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

    If WinActive("Fenster2", "") or WinExists("Fenster2", "") Then
    WinWaitActive("Fenster2", "")
    WinWaitClose("Fenster2", "")
    EndIf

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

    If WinActive("Fenster3", "") or WinExists("Fenster3", "") Then
    WinWaitActive("Fenster3", "")
    ControlClick("Button")
    EndIf

    [/autoit]


    Hatte es mal mit einer While Schleif probiert, aber die wartet irgendwie nicht bis die jewaligen Fenster geschlossen werden 8| wie lässt sich das am besten lösen?

  • Fenster / PopUp schliessen?

    • dieselwiesel
    • 6. August 2012 um 23:16

    So konnte ich den Button in der DialogBox nu doch noch auslösen... :D

    [autoit]


    If WinWaitActive("[CLASS:#32770]", "") Then
    ControlClick("","","[CLASS:Button; INSTANCE:1]", "left", 1)

    [/autoit]


    Nach dem Button^ ^ kommen erneut 2 DialogBoxen auf denen man nichts machen kann. In der ersten werden Dateien entpackt und in der Zweiten wird ein Update durchgeführt. Das Update geht über den ganzen Bildschirm und kann auch nicht gestoppt werden. Muss ich die dann im Script erwähnen und wenn ja wie?

    [autoit]


    If WinWaitActive("[CLASS:#32770]", "") Then
    ...???

    [/autoit]
  • Fenster / PopUp schliessen?

    • dieselwiesel
    • 5. August 2012 um 18:42

    BugFix
    Das mit der Fensterklasse hattest du ja hier schonmal verlinkt (hatte ich beim Suchen gefunden ;)).
    Mit dem Fenstertitel ist so ne Sache, wollte es ja eher "Multilingual" halten, weil sich beim Sprache ändern ja auch der Titel ändert. Wie krieg ich das mit dem Prozess raus? Gehn evtl. auch andere Werte wie z.B. die Fenstergröße? Weis aber immer noch nicht wohin mit dem Exitloop? Ohne ist der Rechner auf "LSD" und ausserhalb gehts nicht.

    PS: woher denn aus S-A? Grüsse aus dem SLK ;)

  • Fenster / PopUp schliessen?

    • dieselwiesel
    • 5. August 2012 um 01:20

    Stimmt nach dem Programmstart geht erst das Eine auf (und bleibt es auch bis bestätigt/geschlossen wird) und dann das andere bis es bestätigt oder verweigert wird. Ich habe jetzt schon diverse Sachen probiert mit Teilen aus Scripten die ich im Netz gefunden habe, aber ich komme keinen Schritt voran.

  • Fenster / PopUp schliessen?

    • dieselwiesel
    • 3. August 2012 um 14:09

    Hab mal ein bischen gelesen und probiert, aber es will einfach nicht lüppen, dass 2te. Fenster (wenn es existiert) zu bestätigen... :(

    Spoiler anzeigen


    Bei dem hier macht er weder das eine zu noch bestätigt er das andere.

    [autoit]


    If FileExists(@ScriptDir & "\myprog.exe") Then
    ShellExecute(@ScriptDir & "\myprog.exe", @ScriptDir & "\myprog.ini")
    Opt("WinTitleMatchMode",4)
    While 1
    If WinActive("[CLASS:#32770]", "") Then
    WinClose("[CLASS:#32770]","")
    EndIf
    If WinExists("[CLASS:#32770]", "") or WinActive("[CLASS:#32770]", "") Then
    ControlClick("[CLASS:#32770]", "[CLASS:Button; INSTANCE:1]", "")
    EndIf
    ExitLoop
    WEnd
    Else
    If not FileExists(@ScriptDir & "\myprog.exe") Then
    MsgBox(48,"Fehler","Datei nicht gefunden.")
    EndIf
    EndIf
    Exit

    [/autoit]


    Hab es auch schon mit Mouseclick("left") anstatt ControlClick probiert, ging aber auch nicht. Hat einer von euch noch ne Idee?

  • Fenster / PopUp schliessen?

    • dieselwiesel
    • 27. Juli 2012 um 19:44

    Habe jetzt noch etwas gefunden was ich gern mit einbauen würde. Es ist auch ein Fenster was wenn es erscheint mit einem Buttonclick bestätigt werden müsste. Die Werte von dem Button sind folgende.

    Spoiler anzeigen


    >>>> Control <<<<
    Class: Button
    Instance: 1
    ClassnameNN: Button1
    Name:
    Advanced (Class): [CLASS:Button; INSTANCE:1]
    ID: 1
    Text: &JA
    Position: 9, 84
    Size: 210, 26
    ControlClick Coords: 79, 13
    Style: 0x5001000B
    ExStyle: 0x00000004
    Handle: 0x0032027A

    Dachte dann an...

    [autoit]


    If WinExists("[CLASS:#32770]", "") Then
    ControlClick("[CLASS:#32770]", "[CLASS:Button; INSTANCE:1]", "")

    [/autoit]


    ... irgendwo zw. While1 und WEnd, aber irgendwie funkts nicht so recht ?(

  • Fenster / PopUp schliessen?

    • dieselwiesel
    • 27. Juli 2012 um 07:02
    Zitat von chesstiger

    Dann gibt es noch das Problem, dass für die Lauffähigkeit des Scriptes die Datei und MyProg.exe im selben Verzeichnis liegen müssen.


    Ich sag mal, dass ist erstmal so ^ ^ beabsichtigt, da es ja X beliebig viele Möglichkeiten gibt wo das Programm stecken kann (auf C: D: ... viele Unterordner usw.). Wie man da jetzt effektiv nach Sucht weis ich (noch) nicht. Hab es noch etwas erweitert (und geändert-danke für den Hinweis)...

    [autoit]


    If FileExists(@ScriptDir & "\myprog.exe") Then
    ShellExecute(@ScriptDir & "\myprog.exe", @ScriptDir & "\myprog.ini")
    Opt("WinTitleMatchMode",4)
    While 1
    If WinActive("[CLASS:#32770]", "") Then
    WinClose("[CLASS:#32770]", "")
    ExitLoop
    EndIf
    WEnd
    Else
    If not FileExists(@ScriptDir & "\myprog.exe") Then
    MsgBox(48,"Fehler","Datei nicht gefunden.")
    EndIf
    EndIf
    Exit

    [/autoit]
  • Fenster / PopUp schliessen?

    • dieselwiesel
    • 26. Juli 2012 um 23:16

    Hab es mal so probiert, scheint zu klappen... :D

    [autoit]


    Opt("WinTitleMatchMode",4)
    While 1
    If WinActive("[CLASS:#32770]", "") Then
    WinClose("[CLASS:#32770]", "")
    ExitLoop
    EndIf
    WEnd
    Exit

    [/autoit]


    Jetzt möchte ich noch das Programm starten. Lt. MyProg.lnk auf dem Desktop wird es mit einem Parameter gestartet -> MyProg.exe "myprog.ini" Hatte jetzt mal geschaut und würde es so machen...

    [autoit]


    ShellExecute( "MyProg.exe", "myprog.ini", "@ScriptDir")
    ; die MyProg.exe und myprog.ini liegen hier zusammen mit dem Script in einem Verzeichnis

    [/autoit]

    Bitte berichtigt mich wenn Ihr irgendwelche Fehler seht, Danke!

  • Fenster / PopUp schliessen?

    • dieselwiesel
    • 26. Juli 2012 um 11:46

    Hallo Leute,

    ich suche seit gestern eine Möglichkeit ein Fenster/PopUp zu schliessen was nach einem Programmstart angezeigt wird und ziemlich nervend ist. Schnell bin ich dabei auf AutoIt gestossen ;) dazu noch diesen >>>BEITRAG<<< und los gings :D . Das funktionierte erstmal recht gut, nun hab ich aber Blut geleckt und würde das noch ein bißchen erweitern.

    Problem ist, dass das PopUp wieder erscheint sobald die Sprache des Programms geändert wird. In Englisch heisst dieses Fenster dann Internet connection usw. Wollte gern wissen, ob es möglich ist sich auf eine andere Stelle zu konzentrieren, die bei dem PopUp immer vorhanden ist? Auch ein Hidden Text ist in dem Fenster vorhanden (siehe Bild). Vielleicht kann man das ja irgendwie aktivieren um die Meldung Programmmäßig zu deaktivieren? Das ist Ausgabe von AutoIt Window Info.

    Zitat von AutoIt Window Info

    >>>> Window <<<<
    Title: Internet-Verbindung
    Class: #32770
    Position: 403, 182
    Size: 475, 391
    Style: 0x94C800C6
    ExStyle: 0x00010109
    Handle: 0x0002041E

    >>>> Control <<<<
    Class:
    Instance:
    ClassnameNN:
    Name:
    Advanced (Class):
    ID:
    Text:
    Position:
    Size:
    ControlClick Coords:
    Style:
    ExStyle:
    Handle:

    >>>> Mouse <<<<
    Position: 480, 194
    Cursor ID: 0
    Color: 0x8A96A9

    >>>> StatusBar <<<<

    >>>> ToolsBar <<<<

    >>>> Visible Text <<<<
    &FORTFAHREN
    Bla bla bla...

    >>>> Hidden Text <<<<
    Meldungen immer anzeigen

    Alles anzeigen

    Wenn das mit dem Hidden Text nicht geht, ist es auch nicht schlimm, gibt doch dann bestimmt einen anderen Weg, oder?
    Dank euch schonmal im Voraus :thumbup:

    Dateien

    popup2.jpg 63,58 kB – 0 Downloads

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™