Mausposition in Konsole
-
Hi,
es ist ja ganz einfach die Mausposition herauszubekommen, und auch einen Mausklick zu Simulieren, aber geht es irgendwie, dass dass der Punkt x = 0, y = 0; oben links ist, wo die Konsole anfängt?
Hab das malfür Winapi gesehen, kann sein dass es auch in der Konsole so geht, aber ich kanns nicht mehr finden.Hoffe ihr habt die Frage verstanden.
Wenns des nich gibt werd ich wohl versuchen selbst sone funktion zu schreiben
mfgEdit: haha, hab nich gedacht dass das so einfach ist, falls es jemanden interessiert:
#include <windows.h> #include <iostream> #include <conio.h> using namespace std; using namespace std; int main() { RECT *rect = (RECT*)malloc(sizeof(RECT)); POINT mPos; int mPosinConsleX = mPos.x - (rect->left); int mPosinConsleY = mPos.y - (rect->top); HWND hwnd = FindWindow("ConsoleWindowClass",NULL); while(true) { GetWindowRect(hwnd,rect); cout <<"X: "<< rect->left << endl; cout <<"Y: "<< rect->top << endl; cout <<"X + Fensterbreite: "<<rect->right<<endl; cout <<"Y + Fensterhoehe: "<<rect->bottom; cout << endl; GetCursorPos(&mPos); cout << "X:" << mPos.x << " Y:" << mPos.y << endl; mPosinConsleY = mPos.y - (rect->top); mPosinConsleX = mPos.x - (rect->left); cout << "X = " << mPosinConsleX << " Y = " << mPosinConsleY << endl; Sleep(100); // verhinert die CPU auslastung system("cls"); } free(rect); getch(); return 0; }
// den code um die fensterposition zu ermitteln hab ich von online-tutorials.net übernommen!
mfg
PS: aber falls jemand doch ne funktion kennt die das selbst macht bitte trotzdem posten.
dankeEdit²:
aaaaaaaaalso...hab mit inzwischen was damit gebastelt:#include <windows.h> #include <iostream> #include <conio.h> using namespace std; using namespace std; int main() { cout << "Click @ this ----> O" << endl; INPUT_RECORD inRec; HANDLE hcon = GetStdHandle(STD_INPUT_HANDLE); RECT *rect = (RECT*)malloc(sizeof(RECT)); POINT mPos; int mPosinConsleX = mPos.x - (rect->left); int mPosinConsleY = mPos.y - (rect->top); HWND hwnd = FindWindow("ConsoleWindowClass",NULL); while(true) { GetCursorPos(&mPos); GetWindowRect(hwnd,rect); mPosinConsleY = mPos.y - (rect->top); mPosinConsleX = mPos.x - (rect->left); //cout << "X = " << mPosinConsleX << " Y = " << mPosinConsleY << endl; if (mPosinConsleX > 180 && mPosinConsleX < 190) { if (mPosinConsleY > 32 && mPosinConsleY < 41) { 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) cout << "Du hast auf den Kreis gedrueckt" << endl; } } } } //system("cls"); } getch(); return 0; }
Also wenn man auf den Kreis drückt, soll da halt dieser Satz ausgegeben werden, klappt auch wunderbar, aber wenn ich erstmal irgentwo hinklicke, und dann erst die Maus auf dem Kreis tu, wird auch der Satz ausgegeben.
Kann man Das irgenwie verhindern?
Also nur wenn tatsächlich auf den Kreis geklickt wird soll auch die Meldung kommen.
mfg