in dieser Funktion steht "#include <GUI2.au3>"
Das Include darf nicht innerhalb einer Funktion erfolgen, sondern am Skriptanfang. Dann kannst du auf die in diesem Include hinterlegten Funktionen zugreifen.
in dieser Funktion steht "#include <GUI2.au3>"
Das Include darf nicht innerhalb einer Funktion erfolgen, sondern am Skriptanfang. Dann kannst du auf die in diesem Include hinterlegten Funktionen zugreifen.
Aber wie komme ich an die ID(in meinem Fall von einem Textfeld)?
Na, das sagte ich doch in meiner Antwort bereits (mit Skriptbsp.) ![]()
die du als Rückgabewert von Funktionen zur Erstellung von GUI-Elementen bekommst:
ID = GuiCtrlCreate......
Ich denke mal eher, du meinst so etwas ganz simples, wie die Identifikationsnummer, die du als Rückgabewert von Funktionen zur Erstellung von GUI-Elementen bekommst:
[autoit]$ID_Button = GuiCtrlCreateButton(...)
$ID_Label = GuiCtrlCreateLabel(...)
Im Strompreis für Atomkraft spiegeln sich zumindest die Rückstellungen für die Entsorgung wieder.
Wie kommst du denn dadrauf? Wenn die Kosten enthalten wären, müßte die KWh mal geraten ca. 70 EUR kosten (oder mehr). Das ist ja die Krux, dass man diesen Preis nicht mal beziffern kann, weil wir noch nicht wissen, wieviel Tausend Milliarden an Kosten in Zukunft immer und immer wieder für diesen Müll aufgewendet werden müssen.
Vllt kannst dus ja mit GDI+ versuchen? hab noch nicht getestet ob man das in die Scrollbar einbauen kann.
Es ist leider nicht das erste mal, dass du Antworten in dieser Form bringst:
"Ich weiß es nicht/hab es noch nie gemacht ... aber probier doch mal"
Das ist wenig konstruktiv für das Forum. Bitte poste nur, wenn du auch wirklich etwas zum Thema beitragen kannst. Talken kannst du in der ShoutBox.
Man wird ohne Atomenergie (noch) nicht leben können, das ist ganz klar.
Da sagt der aktuelle Untersuchungsbericht (den die Kanzlerin in unendlicher Dreistigkeit trotz gegenteiligen Ergebnisses als Begründung zur Laufzeitverlängerung heranzieht) aber etwas ganz anderes. Dieser Untersuchungsbericht wurde übrigens von der Bundesregierung selbst in Auftrag gegeben. Ein Ausstieg, wie bisher vorgesehen würde keinerlei Veränderungen an den Energiekosten herbeiführen. Da hatte wohl das Merkel gerade keine Brille zur Hand.
Mir ist sowieso unklar, warum ausgerechnet die Energiebetreiber gegen den ansonsten per Grundgesetz heilig gehaltenen Gleichstellungsgrundsatz verstoßen dürfen. Alle, wirklich alle Produzenten, Fabriken etc. sind gesetzlich verpflichtet ihren Müll auf eigene Kosten zu entsorgen. Nur bei den Energiebetreibern muß der Steuerzahler diese Entsorgung bezahlen.
Glaubt mir: Anwendung dieses Grundsatzes auf die Energiebetreiber und schon morgen würden diese selbst verkünden, dass Atomenergie absolut unnütz ist und alle Meiler sofort heruntergefahren werden.
Es gibt ja wirklich Leute, die der Meinung verfallen sind, dass Atomenergie die billigste Energieform wäre. Nun wenn es nicht so traurig wär, könnte man über soviel Dummheit herzhaft lachen. Die Erzeugerkosten sind zwar niedriger als bei allen anderen Energieformen - aber die Kosten für Entsorgung und dauerhafte Lagerung sind noch nicht einmal ansatzweise zu erahnen. So dass man davon ausgehen kann, dass die KWh Atomenergie mindestens um den Faktor 100 teurer ist als alles, was es sonst noch gibt. Rechnet das mal auf eure Energierechnung aus. Ihr meint, das bezahlt ihr nicht? - Na was passiert wohl mit euren Steuern? Kultur und Bildung wird gestrichen - Endlagerung muß bezahlt werden. ![]()
AspirinJunkie: Dazu ist nunmal das OffTopic-Board da. Blende es doch einfach aus.
MouseClick um eine Verknüpfung zu starten... :wacko:
Fällt dir nicht noch was Komplizierteres ein? ![]()
autoit hat ja eine wincap udf.
Jein :D, das ist eine von einem User erstellte UDF. Also wende dich an den Ersteller.
So, hab nochmal nachgelesen. Es geht doch.
Hier ein Bsp.:
Local $xlsPath = 'C:\test\test.xls'
Local $oExcel = ObjCreate('Excel.Application')
$oExcel.Visible = 1
Local $oBook = $oExcel.Workbooks.Open($xlsPath)
$oTextBox = $oBook.Worksheets("Tabelle1").Shapes.AddTextBox(1, 20, 20, 150, 100).OLEFormat.Object
$oTextBox.Name = "TextBox_1"
$oTextBox.Text = "Der Font ist Comic Sans MS"
With $oTextBox.Characters(14, 13).Font
.Name = "Comic Sans MS"
.FontStyle = "Fett"
.Size = 12
.ColorIndex = 3
EndWith
Ihr mit euren Wahnvorstellungen. :wacko:
Der Grund ist schlicht und einfach, dass es sich hier um keine AutoIt-Frage handelt (dazu wären genug Experten hier), sondern um eine Frage zu WinCap. Ich kannte das Tool vorher noch nicht mal.
Wende dich vielleicht besser an ein Forum für Computersicherheit o.ä. - da wird sicher damit gearbeitet.
Wie ich es machen würde:
- Vergleichsdatum auf z.B. 1.1.2010 setzen
- Ordner rekursiv durchgehen und Dateidatum abfragen
- wenn jünger als Vergleichsdatum ==> dem Vergleichsdatum das Dateidatum zuweisen
- somit hast du am Ende das jüngste Datum
- Startordner nun einfach umbenennen
Edit: Kaum poste ich dir Anregungen - da hat schon wer was Fertiges gepostet. Vergiß das, dabei lernst du nichts. Machs selber. ![]()
Meines Wissens ist mit der TextBox-Klasse nur unformatierter Text darstellbar.
Formatierten Text kannst du in einer RichTextBox darstellen.
PS: Dankeschön BugFix für die Äußerung
Versteh darunter bitte aber keinen Freibrief. Sollte sich hier ein anderer (als von mir gutmütig angenommener) Weg herauskristallisieren, dann gibt es kein Pardon.
Nur um nochmal eindeutig klarzustellen, warum der Thread zugelassen wurde:
Hier findet keinerlei Automatisierung des Spiels statt. Ebensowenig soll das Skript mit dem Spiel interagieren. Deswegen ist es kein Gamebot, sondern eine Entscheidungshilfe (oder, wie man es nennen möchte). Ein Taschenrechner mit x belegten Speicherfeldern ist nichts wesentlich anderes. ![]()
Warum nimmst du den Umweg über eine *.reg ? Schreib doch mit AutoIt direkt in die Registry.
Hier das MSDN-Bsp. dazu.
Kannst du dir ja dann mal zu AutoIt portieren.
das mit den includes habe ich ja nur so so bin ich sicher das mir nichts fehlt^^
Dazu gibt es doch: Organize Includes
@Jeka:
letzter Post: [ Sonntag, 23. Mai 2010, 16:07 ] <== Leichenschändung ![]()
Hatte ich mal ein Bsp. für gemacht, kannst es ja dann anpassen (zum nächsten Feld mit ENTER):
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <Array.au3>
Opt("GUIOnEventMode", 1)
OnAutoItExitRegister('OnAutoItExit')
Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
Global $hmod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
Global $active = False, $gui, $ID_lastFocus = 0
Enum $i1, $i2, $c1, $i3, $c2, $i4, $n ; <== hier die Reihenfolge, wie der Fokus 'wandern' soll ($n ist Zähler für Anz. Ctrl)
Global $a[$n]
$gui = GUICreate('')
GUISetOnEvent(-3, '_ende')
$a[$i1] = GUICtrlCreateInput('', 10,10,40)
$a[$i2] = GUICtrlCreateInput('', 60,10,40)
$a[$c1] = GUICtrlCreateCombo('', 110,10,40)
$a[$i3] = GUICtrlCreateInput('', 160,10,40)
$a[$c2] = GUICtrlCreateCombo('', 210,10,40)
$a[$i4] = GUICtrlCreateInput('', 260,10,40)
GUISetState()
While 1
If BitAND(WinGetState($gui),
Then
$active = True
Else
$active = False
EndIf
Sleep(100)
WEnd
Func _ende()
Exit
EndFunc
;===========================================================
; callback function
;===========================================================
Func _KeyProc($nCode, $wParam, $lParam)
Local $tKEYHOOKS, $vkCode, $ID, $index
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Or Not $active Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
$vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
If $wParam = $WM_KEYDOWN And $vkCode = 13 Then ; ENTER gedrückt
$ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($gui, '', ControlGetFocus($gui)))
; Für ComboBoxen kann NICHT der Fokus abgefragt werden, da dieser auf dem Input-Ctrl der ComboBox liegt.
; Hier muß in der Instanz-Reihenfolge mit dem Wert des letzten Ctrl verglichen werden.
; Die Reihenfolge der Erstellung in der GUI ist egal, da der Fokus über die enumerierte Reihenfolge der Ctrl-Variablen
; weitergesetzt wird.
; Falls eine ComboBox als letztes Ctrl in der Folge erscheint, muß dies in der Abfragelogik berücksichtigt werden.
If _WinAPI_GetClassName($ID) <> 'Edit' Then
; Variante 1: über Class+Instance
$ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($gui, "", "[CLASS:ComboBox; INSTANCE:1]"))
If $ID_lastFocus > $ID Then $ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($gui, "", "[CLASS:ComboBox; INSTANCE:2]"))
; Variante 2: über Enumerations-Reihenfolge der ComboCtrls
;~ $ID = $a[$c1]
;~ If $ID_lastFocus > $ID Then $ID = $a[$c2]
EndIf
$index = _ArraySearch($a, $ID)
If @error Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
If $index < UBound($a)-1 Then
GUICtrlSetState($a[$index +1], $GUI_FOCUS)
$ID_lastFocus = $a[$index +1]
Else
GUICtrlSetState($a[0], $GUI_FOCUS)
$ID_lastFocus = $a[0]
EndIf
EndIf
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc
Func OnAutoItExit()
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hStub_KeyProc)
EndFunc
Edit: Hier die Variante "direkt weiter":
#include <EditConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Global $gui
Enum $i1, $i2, $i3, $i4, $n ; <== hier die Reihenfolge, wie der Fokus 'wandern' soll ($n ist Zähler für Anz. Ctrl)
Global $a[$n]
$gui = GUICreate('')
GUISetOnEvent(-3, '_ende')
$a[$i1] = GUICtrlCreateInput('', 10,10,40)
$a[$i2] = GUICtrlCreateInput('', 60,10,40)
$a[$i3] = GUICtrlCreateInput('', 160,10,40)
$a[$i4] = GUICtrlCreateInput('', 260,10,40)
GUISetState()
ControlFocus($gui, '', $a[$i1])
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
While True
Sleep(50)
WEnd
Func _ende()
Exit
EndFunc
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $hWndEdit, $sRead
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
For $i = 0 To UBound($a) -2
Switch $hWndFrom
Case GUICtrlGetHandle($a[$i])
If $iCode = $EN_CHANGE Then
ControlFocus($gui, '', $a[$i+1])
ExitLoop
EndIf
EndSwitch
Next
Return 0
EndFunc ;==>WM_COMMAND
Du mußt jede Änderung speichern. Hier mal ein Bsp. wie du es nutzen kannst:
#include <GUIConstants.au3>
OnAutoItExitRegister('_WriteToIni') ; Beim Beenden des Programms wird autmatisch der CB-Status in die INI geschrieben
Global $INI = @ScriptDir & '\test_CB.ini'
If Not FileExists($INI) Then ; bei erstem Start Erstellen der INI, vorbelegt UNCHECKED
IniWriteSection($INI, 'checkboxes', '1=0' & @LF & '2=0' & @LF & '3=0' & @LF & '4=0')
EndIf
Local $gui, $aCB[4], $y = 10
Local $aState = IniReadSection($INI, 'checkboxes') ; Status der Checkboxen einlesen
$gui = GUICreate('Test')
For $i = 0 To 3
$aCB[$i] = GUICtrlCreateCheckbox('CheckBox ' & $i+1, 10, $y, 80)
If $aState[$i+1][1] = 1 Then
GUICtrlSetState($aCB[$i], $GUI_CHECKED)
Else
GUICtrlSetState($aCB[$i], $GUI_UNCHECKED)
EndIf
$y += 25
Next
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
$msg = GUIGetMsg()
If $msg = -3 Then Exit
For $i = 0 To UBound($aCB) -1 ; wenn CB geklickt wird, wird der Status im Array Status geändert
If $msg = $aCB[$i] Then
If BitAND(GUICtrlRead($aCB[$i]), $GUI_CHECKED) Then
$aState[$i+1][1] = 1
Else
$aState[$i+1][1] = 0
EndIf
ExitLoop
EndIf
Next
WEnd
Func _WriteToIni() ; beim Beenden von AutoIt Zurückschreiben Status
IniWriteSection($INI, 'checkboxes', $aState)
EndFunc