wenn ich gleich zuhause bin gibts ein Bild dazu dann wird es klarer
Wie meine Frau
- "gleich" ist ein sehr dehnbarer Begriff. ![]()
wenn ich gleich zuhause bin gibts ein Bild dazu dann wird es klarer
Wie meine Frau
- "gleich" ist ein sehr dehnbarer Begriff. ![]()
Bei 150 Programmen, wird es wohl besser sein, wenn du diese in einem Array führst und abfragst.
Ein Array in der Art:
Global $arProgramme[150][2] = [ _
['Programmname1', 'Programm1_Pfad'], _
['Programmname2', 'Programm2_Pfad'], _
['Programmname3', 'Programm3_Pfad'], _
;......
['Programmname150', 'Programm150_Pfad']]
Bei 'ProgrammX_Pfad' empfiehlt es sich den kompletten Aufruf für Run() (oder womit du das Prog aufrufst) zu hinterlegen, speziell mußt du den Ordner angeben, indem das Programm ausgeführt werden soll, da es sonst die zugehörige INI nicht finden wird.
Problemstellung: Mit Button1 endlos SPACE senden und mit Button2 dieses beenden.
Probier das mal:
[autoit]#include <GUIConstants.au3>
Opt("GUICoordMode",2)
GUICreate("NosTale Leertasten Prog")
$Button_1 = GUICtrlCreateButton ("Starte Prog für NosTale", 50, 150, 150)
$Button_2 = GUICtrlCreateButton ("Schließe Prog für NosTale", 10, -1)
GUISetState ()
[/autoit][autoit][/autoit][autoit]While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Button_1
AdlibEnable('_Space', 50) ; alle 50 ms wird die Funktion aufgerufen
Case $msg = $Button_2
AdlibDisable()
EndSelect
Wend
Func _Space()
Send("{space}")
EndFunc
Zitatwas kann ich dagegen tun?
Ganz einfach ![]()
Führe ControlSend mit ALLEN erforderlichen Parametern aus!
ControlSend ( "title", "text", controlID, "string" [, flag] )
[/autoit]Du kannst auch deinen PC anweisen, statt mit der CMOS-Time, sich auf einen externen Zeitserver abzugleichen.
Somit hast du über die Makros @Hour, @Min, @Sec die genaue Zeit.
Zitat von Microsoft SupportAlles anzeigenKonfigurieren des Windows-Zeitdienstes für die Verwendung einer externen Zeitquelle
Gehen Sie folgendermaßen vor, um einen internen Zeitserver für die Synchronisierung mit einer externen Zeitquelle zu konfigurieren:
1. Ändern Sie den Servertyp in NTP. Gehen Sie hierzu folgendermaßen vor:
a. Klicken Sie auf Start und auf Ausführen, geben Sie regedit ein, und klicken Sie auf OK.
b. Klicken Sie auf den folgenden Unterschlüssel in der Registrierung:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type
c. Klicken Sie im rechten Bereich mit der rechten Maustaste auf Type, und klicken Sie dann auf Ändern.
d. Geben Sie im Feld Zeichenfolge bearbeiten unter Wert den Wert NTP ein, und klicken Sie auf OK.
2. Setzen Sie AnnounceFlags auf 5. Gehen Sie hierzu folgendermaßen vor:
a. Suchen Sie den folgenden Registrierungsunterschlüssel, und klicken Sie darauf:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags
b. Klicken Sie im rechten Bereich mit der rechten Maustaste auf AnnounceFlags, und klicken Sie dann auf Ändern.
c. Geben Sie im Feld DWORD-Wert bearbeiten unter Wert den Wert 5 ein, und klicken Sie auf OK.
3. Aktivieren Sie NTPServer. Gehen Sie hierzu folgendermaßen vor:
a. Klicken Sie auf den folgenden Unterschlüssel in der Registrierung:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
b. Klicken Sie im rechten Bereich mit der rechten Maustaste auf Enabled, und klicken Sie dann auf Ändern.
c. Geben Sie im Feld DWORD-Wert bearbeiten unter Wert den Wert 1 ein, und klicken Sie auf OK.
4. Geben Sie die Zeitquellen an. Gehen Sie hierzu folgendermaßen vor:
a. Klicken Sie auf den folgenden Unterschlüssel in der Registrierung:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer
b. Klicken Sie im rechten Bereich mit der rechten Maustaste auf NtpServer, und klicken Sie dann auf Ändern.
c. Geben Sie im Feld Zeichenfolge bearbeiten unter Wert den Wert Peers ein, und klicken Sie auf OK.Hinweis: Peers ist ein Platzhalter für eine durch Leerzeichen getrennte Liste von Peers, von denen Ihr Computer Zeitstempel erhält. Die aufgeführten DNS-Namen müssen jeweils eindeutig sein. Sie müssen ,0x1 an das Ende der einzelnen DNS-Namen anhängen. Wenn Sie nicht ,0x1 an das Ende der einzelnen DNS-Namen anhängen, werden die in Schritt 5 vorgenommenen Änderungen nicht wirksam.
5. Wählen Sie das Pollintervall aus. Gehen Sie hierzu folgendermaßen vor:
a. Klicken Sie auf den folgenden Unterschlüssel in der Registrierung:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval
b. Klicken Sie im rechten Bereich mit der rechten Maustaste auf SpecialPollInterval, und klicken Sie dann auf Ändern.
c. Geben Sie im Feld DWORD-Wert bearbeiten unter Wert den Wert TimeInSeconds ein, und klicken Sie auf OK.Hinweis: TimeInSeconds ist ein Platzhalter für die Anzahl der Sekunden zwischen den einzelnen Polls. Der empfohlene Dezimalwert ist 900. Dieser Wert konfiguriert den Zeitserver für ein Pollintervall von 15 Minuten.
6. Konfigurieren Sie die Einstellungen für die Zeitkorrektur. Gehen Sie hierzu folgendermaßen vor:
a. Klicken Sie auf den folgenden Unterschlüssel in der Registrierung:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MaxPosPhaseCorrection
b. Klicken Sie im rechten Bereich mit der rechten Maustaste auf MaxPosPhaseCorrection, und klicken Sie dann auf Ändern.
c. Klicken Sie im Feld DWORD-Wert bearbeiten im Feld Basis auf Dezimal.
d. Geben Sie im Feld DWORD-Wert bearbeiten unter Wert den Wert TimeInSeconds ein, und klicken Sie auf OK.Hinweis: TimeInSeconds ist ein Platzhalter für einen sinnvollen Wert, z. B. 1 Stunde (3600) oder 30 Minuten (1800). Der Wert, den Sie wählen, hängt vom Pollintervall, den Netzwerkbedingungen und der externen Zeitquelle ab.
e. Klicken Sie auf den folgenden Unterschlüssel in der Registrierung: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MaxNegPhaseCorrection
f. Klicken Sie im rechten Bereich mit der rechten Maustaste auf MaxNegPhaseCorrection, und klicken Sie dann auf Ändern.
g. Klicken Sie im Feld DWORD-Wert bearbeiten im Feld Basis auf Dezimal.
h. Geben Sie im Feld DWORD-Wert bearbeiten unter Wert den Wert TimeInSeconds ein, und klicken Sie auf OK.Hinweis: TimeInSeconds ist ein Platzhalter für einen sinnvollen Wert, z. B. 1 Stunde (3600) oder 30 Minuten (1800). Der Wert, den Sie wählen, hängt vom Pollintervall, den Netzwerkbedingungen und der externen Zeitquelle ab.
7. Beenden Sie den Registrierungseditor.
8. Geben Sie folgenden Befehl an der Befehlszeile ein, um den Windows-Zeitdienst neu zu starten, und drücken Sie anschließend die [EINGABETASTE]:
net stop w32time && net start w32time
_FileListToArray benötigt auch nicht unbedingt ein abschliessenden Backslash, aber wenn bei FileGetTime der Backslash fehlt wird Verzeichnis und Dateiname zusammengeschrieben!
Korrekt.
Ich hab mir aber angewöhnt, Pfadangaben mit Backslash abzuschließen, weil dann bei der Kombination VariablePfad & VariableDatei es ausreicht
$Path & $File
[/autoit]zu schreiben, statt sonst
[autoit]$Path & '\' & $File
[/autoit].
Mein Antrieb war mal wieder die Faulheit ![]()
Dein Snippet läßt leider nicht erkennen, an welcher Position $lastnumber einen Wert zugewiesen bekommt bzw. auf welche Weise dies geschieht und welche Rolle die Variable spielt. Wenn mit $lastnumber der letzte Wert im Array $Heimatsystem gemeint ist, brauchst du diese Variable überhaupt nicht. Denn das ist immer UBound($Heimatsystem)-1. Mich wundert nur, dass du $lastnumber als Parameter zum Funktionsaufruf übergibst und dieser Parameter den Zugriff auf ein Array regelt, dass erst in dieser Funktion erstellt wird und dessen Größe vorab nicht bekannt ist. Kurz: Dieser Parameter ist Quatsch und produziert nur Fehler.
Es sei denn, es sind noch irgendwelche anderen Zusammenhänge, die hier nicht ersichtlich sind.
Auf jeden Fall mußt du in der Funktion prüfen, ob das Array erstellt wurde und entsprechend reagieren.
$oTable = _IETableGetCollection ($oFrame, 4)
If Not IsObj($oTable) Then Return SetError(1,0,-1) ; Fehler gesetzt, Func gibt -1 zurück
$Heimatsystem = _IETableWriteToArray ($oTable, True)
If Not IsArray($Heimatsystem) Then Return SetError(2,0,-1) ; Fehler gesetzt, Func gibt -1 zurück
Hi,
die Fehlermeldung sagt es schon sehr genau. Dein Array $Heimatsystem[$lastnumber][0] ist halt zu diesem Zeitpunkt entweder kein Array oder $lastnumber verweist auf einen Index außerhalb des Arrays.
Füge davor eine Fehlerabfrage ein, z.B.:
If (Not IsArray($Heimatsystem)) Or ($lastnumber > (UBound($Heimatsystem) -1)) Then Exit
[/autoit]Hier ist das Problem, dass beim 2. Code die gelesenen Daten nicht in die Inputboxen mit dem Array [$read_line][$tabitem = 2] geschrieben werden.
Weiss vielleicht jemand von euch, an was das liegen könnte?
Debugge mal so und validiere ob die Werte OK sind:
For $tabitem = 0 To 2
For $read_line = 1 to _Group()
$readen_line = string(filereadline($file, $line))
ConsoleWrite('$readen_line = ' & $readen_line & @CRLF)
ConsoleWrite('GUICtrlSetData in: $group[' & $read_line & '][' & $tabitem & ']' & @CRLF)
GUICtrlSetData($group[$read_line][$tabitem], $readen_line)
Do
$readen_line = String(StringTrimRight($readen_line, 1))
GUICtrlSetData($group[$read_line][$tabitem], $readen_line)
If $read_line = 16 Then
$compare = StringRight(GUICtrlRead($group[$read_line][$tabitem]), 6)
Else
$compare = StringRight(GUICtrlRead($group[$read_line][$tabitem]), 5)
EndIf
Until StringInStr($string, $compare) Or StringInStr("40060035090030", StringRight(GUICtrlRead($group[$read_line][$tabitem]), 2))
If $line = 36 Then
$line += 2
Else
$line += 1
EndIf
Next
Next
OK,
hier meine Tipps:
- Array mit Fragen und Lösungen ($Array[Anzahl_Fragen][2]; $a[n][0]=Frage, $a[n][1]=Lösung)
- Gui für Fragestellung erstellen
- In Schleife das Array abarbeiten
- falsche und richtige Antworten zählen
- wenn max. Anzahl falsche Antworten erreicht Skript beenden
- wenn alle Fragen beantwortet Auswertung
If $falsche = 5 Then
SoundSetWaveVolume ("50%")
SoundPlay(@WindowsDir & "\media\Windows XP-Fehler.wav",1)
CDTray("e:\", "open")
WinClose ("Frage")
Run("notepad.exe")
WinWaitActive ("Unbenannt - Editor")
sleep (3000)
Send ("Da musst du aber noch arbeiten!!!")
sleep (3000)
WinClose ("Unbenannt - Editor")
CDTray("e:\","close")
SoundPlay(@WindowsDir & "\media\XP Startvorgang.wav",1)
; hier einfach beenden:
Exit
EndIf
For $E=1 To UBound($ASCII_Werte)
[/autoit]muß richtig heißen:
[autoit]For $E=1 To UBound($ASCII_Werte)-1
[/autoit]
und
StringTrimLeft($String, 1)
[/autoit]muß heißen
[autoit]$String = StringTrimLeft($String, 1)
[/autoit]Das war doch in meinem Bsp. zu sehen.
Mit _GUICtrlRebar_SetBandBackColor($RebarID, $Index, 'Farbe als BGR').
Um einen Farbwechsel zu erreichen, wenn du mit der Maus darüberfährst brauchst du ein Hover-Funktion. Mußt du mal im EN-Forum suchen.
Hab die Editstyles ergänzt, nun kann man nicht mehr editieren.
Aber ich weiß nicht, wo du noch transparente Streifen in den Edits siehst, bei mir ist nix.
Andere Frage: Lieferst du zu dem Skript auch 'ne Lupe mit? Die Schrift in den Edits ist so mickrig - wenn mir das jemand anbieten würde, würde ich ihm gehörig die Meinung geigen. ![]()
GUICreate("mygui",640,200,-1,-1,$WS_POPUP,$WS_EX_LAYERED)
GUICtrlCreatePic("test.gif",0,0,640,200) ;gif soll in exe eingebunden werden ohne auslagerung beim start
GUICtrlSetState(-1,$GUI_DISABLE)
GUICtrlCreateLabel("",0,0,621,90,-1,$GUI_WS_EX_PARENTDRAG)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFF00)
$Button1 = GUICtrlCreateLabel("Patch",150,145,40,18)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFF5500)
GUICtrlSetFont(5, ![]()
$Button2 = GUICtrlCreateLabel("About",368,145,40,18)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFF5500)
GUICtrlSetFont(6, ![]()
$Edit1 = GUICtrlCreateEdit("- Patch -",210,96,130,40, BitOR($ES_WANTRETURN, $ES_READONLY)) ;hat einen Rand der unten und rechts (Streifen) transperent ist!soll nicht manuel editerbar sein!
GUICtrlSetBkColor(-1, 0x555555)
GUISetBkColor(0xFFFFFF)
GUICtrlSetFont(7, ![]()
$Edit2 = GUICtrlCreateEdit("Status",210,140,130,18, BitOR($ES_WANTRETURN, $ES_READONLY)) ;hat einen Rand der unten und rechts (Streifen) transperent ist! soll nicht manuel editerbar sein!
GUICtrlSetBkColor(-1, 0x555555)
GUISetBkColor(0xFFFFFF)
GUICtrlSetFont(8, ![]()
$close = GUICtrlCreateLabel("eXit",415,94,23,18)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFF00)
GUISetState (@SW_SHOW)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Edit: Den Style $ES_WANTRETURN kannst du dir eigentlich schenken, da ja eh nicht editiert werden darf.
Aha, Danke.
Nur diese Info sollte doch eigentlich auch in die Hilfe zur Funktion. ![]()
Momentan kann dir keiner helfen.
Du stellst keinen Code rein und wir sollen erraten, was du bis jetzt erstellt hast? Sry, aber hab grad keine Glaskugel dabei. ![]()
Hi,
hier das Bsp. aus der Hilfe in CornFlowerBlue.
Allerdings gelten für ReBar nicht die tatsächlichen Farbwerte. Das System ist mir noch nicht klar. Um CornFlowerBlue anzuzeigen, muß der Hex-Wert von Coral verwendet werden. Die Hilfe gibt leider keine Auskunft warum beim Festlegen der Farbe: Int(Hexwert) gesetzt werden muß. Wird nur der Hexwert übergeben ist das Ergebnis meist eine andere Farbe. Aber z.B. DarkMagenta kann direkt als Hexwert übergeben werden und wird richtig angezeigt.
Vielleicht ist ja ein Farbenversteher unter uns, der Aufklärung bringen kann. ![]()
#include <GuiConstantsEx.au3>
#include <GuiReBar.au3>
#include <GuiToolBar.au3>
Opt("MustDeclareVars", 1)
[/autoit] [autoit][/autoit] [autoit]Global $iMemo
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
Local $hgui, $btnExit, $hReBar, $hToolbar, $hInput
Local Enum $idNew = 1000, $idOpen, $idSave, $idHelp
$hgui = GUICreate("Rebar", 400, 396, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_MAXIMIZEBOX))
GUISetBkColor(0x6495ED)
; create the rebar control
$hReBar = _GUICtrlReBar_Create($hgui, BitOR($CCS_TOP, $WS_BORDER, $RBS_VARHEIGHT, $RBS_AUTOSIZE, $RBS_BANDBORDERS))
$iMemo = GUICtrlCreateEdit("", 2, 100, 396, 250, $WS_VSCROLL)
GUICtrlSetFont($iMemo, 10, 400, 0, "Courier New")
; create a toolbar to put in the rebar
$hToolbar = _GUICtrlToolBar_Create($hgui, BitOR($TBSTYLE_FLAT, $CCS_NORESIZE, $CCS_NOPARENTALIGN))
; Add standard system bitmaps
Switch _GUICtrlToolbar_GetBitmapFlags($hToolbar)
Case 0
_GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_SMALL_COLOR)
Case 2
_GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR)
EndSwitch
; Add buttons
_GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW)
_GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN)
_GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE)
_GUICtrlToolbar_AddButtonSep($hToolbar)
_GUICtrlToolbar_AddButton($hToolbar, $idHelp, $STD_HELP)
; create a input box to put in the rebar
$hInput = GUICtrlCreateInput("Input control", 0, 0, 120, 20)
;add band containing the control
_GUICtrlReBar_AddBand($hReBar, GUICtrlGetHandle($hInput), 120, 200, "Name:")
; add band containing the control to the begining of rebar
_GUICtrlReBar_AddToolBarBand($hReBar, $hToolbar, "", 0)
_GUICtrlRebar_SetBandBackColor($hReBar, 0, Int(0xFF7F50)) ; CornFlowerBlue wird gezeigt, HEX-Wert von Coral!!
_GUICtrlRebar_SetBandBackColor($hReBar, 1, Int(0xFF7F50))
_GUICtrlRebar_SetBandForeColor($hReBar, 1, Int(0xFFFFFF))
$btnExit = GUICtrlCreateButton("Exit", 150, 360, 100, 25)
GUICtrlSetState($btnExit, $GUI_DEFBUTTON)
GUICtrlSetState($btnExit, $GUI_FOCUS)
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $btnExit
Exit
EndSwitch
WEnd
EndFunc ;==>_Main