Mauserkennung
-
Hi @ all

Ich habe ein Problem mit der Mauserkennung in C++ (wenn mans Mauserkennung nennen kann).
Meine Entwicklungsumgebung ist Dev-C++ 4.9.9.2
Ich habe mir die Mauskoordinaten mitPOINT pos;
GetCursorPos(&pos);ausgelesen.
Ich bräuchte jetzt noch bei 2 Sachen eure Hilfe.1. Wie bekomm ich es hin, dass wenn ich auf den Konsolenbildschirm klicke er mir diese Koordinaten gibt? bzw. allgemein das "Klick"-Ereignis (wenn das überhaupt geht in der Konsolen-Ansicht)
2. Gibts eine Funktion bei der sich die Cursor-Position nur auf den Konsolen-Bereich und nicht auf den gesamten Desktop bezieht?
Danke jetzt schon für eure Hilfe!
-
Kann mir denn niemand helfen? Wäre wirklich wichtig

-
Übe dich ein bisschen in Geduld! Es ist schon relativ spät und nicht jeder ist mehr so wach und frisch wie du (ich auch nicht). Eine Funktion gibt es wahrscheinlich nicht, aber probiere es doch mal so: Koordinaten des Fensters rausfinden, und wenn klick außerhalb ist, einfach ignorieren. Und zu erstens: Also diese Frage rutscht schon ziemlich weit in den API-Bereich rein. Mit Stanadard-C(++) ist das nicht möglich.
Mfg Ominion
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ 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.
-
In der Console kannst Du die Maus mittels "ReadConsoleInput" bzw. "PeekConsoleInput" abfragen. Siehe auch "INPUT_RECORD"
-
Danke Jochen Kalmbach für deine Hilfe.
Habs jetzt hinbekommen mit ReadConsoleInput ^^Hab doch gewusst, dass mir in diesem Forum jemand helfen kann

Thx & bye
-
Ich hätte da jetzt noch eine Frage zu der Mauserkennung:
Wenn ich die Koordinaten mit GetCursorPos(&pos) auslese dann sind das die globalen Koordinaten vom ganzen Bildschirm ... Gibts eine ähnliche Funktion die jedoch die Koordinaten nur auf das Konsolenfenster bezieht? Also wenn ich im Fenster auf (0,0) bin das er im linken, oberen Eck ist.
gReetz

-
Eine Console hat Coordinaten in Bezug auf die eingestellte Schriftart; und diese kannst Du ja via Read/PeekConsoleInput abfragen. IMHO macht es keinen Sinn die "Pixel"-Positionen zu ermitteln...
Aber Du kannst mittels GetConsoleWindow und GetWindowRect die position des Consolen-Fensters zu ermitteln und dann zurückrechnen
-
Ok dann werd ich mich wieder mal bedanken bei dir

Werds mal ausprobieren

thx
-
Also ich hab jetzt die ganze Zeit herumprobiert mit GetConsoleWindow() und GetWindowRect() aber ich bin nicht wirklich zu einem Ergebnis gekommen

Könntest du mir vielleicht ein Code-Beispiel geben?
Oder meinen Code ausbessern/erläutern.
Hier mal mein Code:#include <iostream> #include <windows.h> using namespace std; const HWND GetConsoleWindow(HWND mHwnd) { TCHAR strNewTitle[256]; TCHAR strOldTitle[256]; GetConsoleTitle(strOldTitle,256); wsprintf (strNewTitle , "%d/%d" , GetTickCount(), GetCurrentProcessId() ); SetConsoleTitle(strNewTitle); Sleep(50); mHwnd = FindWindow( NULL, strNewTitle ); SetConsoleTitle(strOldTitle); return (mHwnd); } int main(int argc, char* argv[]) { INPUT_RECORD inRec; HANDLE hcon = GetStdHandle(STD_INPUT_HANDLE); POINT maus; RECT rcWnd; HWND Hwnd; cout << GetConsoleWindow(Hwnd) << endl; GetWindowRect(Hwnd, &rcWnd); cout << rcWnd.left << endl << rcWnd.top << endl << rcWnd.right << endl << rcWnd.bottom << endl; while(1) { /*GetCursorPos(&maus); cout << "x: " << maus.x << " y: " << maus.y << endl;*/ DWORD nCnt = 0; BOOL bOK = ReadConsoleInput(hcon, &inRec, 1, &nCnt); if(bOK && nCnt == 1) { if(inRec.EventType == MOUSE_EVENT) { if(inRec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) { GetCursorPos(&maus); cout << "KLiCK" << " x: " << maus.x << " y: " << maus.y << endl; } } } } return 0; }Nun zur Funktion; Ich will mir die Koordinaten ausgeben lassen und halt zurückrechnen können, aber ehrlich gesagt weiß ich nicht so wirklich was ich mit den Daten jetzt konkret anfangen soll.
Die Ausgabe lautet:
**
0x2c0302
2009056206
2293528
8
2293728
**