funktioniert perfekt, 1000 Dank für die schnelle Hilfe.
Und wieder was neues gelernt auf dem oftmals steinigen Weg mit Autoit
Gruß MKS
funktioniert perfekt, 1000 Dank für die schnelle Hilfe.
Und wieder was neues gelernt auf dem oftmals steinigen Weg mit Autoit
Gruß MKS
niemand eine Idee wie ich aus meiner Verzweiflung komme?
Hallo zusammen,
ich versuche mir einen Timer zu basteln, dank der _countdown Funktion von bugfix hab ich es nun auch soweit hinbekommen.
Beim ersten Start funktioniert das ganze soweit bereits wie es soll.
Jetzt wollte ich das ganze noch soweit modifizieren das man die Timer Zeit mittels einer extra GUI ändern kann. Und da beginnt nun mein Problem, sobald die Änderung mittels Button abgeschickt wird und der Timer erfolgreich neu startet, funktioniert keine der anderen Dinge in der GUI.
Edit/Stop/Close und ebenso das bewegen des Fensters ist dann nicht mehr möglich.
Hoffe ich konnte mein Problem annähernd beschreiben
Danke
#include <APIConstants.au3>
#include <Date.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
Opt("MustDeclareVars", 1)
Opt("GUIOnEventMode", 1)
Local $tGUI, $tLabel_timer
Local $WinXPos, $WinYPos, $WinPos
Local $sGUI, $iH, $iM, $iS
Local $sec = 0, $min = 10, $hr = 0, $stopit = 0
Local $inifile = @ScriptDir & "\MyTimer.ini"
_showTimer()
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(100)
WEnd
; #FUNCTION# ===================================================================
; Description ...: show timer window
; ==============================================================================
Func _showTimer()
$tGUI = GUICreate("Timer", 300, 82, -1, -1, $WS_POPUP)
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_PrimeDown")
GUISetOnEvent($GUI_EVENT_CLOSE, "_CloseApp")
$tLabel_timer = GUICtrlCreateLabel("00:00:00 h", 0, 17, 300, 65, $SS_CENTER)
GUICtrlSetBkColor(-1, 0xBFCDDB)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetFont(-1, 40, 400, 0, "Roland")
GUICtrlCreateLabel("[Edit]", 0, 1, 30, 15)
GUICtrlSetOnEvent(-1, "_showSetup")
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlCreateLabel("[Stop]", (300 / 2) - 17, 1, 34, 15)
GUICtrlSetOnEvent(-1, "_stopTimer")
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlCreateLabel("[Close]", 259, 1, 40, 15, $SS_RIGHT)
GUICtrlSetOnEvent(-1, "_closeApp")
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
; alte Fensterposition laden und GUI verschieben
If $inifile <> "" Then
$WinXPos = IniRead($inifile, "Startwerte", "WinXPos", "")
$WinYPos = IniRead($inifile, "Startwerte", "WinYPos", "")
If $WinXPos <> "" And $WinYPos <> "" Then WinMove("Timer", "", $WinXPos, $WinYPos)
EndIf
_startCountDown()
EndFunc ;==>_showTimer
; #FUNCTION# ===================================================================
; Description ...: show Setup window
; ==============================================================================
Func _ShowSetup()
_stopTimer()
$sGUI = GUICreate("Settings", 256, 205, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "_CloseSetup")
GUICtrlCreateLabel('Stunden', 15, 48, 60, 17)
$iH = GUICtrlCreateInput('', 80, 45, 20, 20, $ES_NUMBER)
GUICtrlCreateLabel('Minuten', 15, 78, 60, 17)
$iM = GUICtrlCreateInput('', 80, 75, 20, 20, $ES_NUMBER)
GUICtrlCreateLabel('Sekunden', 15, 108, 60, 17)
$iS = GUICtrlCreateInput('', 80, 105, 20, 20, $ES_NUMBER)
GUICtrlCreateButton('Change time', 140, 15, 105, 25)
GUICtrlSetOnEvent(-1, "_closeSetup")
GUISetState(@SW_SHOW)
EndFunc ;==>_ShowSetup
; #FUNCTION# ===================================================================
; Description ...: Close setup window
; ==============================================================================
Func _CloseSetup()
If GUICtrlRead($iH) = '' Then
$hr = 0
Else
$hr = GUICtrlRead($iH)
EndIf
If GUICtrlRead($iM) = '' Then
$min = 0
Else
$min = GUICtrlRead($iM)
EndIf
If GUICtrlRead($iS) = '' Then
$sec = 0
Else
$sec = GUICtrlRead($iS)
EndIf
ConsoleWrite("H: " & $hr & @CRLF & "M: " & $min & @CRLF & "S: " & $sec & @CRLF)
GUIDelete($sGUI)
_startCountDown()
EndFunc ;==>_CloseSetup
[/autoit] [autoit][/autoit] [autoit]; #FUNCTION# ===================================================================
; Description ...: close App and write position to ini file
; ==============================================================================
Func _CloseApp()
IniDelete($inifile, "Startwerte")
$WinPos = WinGetPos("Timer")
IniWrite($inifile, "Startwerte", "WinXPos", $WinPos[0])
IniWrite($inifile, "Startwerte", "WinYPos", $WinPos[1])
Exit
EndFunc ;==>_CloseApp
; #FUNCTION# ===================================================================
; Description ...: Start Countdown
; ==============================================================================
Func _startCountDown()
_CountDown($sec, $min, $hr, 0, True, $tLabel_timer)
EndFunc ;==>_startCountDown
; #FUNCTION# ===================================================================
; Description ...: Stop Timer
; ==============================================================================
Func _stopTimer()
$stopit = 1
EndFunc ;==>_stopTimer
; #FUNCTION# ===================================================================
; Description ...: makes GUI moveable with mouse
; ==============================================================================
Func _PrimeDown()
Local $DifX, $DifY, $MouseData = GUIGetCursorInfo(@GUI_WinHandle)
Local $WinPos = WinGetPos(@GUI_WinHandle)
Local $MPos = MouseGetPos()
$DifX = $MPos[0] - $WinPos[0]
$DifY = $MPos[1] - $WinPos[1]
While $MouseData[2]
$MPos = MouseGetPos()
$WinPos = WinGetPos(@GUI_WinHandle)
If ($WinPos[0] <> ($MPos[0] - $DifX)) Or ($WinPos[1] <> ($MPos[1] - $DifY)) Then
WinMove(@GUI_WinHandle, '', $MPos[0] - $DifX, $MPos[1] - $DifY)
EndIf
Sleep(15)
$MouseData = GUIGetCursorInfo(@GUI_WinHandle)
WEnd
;GUICtrlSetState($suchtext_id,$GUI_FOCUS)
EndFunc ;==>_PrimeDown
;----------------------------------------------------------------------------------------------------------------------
; Funktion _CountDown($SEC [, $MIN=0 [, $HOUR=0 [, $DAY=0 [, $VISIBLEDOWN=True [, $ALTERNATECTRL='TT']]]]])
;
; Beschreibung zählt vorgegebene Zeitspanne (Tage, Stunden, Minuten, Sekunden) herunter mit Anzeige Tooltip (Standard)
; oder Ausgabe in GUI-Ctrl; wahlweise Anzeige von Restzeit (Standard) oder abgelaufener Zeit
;
; Parameter $SEC: Sekunden
; optional $MIN: Minuten
; optional $HOUR: Stunden
; optional $DAY: Tage
; optional $VISIBLEDOWN: Ansicht (herunterzählen/heraufzählen)
; optional $ALTERNATECTRL: GUI-Ctrl in das die Ausgabe mittels GUICtrlSetData() ausgegeben wird
;
; Erfordernisse #include <Date.au3>
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;----------------------------------------------------------------------------------------------------------------------
Func _CountDown($sec, $min = 0, $HOUR = 0, $day = 0, $VISIBLEDOWN = True, $ALTERNATECTRL = 'TT')
Local $Sekunden, $secShow, $end
$Sekunden = $sec + $min * 60 + $HOUR * 3600 + $day * 86400
$end = _DateAdd('s', $Sekunden, _NowCalc())
Local $message
Do
Sleep(100)
$sec = _DateDiff('s', _NowCalc(), $end)
If Not $VISIBLEDOWN Then
$secShow = $Sekunden - $sec
Else
$secShow = $sec
EndIf
Select
Case $secShow < 60
If $ALTERNATECTRL = 'TT' Then
ToolTip(StringFormat('%02u', $secShow) & ' s')
Else
GUICtrlSetData($ALTERNATECTRL, StringFormat('%02u', $secShow) & ' s')
EndIf
Case $secShow < 60 * 60
$message = StringFormat('%02u', Floor($secShow / 60)) & ':' & _
StringFormat('%02u', Mod($secShow, 60)) & ' min'
If $ALTERNATECTRL = 'TT' Then
ToolTip($message)
Else
GUICtrlSetData($ALTERNATECTRL, $message)
EndIf
Case $secShow < 60 * 60 * 24
$message = StringFormat('%02u', Floor($secShow / 3600)) & ':' & _
StringFormat('%02u', Floor(Mod($secShow, 3600) / 60)) & ':' & _
StringFormat('%02u', Mod(Mod($secShow, 3600), 60)) & ' h'
If $ALTERNATECTRL = 'TT' Then
ToolTip($message)
Else
GUICtrlSetData($ALTERNATECTRL, $message)
EndIf
Case Else
$message = Floor($secShow / 86400) & ' d / ' & _
StringFormat('%02u', Floor(Mod($secShow, 86400) / 3600)) & ':' & _
StringFormat('%02u', Floor(Mod(Mod($secShow, 86400), 3600) / 60)) & ':' & _
StringFormat('%02u', Mod(Mod(Mod($secShow, 86400), 3600), 60)) & ' h'
If $ALTERNATECTRL = 'TT' Then
ToolTip($message)
Else
GUICtrlSetData($ALTERNATECTRL, $message)
EndIf
EndSelect
Until $sec = 0 Or $stopit = 1
$stopit = 0
#cs
If $sec = 0 Then
GUICtrlSetData($tLabel_timer, " It's time")
SoundPlay(@ScriptDir & "\alarma.wav", 1)
EndIf
#ce
EndFunc ;==>_CountDown
Gruß Mks
klappt perfekt
Die Sicherung beim Load Button bastel ich mir dann noch zusammen, ist ja kein großes Thema.
Vielen Dank für deine Hilfe.
bringt leider das gleiche Ergebnis
Hallo,
ich habe versucht in meiner GUI mittels WinMove beim drücken von verschiedenen Buttons die Größe zu ändern.
Das vergrößern der GUI um z.b. 200 funktioniert bestens, wenn ich aber mit einem anderen Button wieder auf die original Größe zurück möchte wird die GUI kleiner wie original definiert.
Evtl. liegt es ja auch an meinem Versuch das ganze in eine Funktion zu packen, aber da ich die Größenänderung noch öfters brauche war es die praktischste Methode.
Allerdings habe ich auch bei direktem Aufruf ohne funktion das gleiche Problem.
Hab hier nur einen Auszug meines Codes gepostet der das Problem aufzeigt, daher die evtl unnützen Includes
[autoit]
#include <Array.au3>
#include <EditConstants.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiButton.au3>
#include <GuiImageList.au3>
#include <ListViewConstants.au3>
Opt("GUIResizeMode",$GUI_DOCKALL)
Opt("GUIDataSeparatorChar", "/")
Local $guiWidth = "825"
Local $guiHeight = "490"
$hGUI = GUICreate("Bücherliste", $guiWidth, $guiHeight+0, -1, -1)
$cListView = GUICtrlCreateListView("Autor / Serie / Titel / Genre", 8, 64, $guiWidth-16, 361)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 200)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 200)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 200)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 185)
$cButton_Load = GUICtrlCreateButton("Liste laden", 8, 16, 105, 33)
$hImgLoad = _GUIImageList_Create(24, 24, 5, 3)
_GUIImageList_AddIcon($hImgLoad, "shell32.dll", -235, True)
_GUICtrlButton_SetImageList($cButton_Load, $hImgLoad, 1)
$cInput = GUICtrlCreateInput("", 136, 24, 145, 21)
GUICtrlSendMsg(-1, $EM_SETCUEBANNER, True, "Suchbegriff eingeben...")
$cButton_Search = GUICtrlCreateButton("Suchen", 304, 16, 105, 33)
$hImgSearch = _GUIImageList_Create(24, 24, 5, 3)
_GUIImageList_AddIcon($hImgSearch, "shell32.dll", -23, True)
_GUICtrlButton_SetImageList($cButton_Search, $hImgSearch, 1)
$cLabel_hit = GUICtrlCreateLabel("", 420, 25, 250, 25)
$cButton_exit = GUICtrlCreateButton("Verlassen", $guiWidth-113, 16, 105, 33)
$hImgExit = _GUIImageList_Create(24, 24, 5, 3)
_GUIImageList_AddIcon($hImgExit, "shell32.dll", -28, True)
_GUICtrlButton_SetImageList($cButton_exit, $hImgExit, 1)
$cButton_edit = GUICtrlCreateButton("Editieren", 8, 440, 105, 33)
GUISetState(@SW_SHOW)
[/autoit][autoit][/autoit][autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $cButton_exit
Exit
Case $cButton_Search
Case $cButton_Load
_GuiResize(0)
$posEdit = WinGetPos($hGUI)
WinMove($hGUI, "", $posEdit[0], $posEdit[1], $guiWidth, $guiHeight)
Case $cButton_edit
_GuiResize(200)
EndSwitch
WEnd
;Change GuiHeight
Func _GuiResize($newHeight)
$posEdit = WinGetPos($hGUI)
;MsgBox(0, $posEdit[0], $posEdit[1])
WinMove($hGUI, "", $posEdit[0], $posEdit[1], $guiWidth, $guiHeight+$newHeight)
EndFunc
Vielen Dank
vielen Dank an alle für die Beispiele und Vorschläge
Habe es nun mittels _GUICtrlEdit_AppendText($hWnd, $sText) gelöst und es klappt wie ich es haben wollt.
Nochmals danke
Gruß MKS
habs probiert, aber leider ohne Erfolg.
Es wird immer nur das momentan aktive angezeigt und keine Historie.
Hallo,
ich erstelle im Moment mittels autoIt einen kleinen software Installer. Soweit läuft auch alles bestens.
Nun möchte ich aber gerne das die einzelnen Schritte der Installation in einem mehrzeiligen Eingabefeld mitschreiben.
Sprich bei jedem Step der Installation sollte eine neue Info dazukommen z.B.
1.Winzip installiert
2.Acrobat Reader installliert
3............
4............
Im Moment habe ich es folgendermassen eingestellt
If GUICtrlRead($chk_std_3)=1 then GUICtrlSetData($showmeall,"Installing WinZip......")
If GUICtrlRead($chk_std_3)=1 then RunWait($sourcedir & "\winzip\winzip.cmd")
If GUICtrlRead($chk_std_5)=1 then GUICtrlSetData($showmeall,"Installing Acrobat Reader......")
If GUICtrlRead($chk_std_5)=1 then RunWait($sourcedir & "\ACROBAT-READER9\adobeReader9.cmd","",@SW_MINIMIZE)
Nur wird mir auf diesem Weg das Editfeld jedesmal neu gefüllt und es wird dadurch nur die aktuelle Installation, aber nicht die bereits erledigten angezigt.
Meine Frage wäre nun ob es da eine Möglichkeit gibt das ich die Info Zeilenweise mitprotokolieren kann .
Vielen dank
Gruß MKS
ok mein Fehler, hab in der hilfe bei DirGetSize nicht weiter als bis "Gibt die Größe eines Verzeichnisses in Bytes zurück." gelesen.
Trotz dem vielen Dank für die schnelle Hilfe.
Gruß MKS
Hallo,
schon mal vorab sorry für meine wahrscheinlich dumme Frage, aber bin leider noch relativer Neuling im Bereich AutoIt und manche dinge bringen mich einfach noch zum verzweifeln
Ansich suche ich nur eine Möglichkeit festzustellen wieviele Files in einem Directory sind, das ganze braucht nichtmal sehr flexibel zu sein. Soll heissen der ORdner kann auch festgelegt sein vom Script.
Danke für eure Hilfe
Gruß MKS