Pixel Farbe erkennen
-
Hallo Community,
Das ist mein erster Beitrag hier,
also wenn ich irgendwelche Regeln nicht einhalte, entschuldige ich mich dafürGibt es eine Funktion mit der man von einem vorher bestimmten Pixel,
bei mir 960x566, eine vorher bestimmte Farbe, bei mir RGB 255.51.51,
erkennen und dann eine Sache machen/ausführen lassen kann?MfG
-
Kommt auf das Betriebssystem und das Pixel an (auf dem Bildschirm, in einer Bilddatei, in einem Fenster...?).
-
Ich Injectiere das in ein Fenster,
also in einem Fenster
Wie könnte das mit XP aussehen?
Oder mit Windows 7 64 bit?Ich habe eine Systemerkennung,
also das für Unterschiedliche Systeme kompatiebel zu machen wird nicht
das Problem sein
-
Für den ganzen Bildschirm oder ein Fenster geht das mit GetPixel:
http://msdn.microsoft.com/en-us/library/dd144909(v=vs.85).aspx
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Soll das etwa ein Spiele-Bot werden ?
-
Ja soll es.
-
1. Für einen Bot nimm ein leichtereres System als C/C++, z. B. AutoIt
2. Solche Themen dürfen in diesem Forum nicht behandelt werden, da ein Bot mit 100% gegen die AGB des Spiele-Betreibers verstößt.
-
Wenn das Zielfenster von einem Spiel is, wirds wohl nich so einfach. Je nachdem welche Grafik-API das Spiel verwendet, darfst du dazu OpenGL oder Direct3D hooken, um an den Backbuffer zu kommen...
Ich bezweifle allerdings sowieso, dass die Abfrage der Farbe eines einzelnen Pixels wirklich eine Lösung für irgendwas sein wird...
-
dot schrieb:
Wenn das Zielfenster von einem Spiel is, wirds wohl nich so einfach. Je nachdem welche Grafik-API das Spiel verwendet, darfst du dazu OpenGL oder Direct3D hooken, um an den Backbuffer zu kommen...
Ich bezweifle allerdings sowieso, dass die Abfrage der Farbe eines einzelnen Pixels wirklich eine Lösung für irgendwas sein wird...Ich denke schon, dass man damit was machen kann.
Außerdem, wenn er erstmal einen Pixel abfragen kann, steht ja wohl kaum was im Weg auch weitere abzufragen.Ich habe bisher noch kein Spiel gefunden, bei dem man OpenGL oder Direct3D hooken mußte um an die Pixelfarben zu kommen.
-
MisterX schrieb:
Ich habe bisher noch kein Spiel gefunden, bei dem man OpenGL oder Direct3D hooken mußte um an die Pixelfarben zu kommen.
Na dann erklär uns doch mal wie deine Lösung ohne Hooks aussieht, wär sicherlich sehr interessant für uns alle...
-
Würde mich auch interessieren ? :lol:
-
also _rein theoretisch_ müsste es möglicherweise reichen das Spiel im Fenstermodus zu starten (was zum Beispiel bei Warcraft III oder Starcraft II ganz gut geht).
-
Ich würde sagen Hooken müsste man dass nicht, obwohl die meisten Hacks/Bots für das Spiel in Direct3D gehookt sind. Die abfrage des Pixels ist für einen Triggerbot*.
PS: Mit AutoIT kann man das Game nicht Boten.
PS2: Das Spiel kann man nicht im Fenstermodus Starten.*Für dumme: Ein Triggerbot ist ein Bot der schießt, also den Trigger(Abzug) drückt und das so oft bis man nicht mehr auf den Gegner ziehlt.
-
Ah,.
Du willst schauen ob die Visierfarbe sich ändert,...Ich wette da gibts einfach n event das ausgelöst und gehookt werden kann.
Dazu nehme man einen zweiten PC und einen Multiplayermodus mit zwei spielern und scanne die app nach handles durch? Das wäre meine idee,.. ob diese gut ist weiß ich aber nicht...grüüße
-
Mein bisheriger Code:
int main() { int i = 1; bool rcolor = false; bool gcolor = false; bool bcolor = false; while (i=1){ int x=156; int y=162; HWND desktopHandle = GetDesktopWindow(); HDC dc = GetWindowDC(desktopHandle); COLORREF ref = GetPixel(dc,x,y); int r,g,b ; r = GetRValue(ref); g = GetGValue(ref); b = GetBValue(ref); if(r == 152 && g == 33 && b == 37){ mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); } } }
Doch wenn man ingaqme geht, crasht das Game.
-
HDC dc = GetWindowDC(0);