Programmier Fragen

10/20/2010 11:22 Lighthex#1
Hallo alle zusammen,
ich habe einen kleinen Bot gecodet der mit Controlsend arbeitet und wie wir wissen braucht Controlsend den Titel des Fensters und diesen möchte ich in einer ini datei abspeicehr das habe ich nun auch hinbekommen,jedoch wenn ich diesen wärend der Bot an ist ändere und dann speichere muss ich den ganzen bot nochmal aus schalten und wieder an ...
Es solle wie dieser Bot sein [Only registered and activated users can see links. Click Here To Register...]
Also ich meine bei dem 2ten Tab da steht Speichern wenn man das drückt "reloadet" das ganze programm ,wie kann ich das auch machen.
Hier der Code :
Quote:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$running="no"
$windowname=IniRead("Test.ini","","Fenstername","" )
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Space Drücker", 198, 139, 192, 124)
$Input1 = GUICtrlCreateInput($windowname, 16, 40, 161, 21)
$Checkbox1 = GUICtrlCreateCheckbox("Aufeheben ?", 16, 16, 97, 17)
$Button1 = GUICtrlCreateButton("Speichern", 16, 72, 163, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Start/Stop", 16, 104, 163, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button2
if $running== "no" Then
$running="yes"
ElseIf $running=="yes" Then
$running="no"
EndIf
Case $Button1
IniWrite("Test.ini","","Fenstername",Guictrlread($ Input1))
EndSwitch
If $running== "yes" Then
ControlSend($windowname,"","","{space}")
EndIf
WEnd
PS : Das ist nur ein Beispiel das eigendliche ist viel komplezer ...
10/20/2010 12:13 lolkop#2
Quote:
Originally Posted by Lighthex View Post
Hallo alle zusammen,
ich habe einen kleinen Bot gecodet der mit Controlsend arbeitet und wie wir wissen braucht Controlsend den Titel des Fensters und diesen möchte ich in einer ini datei abspeicehr das habe ich nun auch hinbekommen,jedoch wenn ich diesen wärend der Bot an ist ändere und dann speichere muss ich den ganzen bot nochmal aus schalten und wieder an ...
Es solle wie dieser Bot sein [Only registered and activated users can see links. Click Here To Register...]
Also ich meine bei dem 2ten Tab da steht Speichern wenn man das drückt "reloadet" das ganze programm ,wie kann ich das auch machen.
Hier der Code :


PS : Das ist nur ein Beispiel das eigendliche ist viel komplezer ...
leg dir halt das iniread an eine andere stelle als an den start vom tool -..-
10/20/2010 17:56 Lighthex#3
Boah ey so klug bin ich auch ,aber ich will das das Program wärend es läuft das alles neuladet ....
10/20/2010 18:31 lolkop#4
es gibt immer mehrere wege das ganze umzusetzn...

ich würde es immer komplett über das gui laufen lassen...
Code:
$windowname = GUICtrlRead($input)
wäre alles was man hierfür braucht. den windowname kannst du immer einlesen, wenn der start button betätigt wird.

somit wird jede kleine änderung des namens automatisch vom gui ausgelesen...
auf deinen code bezogen würde es so aussehen:
Code:
Dim $windowname, $running = False, $btn[2] = ['Start', 'Stop']

GUICreate("Space Drücker", 198, 139, 192, 124)
$input = GUICtrlCreateInput($windowname, 16, 40, 161, 21)
$checkbox = GUICtrlCreateCheckbox("Aufeheben ?", 16, 16, 97, 17)
$save = GUICtrlCreateButton("Speichern", 16, 72, 163, 25)
$go = GUICtrlCreateButton("Start", 16, 104, 163, 25)
GUICtrlSetData($input, IniRead("Test.ini", "", "Fenstername", ""))
GUISetState(@SW_SHOW)

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
		Case $go
			$running = Not $running
			GUICtrlSetData($go, $btn[$running])
			$windowname = GUICtrlRead($input)
		Case $save
			IniWrite("Test.ini", "", "Fenstername", GUICtrlRead($input))
		Case Else
			If $running Then ControlSend($windowname, "", "", "{space}")
	EndSwitch
WEnd
wenn es mein code wäre, würde ich den save button komplett weg lassen, und beim klicken auf start bzw benutzen des inputs schon den wert speichern.

die andere, schlechtere, möglichkeit wäre es alles über die ini laufen zu lassen... dabei würdest du statt dem GUICtrlRead halt ein IniRead benutzen.

und noch eine weitere möglichkeit wäre ein load button, bei dessen nutzung das iniread angewendet wird...

wofür du dich jetzt entscheidest, hängt von dir ab... wenn die hauptidee ist, das die ini vom user direkt umgeschriebn werden soll, musst du es natürlich über die ini laufen lassen. hast du aber im gui eine eingabemöglichkeit, ist die guivariante immer zu bevorzugen.