Entwickler-Ecke

Sonstiges (Delphi) - Was ist hierdran falsch? (Tastatureingabe)


mandawar - Mo 22.03.04 19:38
Titel: Was ist hierdran falsch? (Tastatureingabe)

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button2: TButton;
    Timer1: TTimer;
    Panel1: TPanel;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    Shift_Color, Shift_Color2: TColor;
  public

  end;

var
  Form1: TForm1;

const
  X = 509;
  Y = 159;

implementation

{$R *.dfm}

// button1click
//
procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;

// desktopcolor
//
function DesktopColor(const X, Y: integer): TColor;
var
  C: TCanvas;

begin
  C := TCanvas.Create;
  try
    C.Handle := GetWindowDC(GetDesktopWindow);
    Result := GetPixel(C.Handle, X, Y);
  finally
    FreeAndNil(C);
  end;
end;


// button2click
//
procedure TForm1.Button2Click(Sender: TObject);
begin
  shift_color := $00EA00;   //Farbe nach der kontrolliert werden soll
  Timer1.Enabled := True;
end;

// timer1timer
//
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Panel1.Color := DesktopColor(X, Y);
   if Panel1.Color = shift_color then begin     //wenn gescannte Farbe = der zu kontrollierenden Farbe
     SetForegroundWindow(handle);               // Senden der Taste "A" an die laufende Applikation   (hoff ich)
     keybd_event(VkKeyScan('A'), 100);
     keybd_event(VkKeyScan('A'), 1, KEYEVENTF_KEYUP, 0);
     {keybd_event(VK_NUMLOCK, 1, 0, 0);
     keybd_event(VK_NUMLOCK, 1, KEYEVENTF_KEYUP, 0);  }

   end;
end;

// button3click
//
procedure TForm1.Button3Click(Sender: TObject);   //Stopbutton
begin
  Timer1.Enabled:= False;                           //Screenkontrolle: aus
end;
{=======================================================}
end.



Das Problem liegt darin, dass er das "A" nicht an das andere Programm schickt, sondern nur das Delphi-Programm wieder in den Vordergurnd rückt, und naja... das ist nicht was ich will...
Was mach ich falsch???
Mandawar

Moderiert von user profile iconPeter Lustig: Delphi-Tags hinzugefügt


Christian S. - Mo 22.03.04 19:53

Hallo!

Bitte ändere den Titel des Topics da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Delphi-Forum.de Richtlinien:

Richtlinien hat folgendes geschrieben:

1.1 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]

Einfach oben bei deinem ersten Beitrag auf "Edit" klicken und den Titel ändern. Dank Dir!

Gruß Peter Lustig