Beiträge von BugFix
-
-
Suchst du vielleicht sowas:
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Global $toggle = False#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Form1", 303, 166, 193, 115)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Button1 = GUICtrlCreateButton("Button1", 64, 56, 161, 33, 0)
GUICtrlSetOnEvent(-1, "Button1Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc Button1Click()
[/autoit] [autoit][/autoit] [autoit]
If $toggle Then
_Fun2()
Else
_Fun1()
EndIf
$toggle = Not $toggle
EndFuncFunc Form1Close()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _Fun1()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, '', 'Jetzt wird Funktion 1 ausgeführt')
EndFuncFunc _Fun2()
[/autoit]
MsgBox(0, '', 'Jetzt wird Funktion 2 ausgeführt')
EndFuncEdit:
Theoretisch kannst du auch beliebig viele verschiedene Funktionen auf diese Art ausführen.
Bleibt natürlich die Frage, ob das Sinn macht.
Hier mal eine Version mit 5 Funktionen.Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <array.au3>
Opt("GUIOnEventMode", 1)
Global $aFunc[5] = [1,2,3,4,5]#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Form1", 303, 166, 193, 115)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Button1 = GUICtrlCreateButton("Button1", 64, 56, 161, 33, 0)
GUICtrlSetOnEvent(-1, "Button1Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc Button1Click()
[/autoit] [autoit][/autoit] [autoit]
Local $funNr = $aFunc[0]
_ArrayPush($aFunc, $funNr)
Execute('_Fun' & $funNr & '()')
EndFuncFunc Form1Close()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _Fun1()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, '', 'Jetzt wird Funktion 1 ausgeführt')
EndFuncFunc _Fun2()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, '', 'Jetzt wird Funktion 2 ausgeführt')
EndFuncFunc _Fun3()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, '', 'Jetzt wird Funktion 3 ausgeführt')
EndFuncFunc _Fun4()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, '', 'Jetzt wird Funktion 4 ausgeführt')
EndFuncFunc _Fun5()
[/autoit]
MsgBox(0, '', 'Jetzt wird Funktion 5 ausgeführt')
EndFunc -
Du kannst keine Funktion INNERHALB einer schleife deklarieren!
[autoit]
Also so sollte es etwa aussehen:While True
[/autoit][autoit][/autoit][autoit]
; CODE
; Funktionsaufruf
WEndFunc FUNKTION()
[/autoit]
;Code
EndFunc -
Hi,
ich hatte mal einen Skriptgenerator für FileInstall erstellt.
Bindet auch Unterordner ein. Vielleicht passt das ja. -
Hi,
es ist noch ein kleiner Bug drin - aber jetzt zu spät (oder früh :P) um danach zu suchen. Die Grundfunktionalität wird aber ersichtlich.Spoiler anzeigen
[autoit]#include <guiconstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <Process.au3>
Opt('TrayOnEventMode', 1)
Opt("TrayMenuMode",1)
Opt('WinTitleMatchMode', 2)Global $aWin, $aComp, $aState[1][3]
[/autoit] [autoit][/autoit] [autoit]
$aState[0][0] = -1$aWin = WinList()
[/autoit] [autoit][/autoit] [autoit]
$t_mnu = TrayCreateMenu('Visible Windows')
$t_shape = TrayCreateItem('')
$t_end = TrayCreateItem('Ende')
TrayItemSetOnEvent(-1, 'Ende')
_CreateTrayItem()TraySetState()
[/autoit] [autoit][/autoit] [autoit]AdlibEnable('_CompareArrays', 10000)
[/autoit] [autoit][/autoit] [autoit]While True
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc Ende()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc Toggle()
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aState) -1
If $aState[$i][0] = @TRAY_ID Then
If $aState[$i][1] Then
WinSetState($aState[$i][2], '', @SW_HIDE)
TrayItemSetState($aState[$i][0], $TRAY_UNCHECKED)
Else
WinSetState($aState[$i][2], '', @SW_SHOW)
TrayItemSetState($aState[$i][0], $TRAY_CHECKED)
EndIf
$aState[$i][1] = Not $aState[$i][1]
ExitLoop
EndIf
Next
EndFuncFunc _CreateTrayItem()
[/autoit] [autoit][/autoit] [autoit]
Local $i, $k
For $i = 1 To UBound($aWin) -1
If $aWin[$i][0] <> "" AND IsVisible($aWin[$i][1]) Then
If $aState[0][0] = -1 Then ; [0]= ID TrayItem, [1]= True/False (checked/unchecked), [2]= WinTitle
$k = 0
Else
ReDim $aState[UBound($aState)+1][3]
$k = UBound($aState)-1
EndIf
$ProcessName = _ProcessGetName(WinGetProcess($aWin[$i][0]))
$aState[$k][0] = TrayCreateItem($ProcessName, $t_mnu)
TrayItemSetOnEvent(-1, 'Toggle')
TrayItemSetState(-1, $TRAY_CHECKED)
$aState[$k][1] = True
$aState[$k][2] = $aWin[$i][0]
EndIf
Next
$aComp = $aWin
EndFuncFunc IsVisible($handle)
[/autoit] [autoit][/autoit] [autoit]
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIf
EndFuncFunc _CompareArrays()
[/autoit] [autoit][/autoit] [autoit]
$aWin = WinList()
For $i = 0 To UBound($aWin) -1
If $aWin[$i][0] <> $aComp[$i][0] Then
_DelItems()
_CreateTrayItem()
EndIf
Next
EndFuncFunc _DelItems()
[/autoit]
For $i = 0 To UBound($aState) -1
TrayItemDelete($aState[$i][0])
Next
ReDim $aState[1][3]
$aState[0][0] = -1
EndFuncEdit:
Du willst ja das jeweilige Fenster OnTop setzen. Insofern ist @SW_SHOW / @SW_HIDE nicht so passend.
Mit WinSetOnTop läßt sich das realisieren - allerdings müßte man für den richtigen Status wissen, welches Fenster im Augenblick OnTop ist. Und das ist über WinGetState nicht ermittelbar. Mal sehen, ob es dafür eine Möglichkeit gibt.Hab nochmal ein wenig gesucht - aber keine Möglichkeit gefunden, das Fenster im Vordergrund zu identifizieren. Eine entsprechende WinApi-Funktion bringt auch nur das Vordergrundfenster, wenn es aktiv ist zurück.
-
Zitat
Ich Berechne für jeden Startpunkt also die Zeit wie lange es zu Ziel1 dauert und speichere das in einem Array das dann so aussieht
Warum fügst du hier nicht gleich die Begrenzung auf 175 Stunden ein und speicherst nur Werte die kleiner gleich 175 sind?
-
Bitte beim Übersetzen beachten:
Einige Hilfetexte sind schon im Originaltext fehlerhaft!
Bitte die Fehler nicht mit übersetzen, also auch auf sachlich richtig prüfen.
Bsp.: In der Funktion _ArrayTrim()
ist im Original folgende Parametererklärung
$iBase Optional: Start Array index for sort, normally set to 0 or 1.
enthalten - gemeint ist trim statt sort. -
Hier mal, wie du die Fensterliste reinbekommst:
Spoiler anzeigen
[autoit]#include <guiconstants.au3>
[/autoit] [autoit][/autoit] [autoit]
Opt('TrayOnEventMode', 1)
Opt("TrayMenuMode",1)
Opt('WinTitleMatchMode', 2)Global $aWin
[/autoit] [autoit][/autoit] [autoit]$gui1 = GUICreate('TEST 1')
[/autoit] [autoit][/autoit] [autoit]
$gui2 = GUICreate('TEST 2')
$gui3 = GUICreate('TEST 3')
$gui4 = GUICreate('TEST 4')$aWin = WinList('TEST') ; alle Fenster mit TEST im Titel
[/autoit] [autoit][/autoit] [autoit]
Global $aState[$aWin[0][0]][3] ; [0]= ID TrayItem, [1]= True/False (checked/unchecked), [2]= WinHandle
For $i = 0 To UBound($aState) -1
$aState[$i][1] = False
$aState[$i][2] = $aWin[$i+1][1]
Next$t_mnu = TrayCreateMenu('Mein Traymenü')
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To UBound($aWin) -1
$aState[$i-1][0] = TrayCreateItem($aWin[$i][0], $t_mnu)
TrayItemSetOnEvent(-1, 'Toggle')
Next
$t_shape = TrayCreateItem('', $t_mnu)
$t_end = TrayCreateItem('Ende', $t_mnu)
TrayItemSetOnEvent(-1, 'Ende')TraySetState()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While True
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc Toggle()
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aState) -1
If $aState[$i][0] = @TRAY_ID Then
If $aState[$i][1] Then
GUISetState(@SW_HIDE, $aState[$i][2])
TrayItemSetState($aState[$i][0], $TRAY_UNCHECKED)
Else
GUISetState(@SW_SHOW, $aState[$i][2])
TrayItemSetState($aState[$i][0], $TRAY_CHECKED)
EndIf
$aState[$i][1] = Not $aState[$i][1]
ExitLoop
EndIf
Next
EndFuncFunc Ende()
[/autoit]
Exit
EndFunc
Aktualisieren kannst du auch, WinList intervallmäßig durchführen und mit der bestehenden Liste(Array) vergleichen. Wenn Unterschiede neu erstellen. Das kriegst du schon hin.
-
So etwas?
Spoiler anzeigen
[autoit]#include <guiconstants.au3>
[/autoit] [autoit][/autoit] [autoit]
Opt('TrayOnEventMode', 1)
Opt("TrayMenuMode",1)Global $state = False
[/autoit] [autoit][/autoit] [autoit]
$gui = GUICreate('TEST')$t_mnu = TrayCreateMenu('Mein Traymenü')
[/autoit] [autoit][/autoit] [autoit]
$t_sub1 = TrayCreateItem('Fenster on/off', $t_mnu)
TrayItemSetOnEvent(-1, 'Toggle')
$t_sub2 = TrayCreateItem('Ende', $t_mnu)
TrayItemSetOnEvent(-1, 'Ende')TraySetState()
[/autoit] [autoit][/autoit] [autoit]While True
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc Toggle()
[/autoit] [autoit][/autoit] [autoit]
If $state Then
GUISetState(@SW_HIDE, $gui)
TrayItemSetState($t_sub1, $TRAY_UNCHECKED)
Else
GUISetState(@SW_SHOW, $gui)
TrayItemSetState($t_sub1, $TRAY_CHECKED)
EndIf
$state = Not $state
EndFuncFunc Ende()
[/autoit]
Exit
EndFunc -
Ich hab im Hintergrund immer LingoPad offen, per Strg+C / Strg+V schwupp den Begriff rüberkopiert = Übersetzung beginnt sofort automatisch.
-
[autoit]
$index = _GUICtrlListBox_GetCurSel(GUICtrlGetHandle($List))
[/autoit]
MsgBox(0, 'Inhalt aktuelle Zeile', _GUICtrlListBox_GetText(GUICtrlGetHandle($List), $index)) -
Also die Geschichte mit Google als VorÜbersetzer scheitert an der Unbrauchbarkeit der Ergebnisse von Google.
Für einzelne Wörter mag das brauchbar sein, aber bei komplexen, noch dazu fachlichen Texten, hilft eigentlich nur: Löschen und richtig übersetzen.
-
Hi,
[autoit]
mehrere Fehler:If $Msg=$ConfB Then
[/autoit]
msgbox(0,"",_GUICtrlListBox_GetSelItemsText($List))
msgbox(0,"",_GUICtrlListBox_GetText($List, 1))
EndIf
- $List enthält die ID, die Funktionen erfordern aber das Handle (steht so auch in der Hilfe!), also:
GUICtrlGetHandle($List) statt $List einsetzen
- _GUICtrlListBox_GetSelItemsText() gibt ein Array zurück!! -
Fileread('C:\).txt')
Ich würde mich als Programm oder Betriebssystem auch weigern eine Datei mit diesem "Namen" zu verarbeiten.

