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/)
-   -   Pixel Bereich erkennen und klicken (https://www.delphipraxis.net/177777-pixel-bereich-erkennen-und-klicken.html)

gee21 26. Nov 2013 18:10

Pixel Bereich erkennen und klicken
 
Hallo alle zusammen

Ich bin schon seit einiger Zeit an einem Programm drann, das ein Mausklick auf eine bestimmte stelle machen soll.


So sollte es ablaufen

1. Screenshot wird erstellt (image1)
2. Pixel Bereich (Image2) wird auf Image 1 gesucht
3. Wenn Pixel Bereich gefunden wurde, wird die Maus in die Mitte des Pixel Bereiches gesetzt
4. Ein Linksklick auf die Position wo der Cursor momentan ist

Punkt 1-3 funktioniert eigentlich gut: Mein Problem ist der Linksklick wird irgendwie nicht angenommen oder nur ca jedes 10. Mal!?
Weiss jemand an was das liegen könnte?

Merkwürdigerweise habe ich folgendes zum Klick noch herausgefunden:
- Wenn ich den Linksklick in meinem Programm mehrmals ausführen lasse(zb 2 oder 3x klicken, dann funktioniert es öfters (leider dann eben manchmal auch 2 oder 3 mal was zu Fehlern führt...)


Kann mir jemand sagen was ich falsch mache?


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  pt: Tpoint;
  p:TPoint;
  i: Integer;
begin
image2.visible:=false;

image1.Picture.Bitmap:= GetScreenShot;

    for i := 0 to Listbox1.items.Count - 1 do begin
    image2.Picture.LoadFromFile(ExtractFilePath(Application.Exename)+'\OBJEKTE\'+listbox1.items[i]);
    p:= FindBitmap(form1.Image1.Picture.Bitmap,Image2.Picture.Bitmap) ;

        if p.X=-1=false then begin
        pt := Mouse.CursorPos;
        if pt.X = form2.Left+ p.x =false then SetCursorPos(form2.Left+ p.x +(image2.Picture.width div 2) , p.y+ form2.Top+ (image2.Picture.Height div 2));

        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

        end;


    end;

 timer2.enabled:=true;

end;

hathor 26. Nov 2013 18:27

AW: Pixel Bereich erkennen und klicken
 
Delphi-Quellcode:
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(50); //------------------------------------------------
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Application.ProcessMessages; //------------------------------

Uwe Raabe 26. Nov 2013 18:30

AW: Pixel Bereich erkennen und klicken
 
Also bitte nicht so:
Delphi-Quellcode:
if p.X=-1=false then
:evil:

Warum schreibst du nicht
Delphi-Quellcode:
if p.X <> -1 then
:thumb:

Gleiches gilt natürlich auch für die andere if-Abfrage.

gee21 26. Nov 2013 18:34

AW: Pixel Bereich erkennen und klicken
 
Ouuu.!!!


Danke :-D :thumb:

Aphton 26. Nov 2013 23:06

AW: Pixel Bereich erkennen und klicken
 
Mal so nebensächlich - verwendest du zufälligerweise diese Find Funktion?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr.

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