Virtueller linker Mausklick

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Fanatic, 29. Mai 2006 .

  1. 29. Mai 2006
    Bräuchte mal eure Hilfe! Und zwar müsste ich wissen, wie ich es schaffe, dem Programm zu sagen, dass er die linke Maustaste klicken soll. Ich weiß nur wie es innerhalb einer Form geht.

    Aber wie geht es, wenn ich die Maus (virtuell) auf den Startbutton geschoben habe und das Programm das Startmenü nun aufmachen soll??


    Wäre nett, wenn einer den Quelltext posten könnte...:]



    P.S: Ich weiß, dass es einen Befehl gibt, der das Menü öffnet (>SendMessage(Application.Handle, WM_SYSCOMMAND, SC_TASKLIST, 0)<). Aber es wäre auch hilfreich bei anderen Anwendungen, wie z.b. Programme öfnnen oder so...


    Thx 4 Help


    Fanatic
     
  2. 29. Mai 2006
    ThX aber soweit bin ich acuh gekommen. Da steht, dass die Anwendungen, wie sie dort beschrieben werden, nur innerhalb einer Form wirken, also nicht auf dem ganzen Bildschirm. Und ich habe keine Form, sondern ich benutze den Windowsbilschirm...


    Fanatic
     
  3. 30. Mai 2006
    Dann meld dich in dem selbem Forum an und such da nochmal. Wenn du immernoch nichts findest frage im forum nach. Die wissen (fast) alles.
    Forum
    Noch en kleinen Tipp am Rande... in dem Forum ist der Admin ziemlich "streng", also schreib alles ganz ordentlich und ausführlich und SUCHE VORHER, sonste kriegste da schnell einen drüber

    cheers
     
  4. 1. Juni 2006
    Doch, aber sowas hat man nicht im Kopf. Frag in dem Forum nach, das ich gepostet habe oder such nochmal in den Tips und Tricks.
     
  5. 1. Juni 2006
    also was asdrexit geschreiben hat ist schon volkommen richtig

    Code:
    VOID mouse_event(
     DWORD dwFlags, // flag zum festlegen der Aktion (maus bewegen, klicken etc.)
     DWORD dx, // horizontale mausposition
     DWORD dy, // vertikale mauspositon (an der die Aktion ausgeführt werden soll)
     DWORD dwData, // Menge der Mausradbewegungen (hab ih noch nie gebraucht, am besten immer nil ^^)
     DWORD dwExtraInfo // 32 bit mit speziellen Anwendungs-Informationen (eigentlich reicht auch immer nil)
     );
    das "virtuelle" umsetzen der maus funktioniert aber leider nicht so richtig, wesshalb du in dem fall die funktion SetCoursorPos benutzen musst, um den mauszeiger tatsächlich (auch optisch) auf den startbutton zu setzen.

    Code:
    BOOL SetCursorPos(
     int X, // horizontal position 
     int Y // vertical position
     );
    das könnte so aussehen:

    Code:
    procedure ClickStartButton();
    var
     p : TWindowPlacement ;
     x, y : Integer;
     hWnd : Handle; { wenn Handle nicht geht probier mal HWND }
    begin
     hWnd := FindWindow('Shell_TrayWnd', nil);
     GetWindowPlacement(hWnd, @p);
     x := p.rcNormalPosition.left+5;
     y := p.rcNormalPosition.top+10;
     SetCursorPos(x,y);
     mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
     mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
    end;
    Hier eine Methode um das Start-Menü zu öffnen, ohne die Maus bewegen zu müssen

    Code:
     PostMessage(FindWindowEx(FindWindow('Shell_TrayWnd', nil),0, 'Button', nil), WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(1, 1));
     PostMessage(FindWindowEx(FindWindow('Shell_TrayWnd', nil),0, 'Button', nil), WM_LBUTTONUP, MK_LBUTTON, MAKELONG(1, 1));
    Sollten kleine syntaktische Fehler drinnen sein, bitte ich um Verzeihung, ich code sonst nur C++
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.