Achja: vieleln lieben Dank für die Hilfe
Beiträge von hipfzwirgel
-
-
Hallo Musashi,
hallo Bufix,
dann habe ich den Shellexecutewait wohl i-wie falsch interpretiert, ich dachte ich muss den String als einen Parameter übergeben.
Dennoch bleibt die Frage ob es für die Escaperei irgendeine Unterlage, Liste, etc. gibt?
Mein Versuch mit Shellexecute:CodeShellExecuteWait($sProggi, "/setvalue:""Password Minimum Length"",""4"" & " " & ""/cspwdfile:"" & $ssecretPW & " " & ""/verbose"", "", "", "")
beim Kompilieren zeigt er mir immer einen Syntaxfehler bei den / an.
-
Hallo und guten Morgen an alle Autoit-Profis,
ich möchte folgende CMD-Befehlszeile in Autoit-Code umsetzen
z.B. mit Shellexecutewait(bcu64.exe...). Leider scheitere ich an den /-Strichen der Parametern.
Kann mir jemand mitteilen, wie ich die Schräger escape und 2. Frage: Gibt es i-wo eine Zusammenstellung aller Escapesequenzen/-möglichkeiten in Autoit.Ich suche mir bereits den ganzen Morgen einen Wolf nach Escapesequenzen finde aber nur zehmillionen Einträge bzgl. des escapens von "
-
-
Hallo Alpines,
vielen lieben dank für deine Antwort. Demnach geht es wohl grundsätzlich. Aber verstehe ich das richtig, dass dann beides gleichzeitig geöffnet wird?Also die grafische Oberfläche UND eine Konsolenversion?
ich dachte an so etwas wie Doppelclick auf die Exe -> Start mit grafischer Oberfläche -> Klick auf Button "Copy" -> ein Kopiervorgang wird durchgeführt.
In der CMD-Konsole die Exe-Datei mit Startparameter aufführen(z.B. bla.exe -c) und bei Taste Enter wird der o.g.
Kopiervorgang des Programms ebenfalls ausgeführt ohne sichtbare Oberfläche.# Copy ist hier nur ein Beispiel zur Verdeutlichung! #
-
Hallo an alle Autoit-Spezialisten,
folgender Sachverhalt:Ich möchte ein Autoit-Programm erstellen. Der Wunsch: die spätere EXE-Datei soll sowohl mit grafischer Oberfläche, als auch direkt auf der CMD-Konsole(Eingabeaufforderung mit Startparametern) gestartet werden können.
1. Frage: Geht so etwas überhaupt oder brauche ich hierfür zwei Exe-Files.
2. Frage: Kann mir jemand erklären oder besser, hat wer ein Scriptbeispiel wie ich eine Exe-Datei mit Startparametern erstelle? -
Hallo Musashi,
vielen lieben allerherzlichsten Dank für die Hilfe/deine Anregung. Nun geht das mit dem automatischem Schließen des Fensters, wenn nichts gedrückt wurde.
Den Select kannte ich bisher bei Autoit noch nicht. Das hat mich zunächst etwas verwirrt. Man lernt eben immer dazu. -
Hallo Bitnugger,
danke für den Tipp aber wie du vielleicht übersehen hast nutze ich den Befehl bereits wenn ich auf den Button OK klicke(siehe Zeile 45-47 im Code).
In Musashis Tipp wird das Fenster durch den Timer aber außerhalb der Schleife geschlossen durch die Func Quit.
Hier geht Exitloop ja nicht, sodass zwar das Fenster geschlossen werden kann(mit Guidelete) aber die Schleife läuft
ja dann weiter und stoppt die Ausführung des Proggis dadurch...
Code
Alles anzeigenElse $Form1_1 = GUICreate("Meldung", 366, 167, -1, -1, -1, BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE)) GUICtrlCreateLabel("", 40, 24, 4, 4) $Heute = GUICtrlCreateLabel("Heute ist nicht Freitag." & @CRLF & @CRLF & "Also KEINE Datensicherung!!!", 2, 30, 361, 60, $SS_CENTER) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $doch = GUICtrlCreateButton("Aber hallo DOCH!", 18, 125, 121, 25) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $OK = GUICtrlCreateButton("OK", 272, 125, 65, 25) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUISetState(@SW_SHOW) _Timer_SetTimer($Form1_1, 10000, "Quit") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $doch MsgBox(0, "Warnung!!!", "Bitte alle Programme und oder geöffneten Dateien schließen!!!") $sStatus = Run(@ComSpec & " /c " & "7z a -tzip E_Bosch_sic.zip C:\E -pChange34%", "C:\Users\uah7fe", @SW_HIDE, $STDOUT_CHILD) ProcessWaitClose($sStatus) $sOutput &= StdoutRead($sStatus) MsgBox(0, "Dieses Fenster nicht verschieben!!!", $sOutput & @CRLF & @CRLF & " Soll der Content Kopiert werden?", 7) Local $hProgressProc = DllCallbackRegister('_ProgressProc', 'bool', 'uint64;uint64;uint64;uint64;dword;dword;handle;handle;ptr') ProgressOn('Verschieben', 'Moving...', '0%', -1, -1, 18) If Not _WinAPI_MoveFileEx($sSource, $sDesti, 3, DllCallbackGetPtr($hProgressProc)) Then _WinAPI_ShowLastError('Error copying ' & $sSource) EndIf DllCallbackFree($hProgressProc) ProgressOff() Case $OK MsgBox(327680, "Meldung", "weiter geht's!!!") GUIDelete($Form1_1) ExitLoop EndSwitch WEnd ;~ GUIDelete($Form1_1) ;~ MsgBox(0, "Meldung", "Heute ist nicht Freitag oder ein ungerader Tag. Also keine Datensicherung!!!", 4) EndIf Func Quit($Form1_1, $nMsg, $iIDTimer, $dwTime) ; Funktion zum Beenden des Fensters Form1_1 ;GUIDelete($Form1_1) Exit EndFunc
-
Hallo Musashi,
vielen lieben Dank für deinen Tipp. Eine Frage hätte ich noch:
1. Der Exit-Befehl killt mir das komplette Proggi. Es sollte aber lediglich die Gui geschlossen und die While
muss natürlich auch beendet werden, damit das Proggi weitermacht...
Im Moment habe ich das so gelöst: Buttonklick auf OK dann GUIDelete($Form1_1) und ExitLoop
GuiDelete in die Func Quit geht ja noch aber wie beende ich die While???
In der Timer-Hilfe fand ich dazu leider nichts -
Hallo Autoitprofis,
gibt es die Möglichkeit den OK-Button auf einer GUI nach einer bestimmten Wartezeit quasi automatisch auslösen zu lassen?
In meinem Autostart-Programm wird ermittelt ob es Freitag ist oder nicht. Wenn ja wird eine Datensicherung erstellt.
Wenn nein wird ein von mir erstelltes Hinweisfenster eingeblendet. Dieses enthält 2 Buttons. Der erste Button soll die Datensicherung(bei klick) dennoch starten. Der zweite(OK-Button) soll
nur das Hinweisfenster schließen, damit das Programm weiter macht mit dem Autostart. Ich hätte es gerne so, das das Hinweisfenster nach ein paar Sekunden sich selber schliesst wenn nichts gedrückt wird,
damit das Programm weiter laufen kann.
C
Alles anzeigen#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile_x64=Autostart_2.exe #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_Res_Comment=Autostart with Backup-Function #AutoIt3Wrapper_Res_Description=Autostart with Backup #AutoIt3Wrapper_Res_Fileversion=1.0.0.11 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y #AutoIt3Wrapper_Res_LegalCopyright=2019 - by HaSc #AutoIt3Wrapper_Res_Field=Made by|HaSc #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <MsgBoxConstants.au3> #include <AutoItConstants.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <Date.au3> #include <String.au3> #include <StringConstants.au3> #include <EditConstants.au3> #include <Misc.au3> #include <Array.au3> #include <WinAPIEx.au3> #include <WinAPIDiag.au3> #include <WinAPIFiles.au3> Local $sLongDayName = _DateDayOfWeek(@WDAY, $DMW_LOCALE_LONGNAME) ; Name Wochentag feststellen Local $sOutput = "" Global $sSource = "Sicherungszipdatei" Global $sDesti = "SicherungsLW" Global $Konto = "harald" ; Logindatgen für PWD-Schutz Zip Datei Global $Kontonr = "PWD" If $sLongDayName = "Freitag" Then $sEidi = MsgBox(4, "Meldung", "Heute ist " & $sLongDayName & "!!!" & @CRLF & @CRLF & "Möchten sie die Datensicherung durchführen?") If $sEidi = "6" Then MsgBox(0, "Warnung!!!", "Bitte alle Programme und oder geöffneten Dateien schließen!!!") $sStatus = Run(@ComSpec & " /c " & "7z a -tzip sic.zip C:\E -pPWD", "Benutzer", @SW_HIDE, $STDOUT_CHILD) ; ZIP wird erstellt im Userkontext ProcessWaitClose($sStatus) $sOutput &= StdoutRead($sStatus) MsgBox(0, "Dieses Fenster nicht verschieben!!!", $sOutput & @CRLF & @CRLF & " Soll der Content Kopiert werden?", 7) Local $hProgressProc = DllCallbackRegister('_ProgressProc', 'bool', 'uint64;uint64;uint64;uint64;dword;dword;handle;handle;ptr') ProgressOn('Verschieben', 'Moving...', '0%', -1, -1, 18) If Not _WinAPI_MoveFileEx($sSource, $sDesti, 3, DllCallbackGetPtr($hProgressProc)) Then _WinAPI_ShowLastError('Error copying ' & $sSource) EndIf DllCallbackFree($hProgressProc) ProgressOff() EndIf Else ; Hier beginnt das Hinweisfenster das automatisch geschlossen werden soll wenn kein Button gedrückt wird... $Form1_1 = GUICreate("Meldung", 366, 167, -1, -1, -1, BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE)) GUICtrlCreateLabel("", 40, 24, 4, 4) $Heute = GUICtrlCreateLabel("Heute ist nicht Freitag." & @CRLF & @CRLF & "Also KEINE Datensicherung!!!", 2, 30, 361, 60, $SS_CENTER) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $doch = GUICtrlCreateButton("Aber hallo DOCH!", 18, 125, 121, 25) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $OK = GUICtrlCreateButton("OK", 272, 125, 65, 25) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $doch MsgBox(0, "Warnung!!!", "Bitte alle Programme und oder geöffneten Dateien schließen!!!") $sStatus = Run(@ComSpec & " /c " & "7z a -tzip E_Bosch_sic.zip C:\E -pChange34%", "C:\Users\uah7fe", @SW_HIDE, $STDOUT_CHILD) ProcessWaitClose($sStatus) $sOutput &= StdoutRead($sStatus) MsgBox(0, "Dieses Fenster nicht verschieben!!!", $sOutput & @CRLF & @CRLF & " Soll der Content Kopiert werden?", 7) Local $hProgressProc = DllCallbackRegister('_ProgressProc', 'bool', 'uint64;uint64;uint64;uint64;dword;dword;handle;handle;ptr') ProgressOn('Verschieben', 'Moving...', '0%', -1, -1, 18) If Not _WinAPI_MoveFileEx($sSource, $sDesti, 3, DllCallbackGetPtr($hProgressProc)) Then _WinAPI_ShowLastError('Error copying ' & $sSource) EndIf DllCallbackFree($hProgressProc) ProgressOff() Case $OK MsgBox(0, "Meldung", "weiter geht's!!!", 3) EndSwitch WEnd ;MsgBox(4, "Meldung", "Heute ist nicht Freitag. Also keine Datensicherung!!!", 7) EndIf
-
Hallo AutoIT-Spezialisten,
ich habe ein Script erstellt mit welchem ich eine Zip-Datei erzeuge und diese dann verschiebe. Für den Verschiebevorgang habe ich eine Progressbar(wie im Forum beschrieben) implementiert.
Dieses Progressbarfenster lässt sich NICHT verschieben und genau das ist meine Frage. Kann mir jemand erklären warum nicht und ob ich das ändern kann?
Des Weiteren hätte ich gerne eine Progressbar für den Vorgang des Erstellens der Zip-Datei, da diese eine sehr große Datei(ca. 25 GB/Datensicherung) sein wird und der Vorgang ziemlich lange dauert.
Hätte jemand eine Idee wie ich das bewerkstelligen könnte?Auszug:
C
Alles anzeigen#include <MsgBoxConstants.au3> #include <AutoItConstants.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <Date.au3> #include <String.au3> #include <StringConstants.au3> #include <EditConstants.au3> #Include <Misc.au3> #include <Array.au3> #Include <WinAPIEx.au3> #include <WinAPIDiag.au3> #include <WinAPIFiles.au3> Local $sLongDayName = _DateDayOfWeek(@WDAY, $DMW_LOCALE_LONGNAME) ; Name Wochentag feststellen Local $sOutput = "" Global $sSource = "C:\Users\User\Test.zip" Global $sDesti = "U:\Test.zip" If $sLongDayName = "Freitag" Then $sEidi = MsgBox(4, "Meldung", "Heute ist " & $sLongDayName & "!!!" & @CRLF & @CRLF & "Möchten sie die Datensicherung durchführen?") If $sEidi = "6" Then MsgBox(0, "Warnung!!!", "Bitte alle Programme und oder geöffneten Dateien schließen!!!") $sStatus = Run(@ComSpec & " /c " & "7z a -tzip Test.zip C:\E\01_DOKUMENTE -pPASSWORT", "C:\Users\User", @SW_HIDE, $STDOUT_CHILD) ; ZIP-File wird mit /Zip erzeugt ProcessWaitClose($sStatus) $sOutput &= StdoutRead($sStatus) Msgbox(0, "Meldung Verschieben", $sOutput & @CRLF & @CRLF & " Soll der Content Kopiert werden?", 7) Local $hProgressProc = DllCallbackRegister('_ProgressProc', 'bool', 'uint64;uint64;uint64;uint64;dword;dword;handle;handle;ptr') ProgressOn('Verschieben', 'Moving...', '0%', -1, -1, BitOR($DLG_NOTONTOP, $DLG_MOVEABLE)) If Not _WinAPI_MoveFileEx($sSource, $sDesti, 3, DllCallbackGetPtr($hProgressProc)) Then _WinAPI_ShowLastError('Error copying ' & $sSource) EndIf DllCallbackFree($hProgressProc) ProgressOff() EndIF Else MsgBox(0, "Meldung", "Heute ist nicht Freitag. Also keine Datensicherung!!!", 4) EndIf Func _ProgressProc($iTotalFileSize, $iTotalBytesTransferred, $iStreamSize, $iStreamBytesTransferred, $iStreamNumber, $iCallbackReason, $hSourceFile, $hDestinationFile, $pData) #forceref $iStreamSize, $iStreamBytesTransferred, $iStreamNumber, $iCallbackReason, $hSourceFile, $hDestinationFile, $pData Local $iPercent = Round($iTotalBytesTransferred / $iTotalFileSize * 100) If $iPercent = 100 Then ProgressSet($iPercent, '', 'Complete') Sleep(1500) Else ProgressSet($iPercent, $iPercent & '%') EndIf Sleep(10) ; to slow down to see the progress bar If _IsPressed('1B') Then ;Abbruch wenn EXC-Taste gedrückt wird Return $PROGRESS_CANCEL Else Return $PROGRESS_CONTINUE EndIf EndFunc ;==>_ProgressProc
-
Hallo Autoit-Professionals,
ich habe immer wieder in meinen Scripten beim Kompilieren weitere Ressourcen-Felder eingefügt wie z.B. Made by = HaSc.
Warum werden diese im Explorer unter Details nicht angezeigt, bzw. wie richte ich es ein, dass sie angezeigt werden?
Danke für die Tipps... -
Hallo Alpines, hallo Conrad,
danke für die Infos,
Das Programm bietet mir One-Klick-Lösungen zu verschiedenen immer wiederkehrenden Tätigkeiten an meinem Rechner und auf von mir benutzte Testrechnern. Z.B.
Öffnen von Ordnern oder ausführen von Windows-Tools. Auch das Einloggen in verschiedene Datenbanken/Systeme die ich mehrmals täglich benötige gehört
dazu und das ist auch der Grund warum es für andere nicht nutzbar sein soll. Für Test-Scenarien habe ich das Proggi nämlich auf einem Share liegen, damit ich auch auf den Testrechnern
darauf Zugriff habe. Deswegen auch kein "Schnickschnack" wie mehrere Versuche oder so. Wenn das Login nicht passt ist Schluss und Exit. Eine Verteilung an andere ist ohnedies
nicht vorgesehen, da es sehr personalisiert erstellt ist. Andere Kollegen haben ja andere Tätigkeiten und andere Schwerpunkte So gesehen ist das Proggi nicht wirklich wertvoll für andere.
Vielleicht könnte man ja mal AutoIt so designen oder eine Möglichkeit einbauen, das es nicht disassemblierbar und es keine Möglichkeit mehr gibt aus einer EXE
wieder Programmcode heraus zu bekommen. Wäre echt cool. -
Hallo Alpines,
dann würde also eine kompilierte Exe-Datei durch einen Disassembler wieder zu lesbarem Quellcode führen?
Wenn ja, wie würde man das verhindern können? -
Hallo Zusammen,
zunächst vielen lieben Dank für eure Antworten. Dazu habe ich noch eine Verständnisfrage: Ich hatte mal im Forum und im Netz recherchiert und ging davon aus, dass es mit den
neuen Versionen von Autoit keine Möglichkeit des Decompilierens usw. mehr gibt. so war zumindest der Tenor. Sollte das nicht Stimmen? -
Hallo Autoit-Gemeinde,
ich glaub ich stehe total im Wald und sehe den Wald vor lauter Bäumen nicht
Könnte mir jemand auf die Sprünge helfen, wie ich einem beliebigen Script/Programm ein Login hinzufüge? Also das Autoit-Proggi(zur exe kompiliert) soll beim Starten erst mal ein Login-fenster anzeigen.
User gibt die Daten ein > Programm startet weiter bzw. ist erst jetzt benutzbar.
Ich habe eine Gui mit Inputs für PWD und User entworfen, eine IF-Abfrage geschrieben die das PWD und den Username auf Richtigkeit prüft . Bei True sollte das Proggi weiter laufen bei False beendet werden.Code
Alles anzeigen#Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 615, 437, 192, 124) $User = GUICtrlCreateInput(" ", 48, 56, 249, 21) $Label1 = GUICtrlCreateLabel("User:", 56, 32, 75, 17) $Label2 = GUICtrlCreateLabel("PWD-Eingabe:", 56, 120, 75, 17) $pwd = GUICtrlCreateInput("Laberbla", 48, 144, 249, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_PASSWORD)) $Los = GUICtrlCreateButton("Los", 80, 216, 153, 41) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### $sPasswort = "Qwertzu7" $sBeschmutzer = "Username" While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Los Pfunkzion() EndSwitch WEnd Func Pfunkzion() $kennw = GUICtrlRead($pwd) $benutz = GUICtrlRead($user) If $kennw == $sPasswort And $benutz == $sBeschmutzer Then MsgBox(0, "Meldung PWD", "das PWD stimmt!!") GUICtrlSetData($pwd, "") GUICtrlSetData($user, "") ????? Wie komme ich von hier ins Programm????? Else MsgBox(0, "Meldung PWD", "Shocking: das PWD oder der Beschmutzer stimmt NICHT!!" & @CRLF & @CRLF & "Das Proggi wird beendet!!!", 5) Exit EndIf EndFunc MsgBox(0, "Weitergehts", "jetzt soll hier das Proggi weitergehen")
Das Login ist für ein Proggi gedacht, dass nur ich selbst benutze und es unbenutzbar machen soll, für den Fall, dass sich jemand am Bürorechner zu schaffen macht.
-
Hallo Water,
sehr cool. Vielen Dank dafür. Nur komisch das meine Google Suche gestern das nicht angezeigt hat.
Fazit: Du bist besser als Google -
Hallo Water,
da ich nicht wusste ob es überhaupt und in welcher Form geht, hatte ich mir noch keine Gedanken gemacht. Ich denke aber das setzen eines Kommentares wird wohl
elegant sein oder hast du eine bessere Idee? -
Hallo AutoIt-Profis,
gibt es die Möglichkeit das das Programm, nachdem die Bilder eingefügt sind, das Word-Dokument (unsichtbar) so markiert, dass die Bilder mit dem Programm eingefügt wurden? Z.B. durch Setzen eines Kommentars in den Dateieigenschaften oder durch einen Eintrag in weißer Schrift, etc.? -
Hallo Oscar,
geschafft das Proggi läuft. Ich starte es mit einer kleinen Größe(1280 x 1024) lasse die Aüflösung und oder Skalierung ändern und setze es dann hoch mit WinSetState($Form1, "", @SW_MAXIMIZE)
vielen Dank für deine und eure Hilfe