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 Hintergrundfarbe einer anderen Anwendung (https://www.delphipraxis.net/15705-hintergrundfarbe-einer-anderen-anwendung.html)

Computerbabalulu 2. Feb 2004 21:47


Hintergrundfarbe einer anderen Anwendung
 
Hallo zusammen

Wie kann ich die Hintergrundfarbe eines Fensters einer anderen Anwendung ermitteln?
Das muss doch irgenswie über GetPixelColor gehen :gruebel:
Aber da bekomme ich immer nur die Pixelfarbe vom Desktop....
Hier mal ein Beispielcode:

Delphi-Quellcode:

procedure TForm1.FormCreate(Sender: TObject);

var
   hWnd: DWORD;
   begin
      hWnd := FindWindow('TForm1','Print Vorbereitung Digitalaufträge');
     if hWnd <> 0 then GetColor
   else
      Label1.Color:= clblack
end;

procedure TForm1.GetColor;
var
  dc: hDc;
  hWnd: DWORD;
begin
  dc := GetDC(0);
  Label1.Color :=GetPixel(dc, 30, 30);
  ReleaseDC(0, dc);
end;


procedure TForm1.Timer1Timer(Sender: TObject);
var
   hWnd: DWORD;
   begin
      hWnd := FindWindow('TForm1','Print Vorbereitung Digitalaufträge');
     if hWnd <> 0 then GetColor
   else
      Label1.Color:= clblack
end;

end.
**Print Vorbereitung Digitalaufträge ist das Fenster von dem ich die Hintergrundfarbe haben möchte.
Diese Hintergrundfarbe soll die Label1.color in meinem Formular sein.


Gruß Baba

hboy 2. Feb 2004 22:19

Re: Hintergrundfarbe einer anderen Anwendung
 
du musst erst mit EnumWindows dein Fenster suchen und anstelle des getDC(0) getDC(zielhandle) machen. threads über EnumWindows gibts hier im Forum ja zu Hauf.
also:

EnumWindows machen, dann mit GetWindowText in der EnumWindowProc den Fenstertitel prüfen oder vielleicht mal FindWindow ausprobieren...

und dann mit diesem Handle den dc holen

hboy 2. Feb 2004 22:21

Re: Hintergrundfarbe einer anderen Anwendung
 
Delphi-Quellcode:
procedure TForm1.GetColor(wnd:HWND);
var
  dc: hDc;
begin
  dc := GetDC(wnd);
  Label1.Color :=GetPixel(dc, 30, 30);
  ReleaseDC(wnd, dc);
end;


procedure TForm1.Timer1Timer(Sender: TObject);
var
   hnd: DWORD;
   begin
      hnd := FindWindow('TForm1','Print Vorbereitung Digitalaufträge');
     if hnd <> 0 then GetColor(hnd);
   else
      Label1.Color:= clblack
end;

Computerbabalulu 2. Feb 2004 22:32

Re: Hintergrundfarbe einer anderen Anwendung
 
Danke euch! Werde es mal kurz testen.

Gruß Baba :thuimb:

Computerbabalulu 2. Feb 2004 22:40

Re: Hintergrundfarbe einer anderen Anwendung
 
Hey Hboy

Hast du den Code getestet :gruebel:

Funktionier bei mir irgendwie nicht!

Gruß Baba

Computerbabalulu 2. Feb 2004 22:46

Re: Hintergrundfarbe einer anderen Anwendung
 
Alles klar..... :thuimb:

Habe den Fehler gefunden:

Zitat:

procedure TForm1.Timer1Timer(Sender: TObject);
var
hnd: DWORD;
begin
hnd := FindWindow('TForm1','Print Vorbereitung Digitalaufträge');
if hnd <> 0 then GetColor(hnd);
else
Label1.Color:= clblack
end;
Delphi-Quellcode:
if hnd <> 0 then GetColor(hnd)
Gruß und Danke

Baba


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 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