Geht eigentlich an jeder gängigen Nomenklatur vorbei.
-
-
Hi Anna,
also bei den Größeneinstellungen muß genau der Text stehen, der unter dem Schieberegler zu lesen ist (z.B. "1280 x 1024 Pixel"). Denn diesen Text lese ich bei jedem Schleifendurchlauf aus.
Wegen der Farbtiefe: Die Werte stehen in einer Combobox.
Auf nicht selbst erzeugte Controls greift man am besten mit ControlCommand zu. Wenn du in der Hilfe zu diesem Befehl nachschaust, findest du dort die möglichen Parameter für unterschiedliche Controls.
In der Combobox geht es darum zuerst zu ermitteln, welche Position innerhalb der Comboliste der gewünschte Wert einnimmt.
In der Parameterübersicht als occurence (Vorkommen) bezeichnet. Das passiert hier:
$occur = ControlCommand('Eigenschaften von Anzeige', '', $cbFarbtiefe, 'FindString', 'Höchste (32 Bit)')
"$occur" enthält jetzt die Listen-Position von "Höchste (32 Bit)".
Nun wird diese Position als aktuelle Auswahl gesetzt mit:
ControlCommand('Eigenschaften von Anzeige', '', $cbFarbtiefe, 'SetCurrentSelection', $occur)Zitatwenn ich meine aktuelle auflösung nicht abfragen würde sondern direkt in die eigenschaften von Anzeige geh und sag er soll den register auf X*Y (bzw das höchste) stellen - wie würde da der code aussehen?
Einfach solange
ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
ausführen, bis
$txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)
sich nicht mehr ändert.
Probier mal selbst, wenn du nicht klarkommst, meld dich wieder.Zitat2) Du hast geschrieben " wenn ja dann wandert der Regkler eine Stufe höher" eine Stufe oder sind das mehrere ?
Die Anzahl der Stufen hängt von der verwendeten Grafikkarte ab.Zitat3) der Code -
If Number(StringLeft($txt, 4)) < Number(StringLeft($Zielwert2, 4)) Then
Was besagt er genau ? Was für ein Number? Stringleft ?txt ist einfach nur eine variable? Und was sagt die 4 aus ?
Du mußt die Funktion von innen nach außen lesen:
StringLeft($txt, 4) ==> liefert von "$txt" die linken 4 Zeichen, z.B. von "800 x 600 Pixel" die "800 "
4 Zeichen deshalb, weil die größtmöglichen Werte 4 Zeichen lang sind. Hier wird das Leerzeichen mit übernommen - das wird aber beim Wandeln in eine Zahl ignoriert.
Das ist jetzt aber eine Zeichenkette. Und um beim numerischen Vergleich keine falschen Ergebnisse zu bekommen wird diese Zeichenkette in eine Zahl umgewandelt, in diesem Bsp.:
Number("800 ") ==> liefert 800
Dasselbe passiert auf der Zielwertseite, sodass der Vergleich lautet:
If 800 < 1024 Then -
@ I3iLLiG:
Zitatmach doch einfach mal nen GUI wie du dirs vorstellst
LOL ==> Es soll ein CMD-Line Tool sein
sc4ry:
Beim Start des Programms werden ja alle übergebenen Parameter im Array $CmdLine geführt.
Du hast nun echte Parameter, die mit '-' beginnen und evtuelle Zusätze zu diesen Parametern, die im Augenblick als eigene, daher falsche Parameter geführt werden.
Am Einfachsten wird sein, alle Parameter zu einem String zusammenzufügen und anschließend an der Position '-' neu zu splitten:
übergeben: -s 56 -o blubb -l -m
als 1 String: -s56-oblubb-l-m
gesplittet an '-':
s56
oblubb
l
m
Jetzt neu aufbereiten: 1. Zeichen ist Parameter, weitere Zeichen sind Zusatz:
s 56
o blubb
l
m -
Ha, ich weiß jetzt warum:
Auf der History-Site steht als aktuelles Datum: 16.02.08
Der Download hat aber das Datum: 20.02.08
Für den Updatecheck wird die Histora-Site als Referenz genommen. Und so kommt es, dass der 16. halt neuer als der 20. ist.
-
Unter: SciTE--> Tools --> SciTE Config
-
Hi,
Ich hatte gerade die neueste Version von SciTE installiert.
Ein anschließender erneuter Updatecheck brachte folgendes, verblüffendes Ergebnis:http://www.pictureupload.de/pictures/040308195441_scite_up.PNG

