AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Maus auf ein Ereignis reagieren lassen

Ein Thema von RXR-Max · begonnen am 15. Apr 2007 · letzter Beitrag vom 18. Apr 2007
Antwort Antwort
Seite 2 von 5     12 34     Letzte » 
Benutzerbild von RXR-Max
RXR-Max

Registriert seit: 15. Apr 2007
Ort: Hamburg
48 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 11:08
Danke. Aber das weiß ich doch nicht das ich das deklarieren muss. Es gibt einiges an Funktionen die ich nicht vorher deklarieren muss oder?
Der menschliche Körper ist immernoch das beste Instrument.
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 11:13
Zitat von RXR-Max:
Danke. Aber das weiß ich doch nicht das ich das deklarieren muss. Es gibt einiges an Funktionen die ich nicht vorher deklarieren muss oder?
Bloß der Vollständigkeit halber: DesktopDC ist eine Variable

Aber ich kanns versthehen, dass du da noch nicht ganz dahinter stehst...
Aber dann musst du ja auch noch nicht solche schweren Sachen machen, oder?
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von RXR-Max
RXR-Max

Registriert seit: 15. Apr 2007
Ort: Hamburg
48 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 11:25
Übung macht den Meister. Funzt mit dem Mausklick und so aber der macht immer den Klick egal welche Farbe ich eingestellt habe und nur auf dem Desktop. Das soll aber in jeder Anwendung gehen und nicht nur auf dem Desktop. Und vor allem soll es auf Farbe reagieren.

Ich wusste nicht DesktopDC eine Variable ist
Der menschliche Körper ist immernoch das beste Instrument.
  Mit Zitat antworten Zitat
Benutzerbild von RXR-Max
RXR-Max

Registriert seit: 15. Apr 2007
Ort: Hamburg
48 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 12:25
Hat denn jetzt jemand noch eine Lösung? Egal was ich ausprobiere es funzt einfach nicht!?
Der menschliche Körper ist immernoch das beste Instrument.
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#15

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 12:47
Gib mal ein biss'l CODE!
Kann jetzt aber erst mal nicht helfen... weil: Formel 1
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 14:22
Hallo,

ich habe mal ein Beispiel angehängt, wo ein Mausklick ausgelöst wird, wenn man die Maus bewegt und sich darunter eine rote Farbe befindet. Das ganze funktioniert mit einem Hook, eventuell kannst du ja da was von gebrauchen.
Angehängte Dateien
Dateityp: zip clickfarbe_148.zip (7,4 KB, 16x aufgerufen)
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von RXR-Max
RXR-Max

Registriert seit: 15. Apr 2007
Ort: Hamburg
48 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 14:49
oha hast du den schon gehabt oder hast du dir ganze arbeit extra für mich gemacht?
Bestimmt kann ich es gebrauchen, aber ich bin ja noch neuling und dachte es gibt eine einfachere lösung weil ich bei deinem quellcode noch garnicht so durchsteige. Ih werd wohl noch ein paar jahre üben müssen.



an tonyr: ich schick gleich mal was ich jetzt moentan habe...

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  DesktopDC: hDC;

implementation

{$R *.dfm}
function GetPixelFarbe: TColor;
var
  Pos: TPoint;
begin
  GetCursorPos(Pos);
  Result := GetPixel(DesktopDC, Pos.X, Pos.Y);
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
DesktopDC := GetDC(0);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
x, y: integer;
begin
if GetPixelFarbe = clGreen then
mouse_event(MOUSEEVENTF_RIGHTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_RIGHTUP, x, y, 0, 0);
end;

end.
Und da ist er auch schon...
Der menschliche Körper ist immernoch das beste Instrument.
  Mit Zitat antworten Zitat
Benutzerbild von RXR-Max
RXR-Max

Registriert seit: 15. Apr 2007
Ort: Hamburg
48 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 14:53
Lässt sich ja auch compilieren aber was gescieht hab ich ja schon geschriben. der mausklick wird immer auf dem desktop simu obwohl er niht grün ist.


oha sorry doppelpost
Der menschliche Körper ist immernoch das beste Instrument.
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#19

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 15:39
1. Frage: Welches Interval hast du im Moment im Timer???

2. Sache: In der Timer-Prozedur hast du die Variablen X und Y...diese sind immer 0! Ich dachte, du willst den Mausklick dort ausführen, wo die Farbe ist
Da musst du entweder nochmal das
Delphi-Quellcode:
var
  Pos: TPoint;
begin
  GetCursorPos(Pos);
einfügen, oder Pos gleich global deklarieren, um auch in Timer1Timer darauf zugreifen zu können!!

3. Ein weiteres Problem ist, dass du dir ganz sicher sein musst, welche Farbe es nun sein soll! Ich hoffe du weist, dass die ganze Sache nicht funktioniert, wenn die Farbe unter der Maus auch nur eine winzige Farbnuance anders ist!!!
ClGreen ist also in dem Fall auch nicht sehr empfehlenswert! Lieber eine Farbangabe im Hexadezimalstil verwenden (Wie z.B. "FFFFFF")...
Optimal wäre natürlich ein Farbbereich... aber da bin ich überfragt, was die Realisierung angeht... [Da weis vielleicht ein anderer bescheid!?]


So... nun werd ich mir mal deinen Code ansehen Bitsetter!

PS: Juhuuuu... Alonso ist bloß Fünfter

Edit: Noch was gaaanz wichtiges!! Warum vergisst du das begin und end für den Block im OnTimer???
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
x, y: integer;
begin
//hier musst du das mit dem Getcursor noch machen ;-)
if GetPixelFarbe = clGreen then
  begin //dieses hier meine ich
  mouse_event(MOUSEEVENTF_RIGHTDOWN, x, y, 0, 0);
  mouse_event(MOUSEEVENTF_RIGHTUP, x, y, 0, 0);
  end;
end;
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von RXR-Max
RXR-Max

Registriert seit: 15. Apr 2007
Ort: Hamburg
48 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 16:40
OK ich habe jetzt eine Änderung vorgenommen, he. Und erst hat es nicht gefunzt und dann hab ich nochmal etwas geändert und es funzt. Aber leider geht das mit der Farbe nicht da hast du recht. Das heisst ich habs mal mit schwarz ausprobiert, und das muss dann wirklich auh richrig schwarz sein.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  DesktopDC: hDC;
  Pos: TPoint;
  x, y: integer;

implementation

{$R *.dfm}
function GetPixelFarbe: TColor;
begin
  GetCursorPos(Pos);
  Result := GetPixel(DesktopDC, Pos.X, Pos.Y);
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
DesktopDC := GetDC(0);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if GetPixelFarbe = clBlack then
begin
mouse_event(MOUSEEVENTF_RIGHTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_RIGHTUP, x, y, 0, 0);
end;
end;

end.
Jo sieht es gerade aus und es funzt. Aber dat mit der Farbe geht nicht.
Der menschliche Körper ist immernoch das beste Instrument.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 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