AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Auf farbveränderungen in anderen programmen reagieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf farbveränderungen in anderen programmen reagieren

Ein Thema von ghost007 · begonnen am 29. Aug 2006 · letzter Beitrag vom 30. Aug 2006
Antwort Antwort
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#1

Re: Auf farbveränderungen in anderen programmen reagieren

  Alt 30. Aug 2006, 09:56
kleines Beispiel programm

Delphi-Quellcode:
var
  Form1: TForm1;
  FHdc:HDC;

implementation

{$R *.DFM}
(*
//funktion zum prüfen, ob fenster sichtbar
function WindowVisible(Caption:string):boolean;
var r:TRect;
    hwnd:THandle;
begin
  result:=false;
  if (Caption<>'') then
  begin
    hWnd:=FindWindow(nil,PCHAR(Caption)); //handle des fensters, 0=nicht gefunden
    if hWnd<>0 then
      if isWindowVisible(hWnd) then //winapi zum prüfen, ob sichtbar
        if GetWindowRect(hWnd,r) then //fensterposition holen
          //prüfen ob sichtbar (u.a. position in sichtbereich, muss ggf. angepasst werden)
          if (r.top>-50) and (r.Left>-50) and (r.Left<>r.Right) then result:=true;
  end;
end;

//bei relativen (fensterabhängigen) positionen, das fenster-Rechteck holen,
//und die relativen werte in Absolute umrechnen
//FRelativePosition = relativ zu einem fenster ja/nein
//FWindowTitle = Fenstertitel
//srcRect = definiertes rechteck (relative position)

function GetScreenRect(FRelativePosition:boolean;FWindowTitle:string;srcRect:TRect):TRect;
var r:TRect;
begin
  r:=srcRect; //r initialisieren
  //wenn koordinaten  relativ sein sollen (funktionsparameter) und das durch FWindowTitle
  if (FRelativePosition) and (WindowVisible(FWindowTitle)) then
  begin
    //fensterposition/größe holen
    GetWindowRect(Findwindow(nil,PCHAR(FWindowTitle)),r);
    //absolute position berechnen
    r.Left:=FselRect.Left+r.left;
    r.Top:=FselRect.Top+r.Top;
    r.right:=r.left+(FSelRect.right-FSelRect.Left);
    r.bottom:=r.top+(FSelRect.Bottom-FSelRect.Top);
  end;
  result:=r; 
end;
*)


function GetScreenPixel(x,y:integer):TColor;
begin
  //den farbwert der angegebenen position auf dem bildschirm ermitteln
  result:=GetPixel(FHdc,x,y);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //Handle des Bildschirmcanvas holen
  FHdc:=GetDC(0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var p:TPoint;
begin
  //aktuelle Cursorposition holen und in p speichern
  GetCursorPos(p);
  //meine funktion aufrufen, die cursorposition mitgeben und den
  //Rückgabewert der color-eigenschaft des forms zuweisen
  color:=GetScreenPixel(p.x,p.y);
end;
statt der cursorposition kannst du natürlich auch andere Koordinaten nehmen. (siehe auch die auskommentierte funktion zur Bestimmung der Fensterposition/Größe).

//kommentare hinzugefügt und getScreenRect etwas verändert, sowie fehlende Funktion zu Prüfen der Sichtbarkeit hinzugefügt
//ich hoffe, die kommentare helfen weiter

HTH Frank
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:01 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