Und wieder brauch ich hilfe bei AutoIT ^^

02/09/2009 00:30 Commander21#1
Hi
Titel sagt ja schon alles xD

Also es geht um folgenden Code:
PHP Code:
    Local $send$exit$MSG
    GUICreate
("~~~ TEST ~~~")
    
Opt("GUICoordMode"1)

$text GUICtrlCreateInput (""3030350)
$send GUICtrlCreateButton ("Senden"306060)
$exit GUICtrlCreateButton ("Exit"309050)

    
GUISetState ()
    While 
1
        $MSG 
GUIGetMsg ()
        
Select
            
Case $msg $send
                Sleep 
(3000)
                
Send ($text)
            Case 
$msg $exit
                
Exit
        
EndSelect
    WEnd 
Wer sich etwas damit auskennt, erkennt, das geschrieben werden soll, was man oben bei $text eingibt.

Es funzt eigl. alles, nur eins nicht.
Anstatt den text zu schreiben, den man eingibt, schreibt er einfach nur: 3. Kein witz, er schreibt, egal was man eingibt nur diese eine zahl -.-

So, wie bekomm ich das nun hin, das er das schreibt, was man eingibt?


Bin noch recht neu mit AutoIT und will mir deswegen erstmal paar kleine Testprogramme machen, die ich dann erweitee und so immer mehr dazu lern.
Hab auch schon ins Help-file von AutoIT geguckt, steht zwar recht viel drin, auch gut erklärt (wenn ich englich könnte ^^) aber dazu finde ich nix...

Also, wäre dankbar für jeden tipp ^^
02/09/2009 09:08 verT!c4L#2
Ok, hier ein Tipp... lern Englisch ^^
Zu deinem Script komme ich später, grad keine Zeit :P
02/09/2009 12:23 Ecnelis#3
Hab mich bisher nie wirklich mit GUIs beschäftigt, aber wenn ich mich nicht irre ...

Auszug aus der deutschen AutoIt-Hilfe:
Quote:
Schreibe keinen sleep-Befehl in die Schleife aus Angst, die CPU auszulasten - das wird nur dazu führen, dass die GUI nicht mehr auf den Nutzer reagiert.
Würde bedeuten, dass das Ding dann von dir keinen weiteren Code annimmt und bei der 3 von 3000 stehenbleibt und da die Schleife beendet. ^^

Ansonsten lad mal den Anhang
02/09/2009 13:39 Commander21#4
Hi, also mein problem wurde auch mit der Deutschen Version leider nicht gelöst...

An dem sleep von 3000 liegt es nicht, habs mal auf 5000 gemacht und trotzdem schreibt er nur ne 3 da hin -.-

Hat noch i.einer hier ne lösung dafür?
02/09/2009 14:16 verT!c4L#5
PHP Code:
Local $send$exit$msg
GUICreate
("~~~ -.- ~~~"205205, @DesktopWidth 2155)
Opt("GUICoordMode"1)

$text GUICtrlCreateInput (""3030150)
$send GUICtrlCreateButton ("Senden"306060)
$exit GUICtrlCreateButton ("Exit"309050)

GUISetState ()
While 
1
    $msg 
GUIGetMsg (1)
    
Select
        
Case $msg[0] = $send
            Send 
($text)
        Case 
$msg[0] = $exit
            
Exit
    
EndSelect
WEnd 
Wozu hast das sleep überhaupt in der schleife? macht nicht sonderlich Sinn in dem Fall...


Quote:
Originally Posted by Commander21 View Post
habs mal auf 5000 gemacht
Du weißt aber schon was die sleep-funktion in deiner Schleife verursacht oder?
Je höher desto länger... sprich es dauert bis deine GUI mal ausn Arsch kommt
und reagiert... also sleep da weg lassen.


PHP Code:
While 1
$f1msg 
GUIGetMsg(1)
    
Select
        
Case  $f1msg[0] = $F1Button1
            _Form2
()
        Case  
$f1msg[0] = $F1Button2
            $pHP 
_a()
            
_b()
            
_c()
            Do    
                
_r()
                
_s()
                
_t()
                
_u()
                
_v()
                
_w()
                
_x()
                
_y()
                
_z()
            
Until _IsPressed("2E"$dll)
        Case 
$f1msg[0] = $GUI_EVENT_CLOSE
            ExitLoop
    EndSelect
WEnd 
Nur als Beispiel...
02/09/2009 16:09 Commander21#6
PHP Code:
While 1
$f1msg 
GUIGetMsg(1)
    
Select
        
Case  $f1msg[0] = $F1Button1
            _Form2
()
        Case  
$f1msg[0] = $F1Button2
            $pHP 
_a()
            
_b()
            
_c()
            Do    
                
