Autor Beitrag
Woltibaer
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 10.12.05 17:37 
Hallo zusammen,

ich habe ein kleines Problem mit meinem Desktophintegrund.
Mein Ziel ist es, einen normalen Screensaver als Desktophintergrund einzubinden.

Ich habe mittlerweile herausgefunden, dass die Screensaverdateien (.scr) normale exe-Dateien sind, die vom System einfach nur mit Parametern aufgerufen werden...

Meine Frage also:

Wie kann ich das Exeprogramm (mal etwas schwammig formuliert) als "Desktophintegrund" ausführen? Kennt jemand eine Lösung, bzw. ein Programm?

Gruß,

Daniel
DaRkFiRe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 526

WinXP Home & Professional
C, C++, Delphi
BeitragVerfasst: Sa 10.12.05 18:18 
Ich glaube nicht, dass das machbar ist, Videos sollen dank ActiveDesktop gehen, aber der Output einer EXE?

Eher nicht... Zumal der Wert für das Wallpaper in der Registry wahrscheinlich eh nur der Dateiname einen Grafikdatei sein darf.

_________________
Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
Woltibaer Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 10.12.05 21:51 
Danke für den schnellen Beitrag,

weitere Frage:

Ist es möglich, mit einem Programm ein weiteres eine Instanz über dem Background zu halten? Ich bin mir nicht sicher, aber ich glaube, über dieses tolle standart Grün von meinem Betriebssystem :) wird das gewählte BG-Bild einfach nur drüber gelegt.

Könnte man nicht ein neues Programm zwischen die Tiefe (nennen wir es z-index) des BG-Bildes und die Tiefe der Icons legen?

Oder kann mir jemand das Konzept der Programme wie z.B. Hoverdesk oder ähnliche erklären?

Gruß,

Daniel
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Sa 10.12.05 22:49 
Ich denke es wäre evtl. möglich eine Anwendung als Desktophintergrund zu verwenden. Man kann ja auf die Canvas eines Forms zeichnen, das nicht zum eigenen Programm gehört (über die Shell). Auch der Desktop ist nur ein Fenster, auch hierher müsste sich eine Ausgabe blitten lassen. Der Vlc Mediaplayer kann z.B. auch eine Video als Desktophintergrund einblenden.
k-weddige
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 49

Win Vista Business
C# (VS 2008 Professional)
BeitragVerfasst: Mo 12.12.05 18:16 
Ich bezweifle jedoch, dass ein normaler Bildschirmschoner als Hintergrund geht.
Dann müsste jedes andere Prog auch als hintergrund funktionieren.

Das Ein Prog seine Ausgabe auf den Hintergrund macht ist wieder was anderes.

Evtl. hilft das hier weiter.

k-w

_________________
Meine Programme sind perfekt, der Computer versteht sie bloß nicht.
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Mo 12.12.05 18:28 
eben das halte ich für denkbar, also dass ein Programm (ohne Benutzerinteraktion) als Hintergrund läuft. Zumindest solange man von Programmen absieht, die direkte Zugriffsmodi wie DirectX verwenden. Wär natürlich auch möglich, dass M$ da eine Sperre gesetzt hat, klingt aber interessant.
blackbirdXXX

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Mo 12.12.05 19:11 
Wäre das jetzt eine Linux Frage wäre die Antwort ganz einfach :-)

KDE: Desktopeigenschaften -> Hintergrundprogramm -> Pfad eingeben
GNOME: etwas schwieriger, da durch Script, geht aber trotzdem, Details siehe auf der X-Planet homepage ^^

Und siehe da, XPlanet läuft auch auf Windows: xplanet.sourceforge.net/windows/

also irgendwie muss es gehen :)

_________________
Klein, schwarz und ärgert Techniker? Jumper!
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Di 13.12.05 15:18 
ok, also es ist kein großes Problem, contols auf den desktop zu legen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  i : integer;
begin
  for i := ComponentCount - 1 downto 0 do
    if Components[i] IS TWinControl then begin
      (Components[i] AS TWinControl).Parent := NIL;
      (Components[i] AS TWinControl).ParentWindow := GetDesktopWindow;
    end;
end;

Auch das Kopieren von Bildern geht:
ausblenden 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:
var
  DeskWnd: HWnd;
  DeskDC: HDC;
  DeskCv: TCanvas;
  R: TRect;
  Bmp: TBitmap;
begin
  // BMP vorbereiten, z.B. Bild laden
  DeskWnd := GetDesktopWindow;
  DeskDC := GetWindowDC(DeskWnd);
  DeskCv := TCanvas.Create;
  DeskCv.Handle := DeskDC;
  R := Rect(0, 0, Screen.Width, Screen.Height);
  try
    Bmp.HandleType := bmDIB;
    Bmp.PixelFormat := pf24Bit;
    Bmp.Width := R.Right;
    Bmp.Height := R.Bottom;
    DeskCv.CopyMode := cmSrcCopy;
    DeskCv.CopyRect(R, Bmp.Canvas, R);
  finally
    DeskCv.Free;
    ReleaseDC(DeskWnd, DeskDC);
  end;
end;

Also was fehlt noch? Wir müssen von einem Programm, z.B. ein Bildschirmschoner das Hauptformular finden und irgendwie umbiegen, z.B. durch einen Hook auf alle wm_paint meldungen. dann wird statt auf das formular direkt auf den desktop gezeichnet. klingt machbar...
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Di 13.12.05 15:57 
zum Thema Machbarkeit : bei WINAMP kann man auch die Visualisierung Auf den Bildschirmhintergrund legen 8)