| Autor |
Beitrag |
Woltibaer
Hält's aus hier
Beiträge: 3
|
Verfasst: 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
      
Beiträge: 526
WinXP Home & Professional
C, C++, Delphi
|
Verfasst: 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 
Hält's aus hier
Beiträge: 3
|
Verfasst: 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
      
Beiträge: 191
|
Verfasst: 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
      
Beiträge: 49
Win Vista Business
C# (VS 2008 Professional)
|
Verfasst: 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
      
Beiträge: 191
|
Verfasst: 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

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: 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
      
Beiträge: 191
|
Verfasst: Di 13.12.05 15:18
ok, also es ist kein großes Problem, contols auf den desktop zu legen:
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:
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 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
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Di 13.12.05 15:57
zum Thema Machbarkeit : bei WINAMP kann man auch die Visualisierung Auf den Bildschirmhintergrund legen 
|
|