ComboBox auslesen & vergleichen?!

10/23/2011 11:42 Belur#1
Hey E*pvpers.


Da ich vor etwas längerer Zeit auch mal paar Sachen mit AutoIt gemacht habe, wollte ich es jetzt auch mal wieder probieren.

Geht darum, dass ich League of Legends spiele, und ne simple ComboBox habe, mit allen Champions. Jetzt wähl ich einen aus, drücke nen Button und der soll mir ne Internetseite ausgeben mit einem Guide. Link hab ich alles drin etc.

Für den Teil dürfte eig folgender Quelltext relevant sein:

HTML Code:
$Guidesuche = GUICtrlCreateButton("Guidesuche", 160, 208, 201, 25)
$Combo1 = GUICtrlCreateCombo("Combo1", 120, 184, 305, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Akali |Alistar")

$readCombo = GUICtrlRead($Combo1)

Case $Guidesuche
		 
		If $readCombo = "Akali" Then
			_IECreate("http://www.solomid.net/guides.php?g=1785")
		EndIf

Soo. Das Programm lässt sich zwar erstellen, aber sobald ich zB Akali auswähle und dann den Button drücke, kommt ne Fehlermeldung, dass etwas in der If-Bedingung nicht passt.


Da das jetzt schon ewig her ist mit Autoit, find ich den Fehler leider selber nicht.

Warscheinlich irgendwas mega dummes aber okay :D


Würd mich freuen wenn mir von euch jmd helfen könnte.

Greets

~Belur


#edit:

Ich krieg jetzt schonmal keine Fehlermeldung mehr. Hab jetzt folgende 3 If-bedingungen mal:

HTML Code:
Case $Guidesuche
		 
		 $readCombo = GUICtrlRead($Combo1)
		
		If $readCombo = "Akali" Then
		_IECreate("http://solomid.net/guides.php?g=8")
		EndIf
		 
		 
		If $readCombo = "Alistar" Then
		_IECreate("http://solomid.net/guides.php?g=944")
		 
	 EndIf
	 
	 if $readCombo = "Amumu" Then 
		 
		 _IECreate("httP://solomid.net/guides.php?g=1737")
		 
		 EndIf

Komischerweiße funktioniert das bei der 2. (Alistar), aber bei den anderen beiden passiert garnichts.
10/23/2011 12:17 Logtetsch#2
Guck dir mal das an. Du könntest es eventuell mit deinem Button verknüpfen.

PHP Code:
#include <GUIConstants.au3>
Opt("GUIOnEventMode"1)
GUICreate("combotest"200200)
$combo GUICtrlCreateCombo(""55)
GUICtrlSetData($combo"|item1|item2")
GUICtrlSetOnEvent($combo"_comboread")
GUISetOnEvent($GUI_EVENT_CLOSE"_exit")
GUISetState()

While 
1
WEnd

Func _comboread
()
    
$read GUICtrlRead($combo)
    If 
$read "item1" Then MsgBox(0"Combobox"$read)
    If 
$read "item2" Then MsgBox(0"Combobox"$read)
EndFunc

Func _exit
()
    Exit
EndFunc 
10/23/2011 12:40 Belur#3
Hm ja. Der unterschied besteht ja im Grune genommen nur in der Func.

Wobei ich Func bisher nur in Verbindung mit HotKeySet gesehen hab. Was würde die Function verändern? Immeehin klappt meins ja komischerweiße beim zweiten.


Werd es gleich mal probieren.
10/23/2011 13:10 .AppleTree.#4
Kleiner Fehler aber verherende folgen (leerschlag und Amumu nicht erwähnt)

So müsste es gehen:
Code:
$Guidesuche = GUICtrlCreateButton("Guidesuche", 160, 208, 201, 25)
$Combo1 = GUICtrlCreateCombo([COLOR="red"]"Amumu"[/COLOR], 120, 184, 305, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, [COLOR="Red"]"Akali|Alistar"[/COLOR])
10/23/2011 19:43 Belur#5
Ja ich hatte die Einträge aus der Combo Box nicht alle eingefügt, weils über 80 sind. Amumu steht drin.

Aber die Leerstelle nach Akali hab ich nicht gesehen O.o
Wad du sagstest triffts wohl ziemlich gut :D

Danke

#edit:

Die Combobox ist leider etwas zu klein. Daher werden nicht alle Namen angezeigt. Gibts ne Möglichkeit die zum Scrollen zu machen oder irgendnen vergleichbares anderes Steuerelement?
10/24/2011 02:59 Freddy​#6
Hier

PHP Code:
GUICtrlCreateCombo("",120,184,305,25 BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL,$WS_VSCROLL))
GUICtrlSetData(-1"Akali |Alistar"
10/24/2011 10:08 Belur#7
Gut. Das klappt. Danke dir.

Bleibt nur noch ein Problem.

Sobald ich einen Guide geöffnet hab, kann ich das Fenster nicht mehr einfach schließen sondern muss das übern Task-Manager machen. Bzw sobald ich halt irgendwas gemacht hab kann ich keinen anderen Guide mehr öffnen etc.

Hab gedacht, der säß irgendwo in ner Endlosschleiße und hab mal mit ExitLoop probiert aber klappt alles nicht.
10/24/2011 13:46 Freddy​#8
Dann zeig mal dein ganzes Script
10/24/2011 15:35 Belur#9
PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>


$Form2 GUICreate(""400160, (@DesktopWidth/2)-200, (@Desktopheight/3)-60)
$Combo1 GUICtrlCreateCombo("Guide-Champion-Wahl"7511020525BitOR($CBS_DROPDOWN$CBS_AUTOHSCROLL,$WS_VSCROLL))
        
GUICtrlSetData( - 1"Akali|Alistar|Amumu|Anivia|Annie|Ashe|Blitzcrank|Brand|Caitlyn|Cassiopeia|Cho`Gath|Corki|Dr. Mundo|Evelynn|Ezreal|Fiddlesticks|Galio|Gankplank|Garen|Gragas|Heimerdinger|Irelia|Janna|Jarvan IV|Jax|Karma|Karthus|Kassadin|Katarina|Kayle|Kennen|Kow`Maw|LeBlanc|Lee Sin |Leona|Lux|Malphite|Malzahar|Maokai|Master Yi|Miss Fortune|Mordekaiser|Morgana|Nasus|Nidalee|Nocturne|Nunu |Olaf|Orianna|Pantheon|Poppy|Rammus|Renekton|Riven |Rumble|Ryze|Shaco|Shen|Signed|Sion|Sivir|Skarner|Sona|Soraka|Swain|Talon|Taric|Teemo|Tristana|Trundle|Tryndamere|Twisted Fate|Twitch|Udyr|Urgot|Vayne|Veigar|Vladimir|Warwick|Wukong|Xerath|Xin`Zhao|Yorick|Zilean")

$guidesuche GUICtrlCreateButton("Finde Guide"28011010020)




GUISetState(@SW_SHOW)

While 
1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
    
        
        
    
Case $guidesuche
        $guide 
GUICtrlRead($Combo1)
        
        
        If 
$guide "Akali" Then _IECreate("http://solomid.net/guides.php?g=8")


    EndSwitch
    
    
WEnd 
Soo. Die If-Schleife halt nur für dementsprechend alle Einträge aus der Combobox.
Habs jetzt zum Testen nur für den ersten gemacht.

Wählt man also Akali aus, öffnet sich zwar die Seite aber man kann keine andere mehr öffnen, bsp nochmal die gleiche Seite über erneutes Button-Drücken und man kann das Skript nicht mehr übers "rote Kreuz" schließen.