Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Macro-Mausclick (https://www.delphipraxis.net/100063-macro-mausclick.html)

InZiDeR 21. Sep 2007 18:42


Macro-Mausclick
 
Hallo liebe Delphi-Gemeinschaft.
Ich habe mal wieder ein kleines Problem.

Ich möchte gern wissen wie man in einem anderen Programm Tastendrücke und Mausclick vorgänge machen lasse.
Ich habe wirklich überall im Forum geguckt,entweder sind dort codes die ich nicht raffe oder dort steht nix.

Also wäre Cool würde mir jemand eine kleine Anleitung (Tutorial) auf Deutsch schicken,oder mir einfach mal Helfen über MSN.
derjenige soll mich anschreiben und ich schicke ihm meine MSN.

Danke im vorraus, InZiDeR.

DP-Maintenance 21. Sep 2007 19:00

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Multimedia" nach "Windows API / MS.NET Framework API" verschoben.

SirThornberry 21. Sep 2007 19:02

Re: Macro-Mausclick
 
ein Tutorial wäre übertrieben da es einfache Funktionsaufrufe sind. Am besten du zeigst uns den Quelltext den du gefunden hast aber nicht verstehst. Denn was bringt es alternativen zu suchen wenn du die dann auch nicht verstehst (zumal wir ja noch nichtmal wissen welche du nicht verstehst und was dann alternativen wären). Das sinnvollste wäre doch wenn wir dir das was du nicht verstehst versuchen zu erklären.

InZiDeR 21. Sep 2007 19:36

Re: Macro-Mausclick
 
Keysendung
Delphi-Quellcode:
Procedure PostKeyEx32( key: Word; Const shift: TShiftState;
                    specialkey: Boolean );
  Type
    TShiftKeyInfo = Record
                      shift: Byte;
                      vkey : Byte;
                    End;
    byteset = Set of 0..7;
  Const
    shiftkeys: Array [1..3] of TShiftKeyInfo =
      ((shift: Ord(ssCtrl); vkey: VK_CONTROL ),
      (shift: Ord(ssShift); vkey: VK_SHIFT ),
      (shift: Ord(ssAlt); vkey: VK_MENU ));
  Var
    flag: DWORD;
    bShift: ByteSet absolute shift;
    i: Integer;
  Begin
    For i := 1 To 3 Do Begin
      If shiftkeys[i].shift In bShift Then
        keybd_event( shiftkeys[i].vkey,
                    MapVirtualKey(shiftkeys[i].vkey, 0),
                    0, 0);
    End; { For }
    If specialkey Then
      flag := KEYEVENTF_EXTENDEDKEY
    Else
      flag := 0;

    keybd_event( key, MapvirtualKey( key, 0 ), flag, 0 );
    flag := flag or KEYEVENTF_KEYUP;
    keybd_event( key, MapvirtualKey( key, 0 ), flag, 0 );

    For i := 3 DownTo 1 Do Begin
      If shiftkeys[i].shift In bShift Then
        keybd_event( shiftkeys[i].vkey,
                    MapVirtualKey(shiftkeys[i].vkey, 0),
                    KEYEVENTF_KEYUP, 0);
    End; { For }
  End; { PostKeyEx32 }
Mausklick(bewegung?):
Delphi-Quellcode:
procedure MoveMouse (X,Y,Speed: Integer);
var
  wd, hh : integer;
  mm : TPoint;
begin
if Speed < 1 then Speed := 1;
wd := X;
hh := Y;

Repeat
   sleep(speed);
   Application.Processmessages;
   GetCursorPos(mm);
   with mm do
   begin
     If x > wd then
      dec(x)
     else
     If x < wd then
      inc(x);
     If y > hh then
      dec(y)
     else
     If y < hh then
      inc(y);
   end;
   SetCursorPos(mm.x,mm.y);
until (GetAsyncKeystate(Vk_Return) <> 0) or
       (GetAsyncKeystate(Vk_Escape) <> 0) or
       (GetAsyncKeystate(Vk_Space ) <> 0) or
       ((mm.X=X) and (mm.Y=Y));
end;

Bitteschön :)

SirThornberry 21. Sep 2007 22:39

Re: Macro-Mausclick
 
das untere ist einfach animierte mausbewegung. Letztendlich wird die maus so bewegt:
Delphi-Quellcode:
SetCursorPos(XPosition, YPosition);


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz