Hallo Forum
Wie kann ich abfragen ob die „GUIOnEventMode“ aktiviert ist ?
Danke für Eure Hilfe
Eugen
GUIOnEventMode
-
Eugen -
25. September 2015 um 16:55 -
Erledigt
-
-
-
hallo autoBert
Danke dir, hat gepasst
EugenNoch eine Frage
Kann man Control’s (Label) während der Laufzeit umbenennen?Edit Raupi: Alten Beitrag wieder hergestellt. Eugen, es ist nicht besonders nett, wenn du einen Teil der Frage wegeditierst.
Der nächste Post ist die Antwort auf deine Frage hat. -
Nein. Du kannst aber einer zweiten Variable den gleichen Wert zuweisen:
$Control=guictrlcreatelabel("",10,10)
$label=$control
Nur der Sinn ist recht zweifelhaft. Nehm doch gleich den anderen Namen^^
(Achja, falls du den Text meinst, der im Label steht: GuiCtrlSetData($control,"Neuer Text") -
Hallo Kanashius
Zu besserem Verständnis einen Programmausschnitt zum testen.
Habe es auch versucht etwas zu AuskommentierenC
Alles anzeigen#include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <ColorConstants.au3> #include <GDIPlus.au3> #Include <Array.au3> #include <ScreenCapture.au3> Opt("GUIOnEventMode", 1) #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("asd",281, 180, 1, 1) $Pic1 = GUICtrlCreatePic("", 0, 0, 0, 0, $WS_EX_LAYERED) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### WinSetOnTop($Form1, "",1) ;--------------------- Dim $aWerte[10][15] Dim $Adresse[129][3] dim $ww Dim $F Dim $Zeile="ABCDEFGHI" $ss=0 _Labelgitter() _ArrayDisplay($aWerte) ;--------------------- While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd ;----------------------- Func _Labelgitter() Local $i=0 Local $y=0 _Image_sichern();SPEICHERT EINE STELLE VOM BILDSCHIRM $ww=ControlGetPos("","",$Pic1) _Image_laden($ww);HOLT DEN GESPEICHERTEN AUSSCHNITT IN $PIC1 $FeldH=Round(($ww[3]/9),0)*2 ;Label Aufteilung Senkrecht $FeldB=Round(($ww[2]/14),0)*2 ;Label Aufteilung waagrecht ;------- LABEL ERSTELLEN -------- For $z=1 To 9;$FeldAnz Senkrecht For $x=1 To 14;$FeldAnz Waagrecht ;DA WIRD DER LABELNAME ERSTELLT $F= GUICtrlCreateLabel("", $i, $y, $FeldB, $FeldH, $SS_SUNKEN) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;BEI KLICK AUF EIN LABEL KOMMT DIE RÜCKMELDUNG GUICtrlSetOnEvent($F,"_Pos_melden" ) $aWerte[$z][$x]=$F $i=$i+$FeldB Next $i=0 $y=$y+$FeldB Next ;------- LABEL ERSTELLEN ENDE -------- EndFunc ;-------------- Func _Pos_melden() ;$Bereich_X="284,389,487,589,687,785,890" ;$Bereich_Y="394,494,594,694" ;$aZeile= StringSplit($Zeile,"") $rr=(@GUI_CtrlId) ToolTip("Klick auf Label " &$rr ) EndFunc ;-------------- Func _Image_laden($ww) GUICtrlSetImage ($Pic1, @Scriptdir&"\temp.jpg","",0) GUICtrlSetPos($Pic1,0,0,$ww[2]*2, $ww[3]*2);BILD WIRD 2X VERGÖSSERT EndFunc ;----------------------- Func _Image_sichern() $hBMP = _ScreenCapture_Capture("", 977, 120,1116,208) _ScreenCapture_SaveImage (@Scriptdir & "\temp.jpg", $hBMP,True) GUICtrlSetImage ($Pic1, @Scriptdir&"\temp.jpg","",0) _WinAPI_DeleteObject ($hBMP) EndFunc ;-----------------------------
Es wird eine Matrix mit 126 Label erstellt, welche über ein Bild ($Pic1) liegt.
Mit anklicken eines Label bekomme ich die Rückmeldung welches Planquadrat gemeint ist.
Im Moment bekomme sich nur die Nummer 4 bis 129Die Bezeichnung ist aber nicht praktikabel da es nichts über die Zeilenposition aussagt.
Ideal währe zB. A5 , G 93 , …usw.
Daher meine Frage ob beim erstellen der Label in der Laufzeit, man einen eigenen Namen vergeben kann.
Grüsse EugenAch ja die Label sollten sich mit der neuen Variable auch ansprechen lassen.
So wie jetzt mit:
GUICtrlSetBkColor(8, $COLOR_RED) -
- Offizieller Beitrag
Wie sollen denn die Koordinaten aussehen?
Senkrecht von A-H Und waagerecht von 1 bis 14 ? -
Hallo Raupi
Genau so dachte ich mir das.
In diesem Falle bis I
Waagrecht bis 14
Senkrech bis A-I
Der Klick liefert einen Rückgabewert, der weiter verarbeitet wird und dann einen Bezug auf die Position am Bildschirm darstellt.
Ausgelöst wird der Klick durch Imagesearch im Guibereich.
Maus im Labyrinth den Weg finden kommt dem Projekt sehr nahe.
Liebe Grüsse
Eugen
PS:Die Functionen "_Image_laden" und "_Image_sichern" dienen nur zu testen. -
- Offizieller Beitrag
Ich frage mich jetzt für was du Imagesearch brauchst?
Du willst doch die Koordinaten haben und dazu brauchst du doch nicht mit Imagesearch rum zu fuschen. -
Die Koordinaten geben mir nur an welcher Label angesprochen wird.
Das Bild in der Gui ist ein Foto vom meinen zweiten Bildschirm
Über meinen zweiten Bildschirm läuft eine Maus im einem Labyrinth.
Von dem Labyrinth- Fenster mache ich ein Foto und lade dieses in die Gui.
Durch die Überlagerung mit den durchsichtigen Labeln, sehe ich in welchem Planquadrat sich die Maus befindet und in welche Richtung frei ist.(Sollte dann automatisch den Weg finden)
Dazu brauche ich Imagesearch.
Anbei schicke ich ein Foto von dem zweiten Bildschirm der runde Punkt ist die Maus. -
Du verstößt damit gegen die Forenregeln:
"Programme, die einem Spieler bei jeglicher Art von Computerspiel (auch Einzelspieler) einen Vorteil verschaffen ("Bots")"
-
hallo chip
Bitte keine Vorurteile.
Wenn es den Anschein hatte das es ein Bot wird so tut es mir leid und war nicht meine Absicht.
Es wird kein Bot und hat auch nichts mit irgendeinem Spiel zu tun.Sinn der Sache ist eine geplante Navigation auf einer später eingescannten Straßenkarte, um den besten Weg zum Ziel zu finden.
Daher auch der Vergleich mit der Maus und dem Labyrinth.Die Maus ist im real ein Quadrocopter mit Kamera.
Am Ziel angelangt soll die Kamera Fotos machen. (Natürlich alles im Ges. Rahmen)
Auch während des Anfluges sollen die aufgenommen Bilder an die Gui gesendet und ausgewertet werden um Hindernisse auszuweichen. (ist noch Zukunft)Um weitere Ideen zu erklären würde es den Beitrag sprengen, da ich erst am Programmanfang stehe.
„Quo vadis“ = ...was möglich ist!
mfg
Eugen
Im Übrigen hasse ich Bot- Spieler. -
Dann kann ich dir jetzt schon sagen, dass das mit Autoit vergessen kannst. Wir haben selbst auf der Arbeit Copter. Spar dir die Zeit zu versuchen das mit Autoit zu machen.
Und btw. " später eingescannten Straßenkarte," und "Natürlich alles im Ges. Rahmen" passen nicht zusammen. Du darfst weder Straßen überfliegen noch überhaupt innerorts so einfach rumfliegen.