ClickChallenge
-
HalloLeute,
Ich habe neulich ein Programm geschrieben, um auf Facebook möglichst viele Mouseclicks in 10 Sekunden zu schaffen (es gibt da so eine App). Ich habe bis zu 2000 Mouseclicks geschafft. Ein Bekannter von mir, der auch programmiert und einen deutlich besseren PC hat, hat sich ebenfalls ein Programm, das den selben Zweck hatte, geschrieben. Er war besser als Ich. Mein Programm simuliert virtuelle Mausclicks. Seines tut das gleiche. Ich überlegte mir, das Ich die Systemzeit so setzen könnte, dass Ich 100 Sekunden Zeit habe. Hier erst ma der code#include <windows.h> void MouseClick(int XPos, int YPos) { SetCursorPos(XPos, YPos); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); } #define ID_BTN 4000 #define ID_TEXT 4001 HWND hWnd; HWND hButton; HWND hText; LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); int X = 850; int Y = 640; int AnzahlKlicks; int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpcmdline, int ncmdshow) { WNDCLASSEX windowclass; MSG message; const char szClassName[] = "Erstes Fenster"; windowclass.cbSize = sizeof(WNDCLASSEX); windowclass.style = CS_HREDRAW | CS_VREDRAW; windowclass.lpfnWndProc = WindowProc; windowclass.cbClsExtra = 0; windowclass.cbWndExtra = 0; windowclass.hInstance = hInst; windowclass.hIcon = LoadIcon (NULL, IDI_APPLICATION); windowclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION); windowclass.hCursor = LoadCursor (NULL, IDC_ARROW); windowclass.hbrBackground = (HBRUSH)COLOR_BACKGROUND + 1; windowclass.lpszMenuName = NULL; windowclass.lpszClassName = szClassName; if (!RegisterClassEx (&windowclass) ) return (0); hWnd = CreateWindowEx (NULL, szClassName, "Das erste Fenster!", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 50, 50, 300, 200, NULL, NULL, hInst, NULL); hButton = CreateWindow ("BUTTON", "Start", BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, 90, 40, 100, 40, hWnd, (HMENU) ID_BTN, hInst, NULL); hText = CreateWindow ("STATIC", "Druecke um zu beginnen", WS_VISIBLE | WS_CHILD, 60, 10, 300, 20, hWnd, (HMENU) ID_TEXT, hInst, NULL); if (hWnd == NULL) return (0); while (GetMessage(&message,NULL,0,0) ) { TranslateMessage(&message); DispatchMessage(&message); } return (int) (message.wParam); } LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_DESTROY: { PostQuitMessage (0); return (0); } case WM_COMMAND: { switch (wParam) { case ID_BTN: { for (int i=0;i<10000;i++) { //Hier würde Ich die Systemzeit manipulieren MouseClick(850,650); } return (0); } }break; }break; } return (DefWindowProc (hWnd,message,wParam, lParam) ); }Schaut es euch mal an. Wenn ihr Vorschläge habt schreibt sie bitte. Kommentare, dass dies unnötig ist brauche Ich nicht, das weiß Ich selber.
-
Und was ist deine Frage bzw. dein Problem? Hier wird sich keiner hinsetzen, deinen Code, der nicht einmal ordentlich formatiert ist, durchlesen und alles posten was ihm dazu einfällt.
-
Entschuldigung, dass Ich vergessen habe, das wichtigste aufzuschreiben. Ich wollte wissen, WIE ma die Systemzeit nutzen kann. Vorschläge meinte Ich im Sinn von den Befehlen, die Ich benötige, um das Programm dazu zu bringen, die Systemzeit zu manipulieren, sodass die Schleife keine Zeit braucht.
-
Wenn die Applikation kein kompletter Topfen ist, dann verwendet sie nicht die "Systemzeit" (Datum/Uhrzeit) die jeder einfach verstellen kann, sondern Timer die man nicht so einfach verstellen kann. Wie z.B. GetTickCount()/timeGetTime().
An die kommst du soweit ich weiss aus dem Usermode überhaupt nicht dran.
Also Lesen = kein Problem, Schreiben/Ändern/Anhalten = keine Chance.