Sozusagen wie eine Highscore.
Ja was denn nun? Sozusagen ein Highscore oder tatsächlich? ![]()
[score]
peter=12500
anna=7050
Oder wie?
Sozusagen wie eine Highscore.
Ja was denn nun? Sozusagen ein Highscore oder tatsächlich? ![]()
[score]
peter=12500
anna=7050
Oder wie?
Es reicht wirklich, bitte mal auf vernünftigem Niveau bewegen.
[Topic Closed]
Das mit svchost.exe hab ich gewählt, um den Prozess nicht mehr findbar zu machen um ihn aus versehen zu schließen.
Bis auf diese Sache spiegelt dein Statement das wieder, was ich der Source entnommen habe.
Die Notwendigkeit den Prozeß unauffindbar zu machen sehe ich nicht. Und gerade dieser Punkt stinkt uns gewaltig. Ich kenne keinen Normal-User, der mal eben aus "Versehen" einen Prozeß abschießt. Die meisten wagen sich ja nicht mal den Taskmanager aufzurufen.
Und den Usern hier im Forum kann man schon soviel Sachverstand zutrauen, dass sie da nicht sinnlos rumfuhrwerken.
Es mag dir übertrieben vorkommen, aber in sicherheitsrelevanten Themen sind wir sehr feinfühlig. Wie heißt es so schön: Vorsicht ist die Mutter der Porzellankiste.
Und ich möchte dich bitten, dieses in Zukunft zu berücksichtigen. Wenn du dein Skript diesbezüglich überarbeitest, spricht aus meiner Sicht nichts dagegen, dass du die Source nochmal einstellst. Aber vielleicht möchte ja noch einer meiner Mitmoderatoren oder Administratoren einen Kommentar dazu abgeben.
Das erste Input dient zur Anzeige deiner Farbwerte.
Das zweite Input ist nur 1 Pixel breit und innerhalb des ersten positioniert. Wenn UpDown geklickt wird, wird im (nicht sichtbaren) Input der Zahlenwert verändert. Die Werte sind mit GUIctrlSetLimit festgelegt auf 0 bis 9 (unsere Array-Indexe).
Bei Klick auf UpDown wird der nun geänderte Index aus dem BlindInput gelesen und der Farbwert aus dem Array mit diesem Index in das Input 1 eingetragen. - Ist doch einfach, oder? ![]()
Ich hab mal mit 'nem Blind-Input getrickst ![]()
Global $aLabel[10] = ['Schwarz','Braun','Rot','Orange','Gelb','Grün','Blau','Violett','Grau','Weiß']
[/autoit][autoit][/autoit][autoit]$gui = GUICreate('test')
$Input = GUICtrlCreateInput("", 40, 120, 97, 21)
$Input_blind = GUICtrlCreateInput('', 150, 120, 1, 21)
$Updown1 = GUICtrlCreateUpdown($Input_blind)
GUICtrlSetLimit(-1, 9, 0)
GUISetState()
GUICtrlSetData($Input, $aLabel[0])
[/autoit][autoit][/autoit][autoit]While 1
Switch GUIGetMsg()
Case $Updown1
GUICtrlSetData($Input, $aLabel[GUICtrlRead($Input_blind)])
Case -3
Exit
EndSwitch
WEnd
Du kannst nicht in einem Input Text schreiben und dann UpDown verwenden. UpDown verändert den Wert im Input (addieren/subtrahieren), was bei Text halt nicht geht. Darum hatte ich dir das Bsp. mit Input + 2 Button als Up-Button und Down-Button gegeben.
Zusammenarbeit mit Objekten ist vielleicht noch interessant.
z.B. Excel: Skriptbsp.: Diagramm in Excel
Löse es so, ist einfacher ![]()
Edit: Hab grad gesehen, du möchtest immer doppelte Leerzeichen haben. Hab das jetzt noch eingefügt und Ausgabe aller Titel der Playlist. Habe zusätzlich das Album mit aufgenommen, da teilweise kein Interpret in der Playlist enthalten ist.
$get = ClipGet() ; unbedingte gesamte Seite markieren (Strg+A, Strg+C)!
$get = StringTrimRight($get, StringLen($get)-StringInStr($get, 'Hilfe | Impressum | Kontakt', 1, -1))
$aInfo = StringSplit($get, 'Sendezeit:', 1)
Local $aErgebnis[$aInfo[0]-1][3] ; [$i][0]=Titel, [$i][1]=Album, [$i][2]=Interpret
Local $j = 0, $sWrite = ''
For $i = 2 To UBound($aInfo) -1
$ret = StringRegExp($aInfo[$i], 'Titel:?\s+([^\r]+)', 1)
If Not @error Then $aErgebnis[$j][0] = $ret[0]
$ret = StringRegExp($aInfo[$i], 'Album:?\s+([^\r]+)', 1)
If Not @error Then $aErgebnis[$j][1] = $ret[0]
$ret = StringRegExp($aInfo[$i], 'Interpret:?\s+([^\r]+)', 1)
If Not @error Then $aErgebnis[$j][2] = $ret[0]
$sWrite &= $j+1 & @CRLF & _
StringReplace($aErgebnis[$j][0], ' ', ' ') & @CRLF & _
StringReplace($aErgebnis[$j][1], ' ', ' ') & @CRLF & _
StringReplace($aErgebnis[$j][2], ' ', ' ') & @CRLF & @CRLF
$j += 1
Next
ConsoleWrite($sWrite & @CRLF) ; oder in Datei schreiben
[/autoit]Anderer Vorschlag:
Lies dir mal gründlich die Doku zu der Lohnabrechnungs-SW durch (oder wenn die nichts hergibt, frage mal die SW-Firma) und schau, was für Importfunktionen das Programm selbst bereithält. Was ich bisher an SW in den Fingern hatte, hat immer irgendeine Importmöglichkeit gehabt. Dann brauchtest du deine Exeldaten nur in eine (Lohn-SW)importfähige Datei auslagern. Und das ist mit AutoIt sicher kein Problem.
Hatten wir gerade gestern mal wieder das Thema: [ offen ] Gui switchen.
das du das so in paar minuten hingezaubert hast is echt stark
![]()
Also ich könnte es auch in ein..zwei Minuten schreiben, aber sowas habe ich als Skriptbeispiel in meiner "Bibliothek" ![]()
Da reicht dann Copy & Paste.
EDIT:\\ koenntest du mir erklären was es mit dem Local & die Aufzählungen der Variablen
auf sich hat? Also um das unbedingt sein muss?
Man sollte sich eigentlich von Anfang an daram gewöhnen, alle Variablen zu deklarieren. Und das passiert mit dem Wort Local. Näheres zu den Arten der Deklaration findest du in der Hilfe unter "Local, Global, Dim".
Mal ein Bsp:
#include <GUIConstants.au3>
Local $gui1, $gui2, $gui3, $gui4, $gui5, $btn1_1, $btn1_2, $btn1_3, $btn1_4, $btn2, $btn3, $btn4, $btn5, $msg
$gui1 = GUICreate('GUI 1')
$btn1_1 = GUICtrlCreateButton('Zeige GUI 2', 10, 20, 100, 20)
$btn1_2 = GUICtrlCreateButton('Zeige GUI 3', 10, 50, 100, 20)
$btn1_3 = GUICtrlCreateButton('Zeige GUI 4', 10, 80, 100, 20)
$btn1_4 = GUICtrlCreateButton('Zeige GUI 5', 10, 110, 100, 20)
$gui2 = GUICreate('GUI 2')
$btn2 = GUICtrlCreateButton('Button 2', 10, 20, 100, 20)
$gui3 = GUICreate('GUI 3')
$btn3 = GUICtrlCreateButton('Button 3', 10, 20, 100, 20)
$gui4 = GUICreate('GUI 4')
$btn4 = GUICtrlCreateButton('Button 4', 10, 20, 100, 20)
$gui5 = GUICreate('GUI 5')
$btn5 = GUICtrlCreateButton('Button 5', 10, 20, 100, 20)
GUISetState(@SW_SHOW, $gui1)
[/autoit] [autoit][/autoit] [autoit]While 1
$msg = GUIGetMsg(1)
Switch $msg[1] ; Window Handle
Case $gui1
Switch $msg[0] ; Event
Case $GUI_EVENT_CLOSE
ExitLoop
Case $btn1_1
GUISetState(@SW_HIDE, $gui1)
GUISetState(@SW_SHOW, $gui2)
Case $btn1_2
GUISetState(@SW_HIDE, $gui1)
GUISetState(@SW_SHOW, $gui3)
Case $btn1_3
GUISetState(@SW_HIDE, $gui1)
GUISetState(@SW_SHOW, $gui4)
Case $btn1_4
GUISetState(@SW_HIDE, $gui1)
GUISetState(@SW_SHOW, $gui5)
EndSwitch
Case $gui2
Switch $msg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_SHOW, $gui1)
GUISetState(@SW_HIDE, $gui2)
Case $btn2
MsgBox(0, '', 'Button 2 geklickt')
EndSwitch
Case $gui3
Switch $msg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_SHOW, $gui1)
GUISetState(@SW_HIDE, $gui3)
Case $btn3
MsgBox(0, '', 'Button 3 geklickt')
EndSwitch
Case $gui4
Switch $msg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_SHOW, $gui1)
GUISetState(@SW_HIDE, $gui4)
Case $btn4
MsgBox(0, '', 'Button 4 geklickt')
EndSwitch
Case $gui5
Switch $msg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_SHOW, $gui1)
GUISetState(@SW_HIDE, $gui5)
Case $btn5
MsgBox(0, '', 'Button 5 geklickt')
EndSwitch
EndSwitch
WEnd
GUIDelete($gui1)
GUIDelete($gui2)
GUIDelete($gui3)
GUIDelete($gui4)
GUIDelete($gui5)
Und wenn du statt einzelner Controls Arrays verwendest, sparst du locker 100 Zeilen Code ein. ![]()
Hier ein Bsp.:
[autoit]Local $aButton[25], $x = 10, $y = 20
[/autoit][autoit][/autoit][autoit]$gui = GUICreate('test')
For $i = 0 To UBound($aButton) -1
$aButton[$i] = GUICtrlCreateButton($i+1, $x, $y, 20, 20)
$x += 30
If $i = 12 Then
$x = 10
$y += 30
EndIf
Next
GUISetState()
Do
$msg = GUIGetMsg()
For $i = 0 To UBound($aButton) -1
If $aButton[$i] = $msg Then MsgBox(0, 'click', 'Button: ' & ControlGetText($gui, '', $msg))
Next
Until $msg = -3
Also das ich nicht für jeden Button ein "Case" schreiben muss
Wenn es überall dieselbe Funktion auslösen soll:
Case $button1,$button2,$button3,....$button25
; dein Code
Du solltest aber überlegen, Arrays einzusetzen. Dann kannst du das alles viel komfortabler in Schleifen abwickeln.
Aber das muss doch möglich sein, besonders weil ich das glaube ich mal gesehen habe.
Es geht, aber nicht flexibel. Du kannst es per Keyboard-Hook managen. Aber das ist dann, wie gesagt, eine fixe Angelegenheit.
1-2-3 ist aber kein Hotkey.
Von den Standardtasten kannst du in einem Hotkey immer nur eine Taste verwenden. Maximale Länge ergibt sich aus:
Shift+Strg+Alt+'sonstige_Taste'
Ich denke, damit lassen sich soviele Kombinationen abbilden, dass 1-2-3 o.ä. nun wirklich nicht nötig ist.
Mathematik pur:
X = Desktopbreite - GUIbreite
Y = Desktophöhe - GUIhöhe (evtl. noch Taskbarhöhe abziehen, sofern sichtbar _WinApi_GetSystemMetrics )
Ich kann dir nur raten, erst mal AutoIt zu können. Dann wirst du sehen, dass es sehr viele Analogien zu C++ gibt und dann hast du einen guten Einstieg in die Sprache.
Motivationshilfe kann dir keiner geben. Ich habe sowas aber noch nie gebraucht. Wenn mich eine Thematik interessiert, dann knie ich mich da rein (schon so manche Nacht durchgemacht vorm PC dadurch).
Ich beschäftige mich (aber wirklich total nebenher) auch etwas mit C++. Da treibt mich an, dass ich viele meiner UDF-Sammlungen irgendwann mal geschwindigkeitsoptimiert in einer Dll verpacken möchte. Leider fehlt die Zeit, um das intensiv voran zu treiben.
Also tritt dir selber in den Allerwertesten. ![]()
$ret = _IEFormElementGetObjByName($oIE, 'FormName', -1)
ConsoleWrite('Es existieren ' & @extended & ' Formen dieses Namens.' & @CRLF)
; die einzelnen Elemente können über Index '0' bis '@extended -1' angesprochen werden
; oder in einer Schleife durchlaufen:
For $Form In $ret
; $Form ist jetzt das temporäre Objekt, das auf das aktuelle Formelement verweist
Next