Wenn es so, wie in deiner Zeichnung ist, liegt ja das Farbsymbol neben dem eigentlichen Icon.
Also mußt du doch Pixelweise scannen (wie von mir am Anfang empfohlen) um das erste Grün, das wohl über dem richtigen Icon liegt, auch zu erwischen.
Beiträge von BugFix
-
-
Oder guggst du hier.
Aber auch in SciTE ( Alt+W ) -
dass er das symbol rechts nebendran bewegt und nicht das bei dem die grüne fläche aufpopt
Das liegt wohl daran, dass das grüne Feld nicht über dem eigentlichen Icon, sondern rechts daneben erscheint. Dann setze das Raster auf 5 Pixel herunter, dann ist die Chance größer, dass der über dem richtigen Icon liegende Bereich erwischt wird.ich hätte aber gerne, dass sie weiter läuft und er das gesammte raster absuchet
Grundsätzlich kein Problem, entferne ExitLoop aus der Schleife und probiere. -
Ist eine xml-Datei, sollte nicht allzu schwierig sein, dass zu erstellen. Ist halt nur einiges an Arbeit

-
Hm, wenn ich da die WS raus mach, findet StringRegExp doch keinen Match mehr.
Stimmt, ich dachte auch mehr an nur die Umbrüche.
Wie gehst du vor? Alles in ein Array listen und iterieren oder zeilenweise einlesen und prüfen? -
Na dann eben in 10-er Pixelblöcken die Maus setzen und jeweils den Bereich 10x10 rechts von der Maus scannen:
[autoit]Global $x_start = 100, $x_end = 300, $y_start = 100, $y_end = 200
[/autoit]
Global $x_ziel = 400, $y_ziel = 500, $color = 0x66FF00, $match
For $i = $x_start To $x_end Step 10
For $k = $y_start To $y_end Step 10
MouseMove($i, $k, 5)
$match = PixelSearch($i, $k, $i+10, $k+10,$color)
If IsArray($match) Then
MouseClickDrag('left', $match[0], $match[1], $x_ziel, $y_ziel, 1)
ExitLoop(2)
EndIf
Next
Next -
Schau in der Hilfe zu GUICreate(), dort findest du Styles und Extended-Styles. Einfach den Links folgen.
-
Vielleicht kannst du ja mal dein Pattern posten.
Vielleicht besteht ein Problem bei Zeilenumbrüchen, entferne die einfach mal vor dem Check (StringStripWS). -
War mir schon klar, aber das Springen im 50 Pixel-Takt ist Quatsch.
ZitatDu müßtest dann die Maus Pixel für Pixel bewegen und jedesmal scannen ob das Symbol auftaucht.
Deshalb auch mein obiges Bsp.
-
Vielleicht bringt es dir was die Prozesseigenschaften auszuwerten.
Mal ein Bsp. für die ersten 5 Durchläufe, die Daten aller Prozesse im 2 Sekunden-Takt:Spoiler anzeigen
[autoit]$strComputer = "."
[/autoit] [autoit][/autoit] [autoit]
$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$objRefresher = ObjCreate("WbemScripting.SWbemRefresher")
$colItems = $objRefresher.AddEnum _
($objWMIService, "Win32_PerfFormattedData_PerfProc_Process").objectSet
$objRefresher.Refresh
$str = ''For $i = 1 to 5
[/autoit]
For $objItem in $colItems
$str &= "Caption: " & $objItem.Caption & @LF
$str &= "Creating Process ID: " & $objItem.CreatingProcessID & @LF
$str &= "Description: " & $objItem.Description & @LF
$str &= "Elapsed Time: " & $objItem.ElapsedTime & @LF
$str &= "Handle Count: " & $objItem.HandleCount & @LF
$str &= "ID Process: " & $objItem.IDProcess & @LF
$str &= "I/O Data Bytes Per Second: " & $objItem.IODataBytesPersec & @LF
$str &= "I/O Data Operations Per Second: " & $objItem.IODataOperationsPersec & @LF
$str &= "I/O Other Bytes Per Second: " & $objItem.IOOtherBytesPersec & @LF
$str &= "I/O Other Operations Per Second: " & $objItem.IOOtherOperationsPersec & @LF
$str &= "I/O Read Bytes Per Second: " & $objItem.IOReadBytesPersec & @LF
$str &= "I/O Read Operations Per Second: " & $objItem.IOReadOperationsPersec & @LF
$str &= "I/O Write Bytes Per Second: " & $objItem.IOWriteBytesPersec & @LF
$str &= "I/O Write Operations Per Second: " & $objItem.IOWriteOperationsPersec & @LF
$str &= "Name: " & $objItem.Name & @LF
$str &= "Page Faults Per Second: " & $objItem.PageFaultsPersec & @LF
$str &= "Page File Bytes: " & $objItem.PageFileBytes & @LF
$str &= "Page File Bytes Peak: " & $objItem.PageFileBytesPeak & @LF
$str &= "Percent Privileged Time: " & $objItem.PercentPrivilegedTime & @LF
$str &= "Percent Processor Time: " & $objItem.PercentProcessorTime & @LF
$str &= "Percent User Time: " & $objItem.PercentUserTime & @LF
$str &= "Pool Nonpaged Bytes: " & $objItem.PoolNonpagedBytes & @LF
$str &= "Pool Paged Bytes: " & $objItem.PoolPagedBytes & @LF
$str &= "Priority Base: " & $objItem.PriorityBase & @LF
$str &= "Private Bytes: " & $objItem.PrivateBytes & @LF
$str &= "Thread Count: " & $objItem.ThreadCount & @LF
$str &= "Virtual Bytes: " & $objItem.VirtualBytes & @LF
$str &= "Virtual Bytes Peak: " & $objItem.VirtualBytesPeak & @LF
$str &= "Working Set: " & $objItem.WorkingSet & @LF
$str &= "Working Set Peak: " & $objItem.WorkingSetPeak & @LF
ConsoleWrite( $str & @CRLF & @CRLF)
$str = ''
Sleep (2000)
$objRefresher.Refresh
Next
NextEdit:
Evtl. bringt dich ja das Auflisten der Threads/ ~status weiter.
Auflisten kannst du so:Spoiler anzeigen
[autoit]$objDictionary = ObjCreate("Scripting.Dictionary")
[/autoit] [autoit][/autoit] [autoit]
$strComputer = "."
$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colProcesses = $objWMIService.ExecQuery("Select * from Win32_Process")For $objProcess in $colProcesses
[/autoit] [autoit][/autoit] [autoit]
$objDictionary.Add ($objProcess.ProcessID, $objProcess.Name)
Next$colThreads = $objWMIService.ExecQuery ("Select * from Win32_Thread")
[/autoit] [autoit][/autoit] [autoit]For $objThread in $colThreads
[/autoit]
$intProcessID = Int($objThread.ProcessHandle)
$strProcessName = $objDictionary.Item($intProcessID)
ConsoleWrite( $strProcessName & @TAB & $objThread.ProcessHandle & _
@TAB & $objThread.Handle & @TAB & $objThread.ThreadState & @CRLF)
Next -
Ich verstehe nicht, welchen Sinn das hier haben soll:
[autoit]for $i = 2 to 5
[/autoit]
MouseMove ( $xcords[$i] , $ycords[$i]) ; <- soll die koordinaten checken gegebenenfalls das symbol verschieben
call ("checkgreen")
sleep ( 100)
Next
Das Prüfen der Koordinaten (Auffinden Symbol) erledigst du doch mit Pixelsearch. Wozu willst du da auf einer Waagerechten in 50 Pixel Abständen rumspringen, um dann doch jedesmal denselben Bereich abzusuchen ?
Du müßtest dann die Maus Pixel für Pixel bewegen und jedesmal scannen ob das Symbol auftaucht.Edit:
[autoit]
Also ich glaube, du suchst sowas:Global $x_start = 100, $x_end = 300, $y_start = 100, $y_end = 200
[/autoit]
Global $x_ziel = 400, $y_ziel = 500, $color = 0x66FF00
For $i = $x_start To $x_end
For $k = $y_start To $y_end
MouseMove($i, $k, 1)
If PixelGetColor($i, $k) = $color Then
MouseClickDrag('left', $i, $k, $x_ziel, $y_ziel, 1)
ExitLoop(2)
EndIf
Next
Next -
Zitat von Protokollbeschreibung OSCAR
Der FLAP-Header beginnt mit dem hexadezimalen Wert 2A zur Erkennung des FLAP-Pakets. Es folgt ein Channel (siehe unten), eine Sequenznummer zur Fehlererkennung und die Größe der angehängten Daten.
Darum sagte ich ja, du mußt erstmal das Protokoll nachbauen. Den Receive zerlegen in die einzelnen Protokollbestandteile und entsprechend reagieren.Edit: Anscheinend hast du noch nicht danach gesucht, hier das offengelegte OSCAR Protokoll
-
Spinne, es ist empörend, dass du uns das Teil so lange verschwiegen hast.