_r()
                
_s()
                
_t()
                
_u()
                
_v()
                
_w()
                
_x()
                
_y()
                
_z()
            
Until _IsPressed("2E"$dll)
        Case 
$f1msg[0] = $GUI_EVENT_CLOSE
            ExitLoop
    EndSelect
WEnd 
Nur als Beispiel...[/QUOTE]

Und was soll dieser Code jetz genau?
Ich will ja das der Text, den man oben bei $text = GUICtrlCreateInput ("", 30, 30, 150) eingibt unten bei Send ($text) wiedergegeben wird. Es ist ja kein Programm, das man für i.was benutzen könnte. wie ich schon sagte, ich will nur lernen, wie man damit umgeht, was alles möglich ist und wie genau alles funzt ^^

Also als Beispiel:
~ Programm starten -->
~ *Fenster öffnet sich* -->
~ *Text eingeben z.B. Hallo Welt* -->
~ *Text (Hallo Welt) wird nach ein paar Sekunden irgentwo wiedergegeben*

Also, wie könnte ich das hinbekommen?

So, Jetzt hab ich mal so versucht:
PHP Code:
Local $send$exit$MSG

; -----------------------------------------------------------------------------------------------------------------------------------------------------------------------    
GUICreate("~~~ TEST ~~~")
Opt("GUICoordMode"1)
    
; -----------------------------------------------------------------------------------------------------------------------------------------------------------------------

$text GUICtrlCreateInput (""3030350)
$send GUICtrlCreateButton ("Senden"306060)
$exit GUICtrlCreateButton ("Exit"309050)

; -----------------------------------------------------------------------------------------------------------------------------------------------------------------------    
    
GUISetState ()
While 
1
    $MSG 
GUIGetMsg ()
    
Select
    
Case $msg $send
            Run 
("Notepad")
            
WinWaitActive ("Unbenannt")
            
Send ($text1)
        Case 
$msg $exit
            
Exit
    
EndSelect
WEnd 
Hab also Sleep weggelassen und dafür notepad geöffnet. Und er schreibt immernoch die zahl 3 -.-
02/09/2009 16:53 verT!c4L#7
Quote:
Originally Posted by Commander21 View Post
Und was soll dieser Code jetz genau?
Das sollte zur Veranschaulichung dienen, damit du mal siehst wie man
den "Process Flow" eines Scripts bzw. Programms gestalten kann -.-

Quote:
Originally Posted by Commander21 View Post
ich will nur lernen, wie man damit umgeht, was alles möglich ist und wie genau alles funzt ^^
DANN SOLLTEST DU MAL ANFANGEN LESEN ZU LERNEN

Ich helf dir mal beim Lesen der AutoIt-Help (beim Editor über F1 zu erreichen).

Quote:
GUICtrlCreateInput
GUICtrlCreateInput ( "text", left, top [, width [, height [, style [, exStyle]]]] )


Return Value

Success: Returns the identifier (controlID) of the new control.
Darum die 3....
Und wie man dann an den Wert kommt, wird etwas weiter unten sogar erklärt -.-

----------------------------------------------------------------------------------
PHP Code:
Local $send$exit$msg
GUICreate
("~~~ -.- ~~~"205205, @DesktopWidth 2155)
Opt("GUICoordMode"1)

$text GUICtrlCreateInput (""3030350)
$send GUICtrlCreateButton ("Senden"306060)
$exit GUICtrlCreateButton ("Exit"309050)


GUISetState ()
While 
1
    $msg 
GUIGetMsg (1)
    
Select
        
Case $msg[0] = $send
            $data 
GUICtrlRead(3)
            
Run ("Notepad")
            
WinWaitActive ("Unbenannt")
            
Send ($data1)
        Case 
$msg[0] = $exit
            
Exit
    
EndSelect
WEnd 
02/09/2009 17:36 Commander21#8
Ahh, super, endlich kapier ich das xD

danke für dir hilfe, muss wohl noch einiges lernen ^^
02/09/2009 21:11 verT!c4L#9
Wenn du dir nun bspw. eine Funktion schreibst, die deine ICQ History ausliest, den Krempel rüber parst zu ner andere Funktion die ICQ an sich bedient,
haste schnell ein ICQ-History-SpamBot -.- *kopf->tisch* ^^

Zur Vertiefung des Stoffes könntest du noch eine Filter-Funktion schreiben,
welche die Satzlänge begutachtet...
Somit könnten sogar "sinnvolle" Dialoge entstehen ...
Und als Pro-Variante mit AI! xD

Btw ein "Thanks" (s. Button unten) ist kein Problem ;)
02/10/2009 18:17 Commander21#10
Jo, sry thx hab ich ganz vergessen ^^