Sag doch mal wie du es gelöst hast. Bei mir funktioniert es nämlich auch nicht.
Beiträge von $var
-
-
[autoit]
#include <Misc.au3>
[/autoit][autoit][/autoit][autoit]Global $hDLL = DllOpen ("user32.dll")
[/autoit][autoit][/autoit][autoit]
HotKeySet ("{ESC}", "_End")While True
[/autoit][autoit][/autoit][autoit]
Select
Case _IsPressed ("01", $hDLL)
$a_Pos = MouseGetPos ()
While _IsPressed ("01", $hDLL)
Sleep (10)
WEnd
$a__Pos = MouseGetPos ()
If $a__Pos[0] >= $a_Pos[0] And $a__Pos[1] >= $a_Pos[1] Then
$hGUI = GUICreate ("", $a__Pos[0] - $a_Pos[0], $a__Pos[1] - $a_Pos[1], $a_Pos[0], $a_Pos[1], 0x80880000)
GUISetBkColor (0xA8CAEC, $hGUI)
GUICtrlCreateGraphic(0, 0, $a__Pos[0] - $a_Pos[0], $a__Pos[1] - $a_Pos[1])
GUICtrlSetBkColor(-1, 0x3399ff)
GUICtrlCreateGraphic(1, 0, $a__Pos[0] - $a_Pos[0] - 3, $a__Pos[1] - $a_Pos[1] - 2)
GUICtrlSetBkColor(-1, 0x3399ff)
ElseIf $a_Pos[0] >= $a__Pos[0] And $a_Pos[1] >= $a__Pos[1] Then
$hGUI = GUICreate ("", $a_Pos[0] - $a__Pos[0], $a_Pos[1] - $a__Pos[1], $a__Pos[0], $a__Pos[1], 0x80880000)
GUISetBkColor (0xA8CAEC, $hGUI)
GUICtrlCreateGraphic(0, 0, $a_Pos[0] - $a__Pos[0], $a_Pos[1] - $a__Pos[1])
GUICtrlSetBkColor(-1, 0x3399ff)
GUICtrlCreateGraphic(1, 0, $a_Pos[0] - $a__Pos[0] - 3, $a_Pos[1] - $a__Pos[1] - 2)
GUICtrlSetBkColor(-1, 0x3399ff)
ElseIf $a_Pos[0] >= $a__Pos[0] And $a__Pos[1] >= $a_Pos[1] Then
$hGUI = GUICreate ("", $a_Pos[0] - $a__Pos[0], $a__Pos[1] - $a_Pos[1], $a__Pos[0], $a_Pos[1], 0x80880000)
GUISetBkColor (0xA8CAEC, $hGUI)
GUICtrlCreateGraphic(0, 0, $a_Pos[0] - $a__Pos[0], $a_Pos[1] - $a__Pos[1])
GUICtrlSetBkColor(-1, 0x3399ff)
GUICtrlCreateGraphic(1, 0, $a_Pos[0] - $a__Pos[0] - 3, $a_Pos[1] - $a__Pos[1] - 2)
GUICtrlSetBkColor(-1, 0x3399ff)
ElseIf $a_Pos[0] <= $a__Pos[0] And $a_Pos[1] >= $a__Pos[1] Then
$hGUI = GUICreate ("", $a__Pos[0] - $a_Pos[0], $a_Pos[1] - $a__Pos[1], $a_Pos[0], $a__Pos[1], 0x80880000)
GUISetBkColor (0xA8CAEC, $hGUI)
GUICtrlCreateGraphic(0, 0, $a__Pos[0] - $a_Pos[0], $a_Pos[1] - $a__Pos[1])
GUICtrlSetBkColor(-1, 0x3399ff)
GUICtrlCreateGraphic(1, 0, $a__Pos[0] - $a_Pos[0] - 3, $a_Pos[1] - $a__Pos[1] - 2)
GUICtrlSetBkColor(-1, 0x3399ff)
EndIf
WinSetTrans ($hGUI, "", 128)
WinSetOnTop ($hGUI, "", 1)
GUISetState (@SW_SHOW, $hGUI)
MsgBox (64, "Koordinaten", $a_Pos[0] &" x "& $a_Pos[1] &@CRLF& $a__Pos[0] &" x "& $a__Pos[1])
_End ()
EndSelect
WEndFunc _End ()
[/autoit]
DllClose ($hDLL)
Exit
EndFunc -
Meinst du so etwas?
[autoit]#include <Misc.au3>
[/autoit][autoit][/autoit][autoit]Global $hDLL = DllOpen ("user32.dll")
[/autoit][autoit][/autoit][autoit]
HotKeySet ("{ESC}", "_End")While True
[/autoit][autoit][/autoit][autoit]
Select
Case _IsPressed ("01", $hDLL)
$a_Pos = MouseGetPos ()
While _IsPressed ("01", $hDLL)
Sleep (10)
WEnd
$a__Pos = MouseGetPos ()
MsgBox (64, "Koordinaten", $a_Pos[0] &" x "& $a_Pos[1] &@CRLF& $a__Pos[0] &" x "& $a__Pos[1])
EndSelect
WEndFunc _End ()
[/autoit]
DllClose ($hDLL)
Exit
EndFunc -
Hier mal ein kleines Beispiel...
[autoit]
Wenn das Fenster 50 oder weniger Pixel vom linken oder rechten Rand entfernt ist, wird es an die Kante geschoben.
Eigentlich ganz einfach.$h_GUI = GUICreate ("Magnet", 400, 200)
[/autoit][autoit][/autoit][autoit]GUISetState (@SW_SHOW, $h_GUI)
[/autoit][autoit][/autoit][autoit]While True
[/autoit]
$nMsg = GUIGetMsg (1)
$aPos = WinGetPos ($h_GUI) ; <== Positition abfragen
Select
Case $nMsg[0] = -3
Exit
Case $aPos[0] <= 50 ; linker Rand
WinMove ($h_GUI, "", 0, $aPos[1])
Case $aPos[0] + $aPos[2] >= @DesktopWidth - 50 ; rechter Rand
WinMove ($h_GUI, "", @DesktopWidth - $aPos[2], $aPos[1])
EndSelect
WEnd -
Workingdir müsste in dem Fall dann @ScriptDir&"\Siedler Online\Nebenprogramme" sein...
Benutz aber lieber ShellExecute. Ist angenehmer.
-
Du musst die Datei AutoIt3\SciTE\api mit einem Editor öffnen und dort die Namen deiner selbstgeschriebenen Funktionen anhängen.
-
Vielen Dank
[autoit]Func _ImageSearchArea ($sImage, $iPosition, $iLeft, $iTop, $iRight, $iBottom, ByRef $iX, ByRef $iY, $iTolerance)
[/autoit]Muss ich bei $iLeft die x-Koordinate und bei $iTop die y-Koordinate des linken oberen Ausschnittrandes und bei $iRight die x-Koordinate und bei $iBottom die y-Koordinate des rechten unteren Ausschnittsrandes mitgeben?
Genau richtig.
Also wo man eine Zeit, die maximal gesucht werden soll, mitgeben kann. Das möchte ich auch, allerdings für die _ImageSearchArea. Also die Suchfläche und die Suchzeit möchte ich begrenzen. Leider habe ich da keine Funktion gefunden. Kennt da jemand etwas?
Das kannst du dir ganz einfach selbst basteln.
[autoit]Local $iTimer = TimerInit ()
[/autoit]
Do
$iSearch = _ImageSearchArea ($sImage, $iPosition, $iLeft, $iTop, $iRight, $iBottom, ByRef $iX, ByRef $iY, $iTolerance)
Until $iSearch = 1 Or TimerDiff ($iTimer) >= 5000 ; Sucht fünf Sekunden, oder bis das Bild gefunden wurde.
; Wenn du diese Version verwendest, solltest du am besten noch nach der Schleife abfragen, ob die Schleife durch das "Timeout" verlassen wurde,
; oder ob das Bild gefunden wurde. Das ist in den meisten Fällen wichtig... -
Entweder in dasselbe Verzeichnis, wie das Script, oder in C:\Windows\system32 bzw C:\Windows\SysWOW64 auf 64-Bit Systemen.
-
[autoit]
_ImageSearch ($sImage, $iPosition, ByRef $iX, ByRef $iY, $iTolerance)
[/autoit][autoit][/autoit][autoit]#comments-start
[/autoit][autoit][/autoit][autoit]
$sImage muss ein Pfad zu einer Bilddatei sein. Eine 24bit BMP ist dabei ideal.
$iPosition - wenn 1, dann wird die Mitte ausgegeben, bei 0 die linke obere Ecke.
$iX und $iY müssen einfach nur vordefinierte Variablen sein. In diese werden später die Koordinaten gespeichert.
$iTolerance muss zwischen 0 und 255 sein. Bei 0 wird das Bild nur gefunden, wenn es EXAKT übereinstimmt.
Je höher, desto mehr "Spielraum" bleibt.Mehr brauchst du nicht. (Außer die Funktion natürlich in dein Script einzufügen.)
[/autoit]
#comments-end€: Du brauchst noch die ImageSearchDLL.dll, ist mir gerade eingefallen.
Google it. -
[autoit]
WinSetOnTop
[/autoit] -
Vor dem Löschen noch...
[autoit]DllClose ($dll)
[/autoit] -
[autoit]
#include <File.au3>
[/autoit][autoit][/autoit][autoit]Global $sString = "Dein String"
[/autoit][autoit][/autoit][autoit]
Global $sPath = "C:\..." ; Pfad zur Datei
Global $iLines = _FileCountLines ($sPath)For $i = 1 To $iLines
[/autoit]
If StringInStr (FileReadLine ($sPath, $i), $sString) <> 0 Then
MsgBox (0, "", $sString &" befindet sich in Zeile "& $i)
EndIf
Next -
ImageSearch
[autoit];===============================================================================
[/autoit] [autoit][/autoit] [autoit]
;
; Description: Find the position of an image on the desktop
; Syntax: _ImageSearchArea, _ImageSearch
; Parameter(s):
; $sImage - the image to locate on the desktop
; $iTolerance - 0 for no tolerance (0-255). Needed when colors of
; image differ from desktop. e.g GIF
; $iPosition - Set where the returned x,y location of the image is.
; 1 for centre of image, 0 for top left of image
; $iX $iY - Return the X and Y location of the image
;
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
;
; Note: Use _ImageSearch to search the entire desktop, _ImageSearchArea to specify
; a desktop region to search
;
;===============================================================================
Func _ImageSearch ($sImage, $iPosition, ByRef $iX, ByRef $iY, $iTolerance)
Return _ImageSearchArea ($sImage, $iPosition, 0, 0, @DesktopWidth, @DesktopHeight, $iX, $iY, $iTolerance)
EndFuncFunc _ImageSearchArea ($sImage, $iPosition, $iLeft, $iTop, $iRight, $iBottom, ByRef $iX, ByRef $iY, $iTolerance)
[/autoit]
If $iTolerance > 0 Then $sImage = "*" & $iTolerance & " " & $sImage
$aRet = DllCall ("ImageSearchDLL.dll", "str", "ImageSearch", "int", $iLeft, "int", $iTop, "int", $iRight, "int", $iBottom, "str", $sImage)
If IsArray ($aRet) = 0 Then Exit
If $aRet[0] = "0" Then Return 0
$aArray = StringSplit ($aRet[0], "|")
$IX = Int (Number ($aArray[2]))
$iY = Int (Number ($aArray[3]))
If $iPosition = 1 Then
$iX = $iX + Int (Number ($aArray[4]) / 2)
$iY = $iY + Int (Number ($aArray[5]) / 2)
EndIf
Return 1
EndFuncWinGetPos
[autoit]$aPos = WinGetPos (WinActive (""))
[/autoit]
If IsArray ($aPos) Then
MouseClick ("left", $aPos[0], $aPos[1]) ; $aPos[0] und $aPos[1] sind die Koordinaten der linken oberen Ecke des Fensters.
; Du musst also noch Pixel dazu addieren, um den Button zu treffen... BadBunny-Version.
; Mehr dazu gibt es in der Hilfedatei.
EndIf -
Danke. Das werde ich dann morgen mal genauer testen.
Dann hätte ich noch eine weitere, kleine Frage. *<*
Ich habe bereits dieses Zeug von Dyndns geholt (kenne die Bezeichnung nicht und kann mir leider auch keine logische ausdenken ~,~),
Eins von Dyndns.com und eins von no-ip...
Wenn ich diese nun mit TCPNameToIP "umwandel", bekomme ich verschiedene IP's raus.
Mit "www" am Anfang bekomme ich eine IP raus. Ohne, eine ganz andere.
Die IP ohne "www" am Anfang, stimmt manchmal mit der IP überein, die ich bei wieistmeineip.de oder _GetIP() rausbekomme... Etwa fifty-fifty.
Im Laufe des Tages ändert sie sich einfach... Ohne ersichtlichen Grund.Wieso variieren die IP's ständig und wie kriege ich es statisch hin?
-
@IPAddress1 gibt mir 172.16.1.2 aus (die wird von mir auch im Server angegeben), doch wenn ich sie dort eintrage, bekomme ich folgende Meldung:
-
Windows+R, cmd, [Enter], ipconfig
Da steht irgendwo die IP-Adresse, die du brauchst. Bei Alice-Geräten ist das meist 192.168.1.*
ZitatIPv4-Adresse . . . . . . . . . . : 172.16.1.2
Subnetzmaske . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : 172.16.1.1Sonst werden dort keine IP's aufgelistet...
-
Oo man , was ist denn so schwer daran die Google Suche mal zu verwenden? , Port-Forwarding im bezug auf Router ist einfach eine Festlegung auf deinem Router (eine Tabelle) ähnlich wie bei einer DHCP Reservierung kannst du in dieser Tabelle eintragen , WENN jemand aus dem Internet auf deinen Router und zwar :Port (der von dir festgelege) zugreifen möchte DANN, soll der Router sämtliche Anfragen usw.. an deinen Rechner (in dem Fall der der den AutoitServer hat) weiterleiten . der Grund dafür ist dass du aus dem WWW nicht direkt mit deinem Rechner innerhalb des LAN Kommunizieren kannst OHNE ein Portforwading eingerichtet zu haben, denn aus dem WWW ist deine LAN Adresse (meist 192.168...) nicht sichtbar und somit auch nicht erreichbar, weil diese Adressen zum LAN Privatadressbereich gehören....
Gruß Marvin
Vielen Dank! Eine sehr schöne Erklärung.
Den Sinn der Sache verstehe ich nun, doch leider kann ich es nicht realisieren, da ich die dafür notwendige IP nicht finde...
Du sagst, sie würde meistens mit 192.168 anfangen... Im ControlPanel des Routers sind die ersten Blocks bereits vorgegeben - 172.16.
@IPAddress1 gibt mir 172.16.1.2 aus (die wird von mir auch im Server angegeben), doch wenn ich sie dort eintrage, bekomme ich folgende Meldung:ZitatAls IP-Adresse darf nicht die IP-Adresse des Alice IAD/Modem verwendet werden.
-
Entschuldigung bitte, dass ich keine Gedanken lesen kann!
Ich verzeihe dir.
Um WELCHE IP handelt es sich?
Du Profi weißt doch, welche IP ich benötige.
Welcher Router
Steht im Startpost.
welches Serverprogramm, welches AutoIt-Script.
Absolut irrelevant.
Du gibst KEINERLEI relevante Informationen und erwartest, dass dir hier jemand hilft, und anstatt mit Infos rauszurücken, wird rumgeheult....genau der professionelle Ton, um Spezialisten dazu zu ermutigen, dir hier aus DEINER Lage zu helfen!
Meine Frage war nur, welche IP ich dort eintragen muss und wo ich sie finde.
Als ob die an Heiligabend nix besseres vorhätten, als darauf zu warten daß DU hier vorstellig wirst...
Zeit zum trollen hast du ja anscheinend...
-
Ich habe keine gottverdammte Ahnung, welche IP das sein soll, denn keine IP die ich finde, fängt mit 172.16 an...
Und es steht nunmal nicht Handbuch.Wenn du nicht helfen willst, dann sag einfach nichts.
Jedenfalls wäre es viel einfacher zu sagen, wo ich diese IP finde, als mich blöd anzumachen... -
Ich würde meinen PC gerne als Server für TCP-Zugriff benutzen, habe aber Probleme, ihn von Außen zu erreichen...
Es wird immer von Port-Forwarding geredet, doch da blicke ich überhaupt nicht durch und es gibt auch keine gescheiten Erklärungen dafür.Kann mir jemand in meinem Fall helfen?
Alice Box 1231
[Blockierte Grafik: http://img803.imageshack.us/img803/2626/alicebox1231.png]
Welche IP soll ich da eintragen?
Wo finde ich sie?