Nee, ernsthaft, sieht gut aus - vielleicht können wir alternativ zur ShoutBox eine ScriptBox auf der Basis einbauen
Edit:
Nachdem ich die Posts getrennt habe, hier nochmal der Link zu Gobby -
Du mußt dir das Protokoll nachbauen. Wenn du dann die Startsequenz sendest bekommst du ein Receive. Das mußt du auswerten. Dann wirst du auch die angeforderten User/PW-Sequenzen entdecken. Ist aber recht anspruchsvoll. Und vergiß nicht MD5-Checksumme, sonst bekommst du eh keine Verbindung.
Personalisiere doch einfach einen bestehenden Client. -
oder so:
[autoit]Global $start = False
[/autoit][autoit][/autoit][autoit]
HotKeySet('^1', '_start_stop')Func _start_stop()
[/autoit][autoit][/autoit][autoit]
$start = Not $start
If $start Then
AdlibEnable('_leer', 50)
Else
AdlibDisable()
EndIf
EndFuncFunc _leer()
[/autoit]
Send('{SPACE}')
EndFunc -
Eine etwas andere Möglichkeit wäre, dass du deinen Kumpel per VNC direkt auf deinen PC zugreifen lassen kannst. Dann arbeitet zwar auch immer nur einer, aber der andere ist live dabei und sieht es und kann reagieren.
Und per TeamSpeak könnt ihr euch abstimmen
-
Alles in ein großes Editfeld schreiben. Genau über das Edit (außer Scroll-Leiste) legst du ein transparentes, TopMost- PopUp-Window (als Child) .
Hier mal als Bsp.:Spoiler anzeigen
[autoit]#include<GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<WindowsConstants.au3>
#include<EditConstants.au3>
Opt("GUIOnEventMode", 1) ; OnEventMode = EIN$gui1 = GUICreate('GUI 1', 400, 400, -1, -1, Default, $GUI_WS_EX_PARENTDRAG)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, 'GUI1_close')
$e = GUICtrlCreateEdit('Die Winkelfunktionen können aber als Sekanten-'& @CRLF& _
'und Tangentenabschnitte am Einheitskreis auch'& @CRLF& 'auf größere Winkel erweitert werden. '& @CRLF& _
'Vom Schnittpunkt des einen Winkelschenkels'& @CRLF& 'mit dem Einheitskreis werden die Lote'& @CRLF& _
'auf die beiden Koordinatenachsen gefällt'& @CRLF& 'und liefern Sinus und Kosinus des Winkels.'& @CRLF& _
'Die Tangenten in den Punkten x = 1 bzw. y = 1'& @CRLF& 'schneiden den Schenkel ebenfalls und liefern dann'& @CRLF& _
'in der Projektion auf die Achsen den Tangens'& @CRLF& 'und den Kotangens. Dabei muss der Schenkel'& @CRLF& _
'gegebenenfalls rückwärts verlängert werden,'& @CRLF& 'um einen Schnittpunkt zu erzielen.'& @CRLF& _
'Auf diese Weise können jedem Winkel von 0 bis 360 Grad Werte der Winkelfunktionen zugeordnet werden,'& @CRLF& _
'die nun freilich auch negativ werden können (siehe Abbildung).'& @CRLF& _
'Die oben angegebenen Beziehungen gelten dabei weiterhin.'& @CRLF& 'In der Analysis werden Sinus und Kosinus'& @CRLF& _
'in der Regel über Potenzreihen definiert,'& @CRLF& 'wobei der Winkel im Bogenmaß angegeben wird.'& @CRLF& _
'Näheres siehe in den Artikeln Sinus und Kosinus'& @CRLF& 'sowie Tangens.', _
5, 5, 390, 200, BitOR($WS_VSCROLL, $WS_HSCROLL, $ES_READONLY), $ES_MULTILINE)
$bt = GUICtrlCreateButton('Ende', 170, 240, 60, 20)
GUICtrlSetOnEvent(-1, 'GUI1_close')
ControlFocus('','',$bt)$trans = GUICreate('',375, 180, 5, 5,$WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_MDICHILD), $gui1)
[/autoit] [autoit][/autoit] [autoit]
WinSetTrans($trans,'',10)
GUISetState(@SW_SHOW, $trans)GUISetState(@SW_SHOW, $gui1)
[/autoit] [autoit][/autoit] [autoit]While True
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc GUI1_close()
[/autoit]
Exit
EndFunc -
Das ist kein Fehler. Das Programm benachrichtigt dich, dass die zuvor geladene Bibliothek entladen wird und informiert anschließend über den Erfolg des Vorgangs. Ist sicher irgendwo in einer Debug-Funktion hinterlegt. Such mal nach der Ausgabe im Code. Kannst du also ganz entfernen oder in eine Log-Datei umleiten.
-
Für so etwas benötigt man Subversion Software (z.B. SVN-Repository). Allerdings braucht ihr dann auch eine Plattform, auf der diese im Web läuft.
Vielleicht ist die einfachere Variante ein Speicherplatz im Web. Ihr ladet die Daten jeweils und prüft mit WinMerge die Änderungen ab. Ersetzt natürlich keine Subversion.Oder: Wenn ihr immer zeitgleich daran arbeitet, kann die Repository-SW auch lokal laufen und der andere verbindet sich auf deinen PC als Server.
-
Na, wen hab ich denn zitiert

Ich denke mal, ein: ...schöne Sache, mit Drag & Drop würde es mir noch besser gefallen... wäre angemessener gewesen.