Trotzdem schonmal danke
Beiträge von Yaerox
-
-
GUICtrlSetCursor(-1, -1) -> tut sich nichts
GUICtrlSetCursor(-1, 4) -> selbe problem nur mit einem anderem Cursorsymbol -
Also es ist kein Problem am Script!
Bei einem Kollegen geht das Script ohne Probleme ... wie man dem anderen Link entnehmen kann, scheint es ein Rechnerproblem zu sein?
-
Automatische Ablaufsteuerung -> Fehleranalyse Speichermanagement
Hallo zusammen,
#Edit:
Problem: Mein Script ist vom Arbeitsspeicherverbrauch unmenschlich in die Luft gegangen und ich weiss echt nicht wieso. Ich bin der Meinung alles was irgendwo geöffnet wird wird auch wieder geschlossen und ich kann keine Stelle finden an der immer wieder neue Dinge erstellt werden und nicht gelöscht.Denkt daran die config.ini zu bearbeiten falls jemand helfen mag Und die hw.bat ist dafür gedacht, dass ihr euch zum testen Arbeitspläne mit Arbeitspunkte erstellen könnt. Hier die kleine Info, wenn ihr die Interne Funktion _neu_einplanen nicht nutzt, wird der Arbeitsplan immer nur 1x ablaufen
Grüße
-
Genau das wollte ich grad auf schreiben ... ich denke diese Zeilen mit
[autoit]$LastCtrlID = _WinAPI_GetDlgCtrlID(GUICtrlGetHandle(-1))
[/autoit]sind überflüssig.
Und ich verstehe noch nicht ganz was du vor hast...du hast Radio Buttons, kannst du immer nur einen oder mehrere (falls das überhaupt mit Raiod möglich ist, dass weiss ich grad gar nicht :/) anklicken?
Angenommen nur einen:
Soll der der geklickt wird in eine .ini Datei geschrieben werden. Klickst du einen anderen an soll dieser Eintrag ersetzt, oder einfach unten drunter geschrieben werden?
Angenommen mehr als einen:
Die geklickten in eine .ini Datei schreiben. Klickst du andere an sollen diese Einträge ersetzt, oder einfach unten drunter geschrieben werden? -
Schonmal
[autoit]GUIGetCursorInfo
[/autoit]angeschaut?
-
@M@arc:
Bei dem recht grob skizzierten Sachverhalt ("nehmen wir mal an..") und der Sicherheitsrelevanz dieser Thematik, verbietet sich jede Mausklickerei von vornherein.
[...]
Eine Mausklicklösung wird hierfür nicht supported, da sehe ich viel zu viel Gefährdungspotenzial. Solch Geklicke kann gewaltig nach hinten losgehen und ist als ernsthafte Lösung niemals in Betracht zu ziehen.
@M@rc So wie ich das sehe wird es in einer Firma genutzt, da würde ich BugFix erstmal zustimmen und nach einer anständigen Lösung greifen... zu der Aussage du seist nicht der große Programmiere würde ich sagen learning by doing Alternativ müsstest du wenn du jemanden findest der dir das schreibt halt sehr viele vll. vertrauensvolle Daten offenlegen ... da musst du halt wissen in wie fern das realistisch ist dass es jemand anders schreibt... -
Wenn ich Zeit finden sollte werd ich mir darüber nochmal gedanken machen, es gibt ja diverse Möglichkeiten das umzusetzen, vll. ist ja sonst noch jemand von den erfahrenen AutoIt proggern später on der dir eine optimale Lösung bieten kann
Grüße
-
Dann vielleicht sowas?
Spoiler anzeigen
[autoit]Func _CreateMailItem()
[/autoit] [autoit][/autoit] [autoit]
Local $olMailItem = 0
Local $olFormatRichText = 3
Local $olImportanceLow = 0
Local $olImportanceNormal= 1
Local $olImportanceHigh = 2
Local $olFormatHTML = 1
Local $check$oOApp = ObjCreate("Outlook.Application")
[/autoit] [autoit][/autoit] [autoit]
$oOMail = $oOApp.CreateItem($olMailItem)With $oOMail
[/autoit] [autoit][/autoit] [autoit]
.To = $Input_Empfaenger_Read ;("beispiel@domain.com")
.Subject = GUICtrlRead($Combo_Template) ;"email betreff"
;.BodyFormat = $olFormatRichText
.BodyFormat = $olFormatHTML
;.Importance = $olImportanceHigh
Local $anhaenge
If GUICtrlRead($check1) = 1 Then
$anhaenge = $anhaenge & 0
EndIf
If GUICtrlRead($check2) = 1 Then
$anhaenge = $anhaenge & 1
EndIf
If GUICtrlRead($check3) = 1 Then
$anhaenge = $anhaenge & 2
EndIf
If GUICtrlRead($check4) = 1 Then
$anhaenge = $anhaenge & 3
EndIf
If GUICtrlRead($check5) = 1 Then
$anhaenge = $anhaenge & 4
EndIf
If GUICtrlRead($check6) = 1 Then
$anhaenge = $anhaenge & 5
EndIf
Local $splitAnhaenge = StringSplit($anhaenge, "")
For $i To $splitAnhaenge[0]
.Attachments.Add ($aDatei[$i])
Next.HTMLBody = GUICtrlRead($Input_Template)
[/autoit]
;.Body = GUICtrlRead($Input_Template)
.Display
;.Send ;ist aus Sicherheitsgründen standartmäßig deaktiviert
EndWith
EndFunc ;--> _CreateMailItem()
Ich hab grad net ganz so viel Zeit mir darüber Gedanken zu machen, man könnte bei dem Beispiel nun auch die Schleife und den Split weglassen und statt die Variable anhaenge zu nutzen bei den If-Abfragen immer direkt .Attachments.Add hinschreiben ... ist halt keine wirklich optimale Lösung und je nachdem wie viele verschiedene Anhänge es gibt unpraktisch aber das wäre jetzt ein wenig gedanken machen wie man das anders verpacken kann.Trotzdem hoffe ich wenigstens etwas geholfen haben zu können.
Grüße -
Sind die Namen der Anhänge denn auch alle hart codiert?
Sonst würde ich das vielleicht ein wenig anders schreiben...
Wenn hart codiert, und keine Verbindung zu ner DB oder sowas ist, dann vll. ein Array erstellen indem alle Anhänge (namentlich) gespeichert werden, und das Array als eine art Strichliste nutzen ... bei denen die gechecked worden sind wird dann der name aus dem Array gesucht und ab die post.#Edit: sry grad total unfähig das Forum zu nutzen, hab erst den Falschen post gelöscht gehabt ... naja Code s.u.
-
könnte man es noch bei erreichen des letzten Tages die Zeit blinken lassen?
Das wäre sehr cool....
Wenn du ihn doch ehh erst am letzten Arbeitstag startest, dann kann es ja ruhig immer blinken, oder nicht? -
Frag ich mal so, wie viele Tage voher willst du das starten?
-
Ich hätte es wie AspirinJunkie mit einer 2D-Array Lösung versucht/gemacht.
2D-Array Werte zuweisen, mit zwei Zählervariablen und ReDim
Aber oben ist ja ein perfektes Beispiel
-
Änder mal alternativ die Zeile
[autoit]
[/autoit]
$Form1 = GUICreate("Form1", 800, 600, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_POPUP, $WS_GROUP, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE))
[autoit]
in$Form1 = GUICreate("Form1", 800, 600, -1, -1)
[/autoit] -
Wenn du das
[autoit], BitOR($WS_MINIMIZEBOX, $WS_POPUP, $WS_GROUP, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)
[/autoit]in der Zeile GUICreate entfernst hast du ein normales Fenster das du dann verschieben kannst (wirst ja wahrscheinlich eine Desktoperweiterung o.ä. haben).
-
Dachte ich hätte das in der Themen überschrift erklärt, sorry...
War nur nochmal als Absicherung siehe oben den Spoiler
Grüße
-
Spoiler anzeigen
[autoit]#include <Date.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $hour, $Mins, $secs
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 800, 600, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_POPUP, $WS_GROUP, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE))
GUISetBkColor(0x000000)
$Label1 = GUICtrlCreateLabel("Label1", 10, 10, 780, 580, $SS_CENTERIMAGE)
GUICtrlSetFont(-1, 150, 400, 0, "Arial")
GuiCtrlSetColor($Label1, 0xFF0000)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
_Update()
AdlibRegister("_Update", 1000)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
WEndFunc _Update()
[/autoit]
_TicksToTime(_DateDiff('s', _NowCalc(), "2012/11/19 15:00:00") * 1000, $hour, $Mins, $secs)
GUICtrlSetData($Label1, StringFormat("%02i:%02i:%02i", $hour, $Mins, $secs))
EndFunc ;==>_Update
Grüße -
Okay Chip hat das jetzt mit 30 Zeilen weniger was ich gebastelt hätte
-
Das ist was anderes ein Countdown also, und kein Zähler?
-
Wie wäre es hiermit?
Danke bitte an: Make-Grafik der dieses Script zum großteil geschrieben hatte (Ich habe eine Uhrzeit-Eingabe nach bestimmten kriterien benötigt). Ich habe lediglich die Schleife zum hochzählen geschrieben/das Script bearbeitet.
Grüße
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <StaticConstants.au3>
;~ ***
Opt('GUIOnEventMode', 1)
Opt('GUICloseOnEsc', 0)
;~ ***
Global $Save_Input_1 = ''
Global $Save_Input_2 = ''
Global $Save_Input_3 = ''
;~ # INFO >>
;~ > Diese beiden Variablen sind als Speicherort gedacht.
;~ > Diese helfen dass die 2 Lables nur dann geändert werden,
;~ > wenn eine Eingabe erfolgt wurde.;~ +| ===== ===== ===== ===== ===== |+
[/autoit] [autoit][/autoit] [autoit]Global Const $GUI = GUICreate('Counter', 180, 40)
[/autoit] [autoit][/autoit] [autoit]
Global Const $Input_1 = GUICtrlCreateInput('00', 10, 10, 50, 20)
Global Const $Input_2 = GUICtrlCreateInput('00', 60, 10, 50, 20)
Global Const $Input_3 = GUICtrlCreateInput('00', 100, 10, 50, 20)
Global Const $Label_1 = GUICtrlCreateLabel('', 10, 10, 45, 20, $SS_CENTER)
Global Const $Label_2 = GUICtrlCreateLabel(':', 55, 10, 10, 20, $SS_CENTER)
Global Const $Label_3 = GUICtrlCreateLabel('', 65, 10, 50, 20, $SS_CENTER)
Global Const $Label_4 = GUICtrlCreateLabel(':', 110, 10, 10, 20, $SS_CENTER)
Global Const $Label_5 = GUICtrlCreateLabel('', 125, 10, 50, 20, $SS_CENTER)
;~ ***
GUICtrlSetState($Input_1, $GUI_HIDE)
GUICtrlSetState($Input_2, $GUI_HIDE)
GUICtrlSetState($Input_3, $GUI_HIDE)
;~ ***
GUICtrlSetFont($Label_1, 15)
GUICtrlSetFont($Label_2, 15)
GUICtrlSetFont($Label_3, 15)
GUICtrlSetFont($Label_4, 15)
GUICtrlSetFont($Label_5, 15)
;~ ***
GUICtrlSetOnEvent($Label_1, '_SetFocus_1')
GUICtrlSetOnEvent($Label_3, '_SetFocus_2')
GUICtrlSetOnEvent($Label_5, '_SetFocus_3')
;~ # INFO >>
;~ > Weil es nicht möglich ist mit der Maus manuell zwischen den Input Controls zu wechseln,
;~ > werden beim draufklicken der Fokus auf diese gewechselt.
GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit', $GUI)
GUISetState(@SW_SHOW, $GUI)Global $sEndzeit = "14:00:00"
[/autoit] [autoit][/autoit] [autoit]
;~ # INFO >>
;~ > Hier die gewünschte Endzeit im Format HH:MM:SS eintragen.
Global $aEndzeit = StringSplit($sEndzeit, ":")
;~ +| ===== ===== ===== ===== ===== |+;~ +| ===== ===== ===== ===== ===== |+
[/autoit] [autoit][/autoit] [autoit]While @HOUR & ":" & @MIN & ":" & @SEC < $sEndzeit
[/autoit] [autoit][/autoit] [autoit]
Local $sStunde, $sMinute, $sSekunde
For $sStunde = 0 To $aEndzeit[1]
For $sMinute = 0 To 59
For $sSekunde = 1 To 59
Sleep(1000)
If _Check($Input_1, $Save_Input_1) Then GUICtrlSetData($Label_1, GUICtrlRead($Input_1))
If _Check($Input_2, $Save_Input_2) Then GUICtrlSetData($Label_3, GUICtrlRead($Input_2))
If _Check($Input_3, $Save_Input_3) Then GUICtrlSetData($Label_5, GUICtrlRead($Input_3))
GUICtrlSetData($Input_3, $sSekunde)
Next
GUICtrlSetData($Input_3, "00")
GUICtrlSetData($Input_2, $sMinute+1)
Next
GUICtrlSetData($Input_2, "00")
GUICtrlSetData($Input_3, "00")
GUICtrlSetData($Input_1, $sStunde+1)
Next
WEnd;~ +| ===== ===== ===== ===== ===== |+
[/autoit] [autoit][/autoit] [autoit]Func _Exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _Check($Control, ByRef $Save)
[/autoit] [autoit][/autoit] [autoit]
Local Const $Read = GUICtrlRead($Control)
If $Read <> $Save Then
$Save = $Read
Return True
Else
Return False
EndIf
;~ # INFO >>
;~ > Diese Funktion verhindert, dass die Labels permament flackern.
;~ > Es wird geprüft ob das Input Control ungleich den gespeicherten Wert ist.
;~ > Wenn dies der Fall ist, wird der neue Wert in die entsprechende Variable gespeichert.
;~ > Danach wird TRUE Returnt und die If-Abfrage in der Hauptschleife wird ausgeführt.
;~ > Erst dann wird das Label verändert!
EndFuncFunc _SetFocus_1()
[/autoit] [autoit][/autoit] [autoit]
ControlFocus($GUI, '', $Input_1)
GUICtrlSetData($Input_1, '')
EndFuncFunc _SetFocus_2()
[/autoit] [autoit][/autoit] [autoit]
ControlFocus($GUI, '', $Input_2)
GUICtrlSetData($Input_2, '')
EndFuncFunc _SetFocus_3()
[/autoit]
ControlFocus($GUI, '', $Input_3)
GUICtrlSetData($Input_3, '')
EndFunc