Entwickler-Ecke

Windows API - screensaver im Vorschaufenster


MathiasH - Sa 29.06.02 08:46
Titel: screensaver im Vorschaufenster
Hi
Kann man eigentlich auch einen Bildschirmschoner in das MS-vorschaufenster reinblitten :shock: (oder irgenwie anders)
und wenn ja, wie?

P.S.: wie schauen eigentlich die optionen/nornal-Parameter dabei aus?
Ich hab übrigens keine Erfahrung mit Regions, Hooks...


Tino - Sa 29.06.02 09:40

Hallo Mathias,

beim Auswerten der Paramter (/s, /c) musst du nun auf den Parameter /p reagieren. Dieser wird aufgerufen sobald Deine Anwendung sich in dem Vorschaufenster presentieren soll. Dann gibt es einen 2. Parameter der (glaube ich) das Handel der Zeichenfläche angibt. Damit Du halt weißt wohin Du zeichnen musst :-D

Gruß
TINO


mathias - Sa 29.06.02 21:02

Das würde mich auch mal interessieren wie man den DC des Fensterchen bekommt. :)


maxk - Fr 09.08.02 11:50

Hi,
ich habe das schon ein paar mal gemacht, aber fragt nicht wie...
Ich poste hier einfach mal ungetesteten Code:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var Canvas:TCanvas;      {Spätere Zeichenfläche}
    MyRect:TRect;        {Position der Zeichenfläche}
    Wnd:integer;         {Vorschaufenster}
    Width,Height:integer;{Größe der Zeichenfläche}
begin
 if ParamCount<2 then exit;
 Wnd:=StrToInt(ParamStr(2));
 while not IsWindowVisible(Wnd) do Application.ProcessMessages; {Warten bis Fenster sichtbar}
 Canvas:=TCanvas.Create;
 GetWindowRect(Wnd,MyRect);
 Width:=MyRect.Right-MyRect.Left;
 Height:=MyRect.Bottom-MyRect.Top;
 Canvas.Handle:=GetDC(Wnd);
 randomize;
 while IsWindowVisible(Wnd) do begin
  Canvas.Pen.Color:=TColor(random(255)*random(255)*random(255));
  Canvas.LineTo(random(Width),random(Height));
 end;
 Canvas.free;
end;


So sollte es eigentlich funktionieren! Mit Canvas (im 2. while) kannst du dann machen, was du willst!


MathiasH - Fr 09.08.02 13:05

Danke, werd's gleich mal ausprobieren

es gibt auch so ne GLScene Kompo die das macht, aber die hat ein entscheidendes Problem, durch die Vorschaufunktion stürtzt der Bildschirmschoner ab, und man muss auch selber was für oneInstance schreiben.

MathiasH