Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
Hallöle, ich bins mal wieder.
Ich weiß, das ist ein altes Thema, und ich hab schon ein paar Sachen versucht. Es gibt aber anscheinend keine Möglichkeit, *hinter* die Symbole zu kommen.
Auch Fenster da hin zu bekommen, geht anscheinend nicht immer. Selbst mit ActiveDestop angeschaltet gibt es Probleme.
Dann geht es nur wenn ich das Fenster anzeige und ActiveDesktop danach anschalte. Wenn es vorher an war, muss es erst ausgeschaltet werden, aber das immer zu machen ist nicht schön. Obwohl ich gerade was dazu gefunden hab: TconDesktop
Hat schonmal jemand sowas gemacht oder sonstwie Erfahrungen?
Gruß,
Martok
PS: ich möchte damit Systeminformationen auf den Desktop "projizieren", falls es noch andere Lösungen gibt, wäre ich natürlich auch dankbar.
Eine primitive Lösung: (Aktive-Desktop aus, einfacher Bildhintergrund)
1. Pfad zum Bild aus der Registry auslesen
2. Bitmap in Desktopgröße erzeugen und in Desktop-Hintergrundfarbe anmalen
3. Bild entprechend dem Angaben in der Registry auf das Bitmap zeichnen
4. Deine Infos auf das Bitmap schreiben
5. Das Bitmap speichern als Hintergrund setzen
6. Desktop-Refresh auslösen
Interessant ist: ich hab auf dem Form zwei Label, ein Edit, ein Panel und einen Button. Die Label kommen an, der Rest nicht. Scheint so, als ob jedes Windows-Control Probleme macht. Seltsam...
Registriert: Di Sep 06, 2005 18:34 Beiträge: 362 Wohnort: Hamburg
Hi ...
ich hab da auch mal in die Richtung recherchiert.
Ich habe 2 Möglichkeiten gefunden:
1. Per DirectX (irgendwas dadrin, keine ahnung was genau) nen Layer erstellen auf dem man zeichnet (geht aber nicht mit OGL glaub ich)
2. Bei aktiviertem Active Desktop ein ActiveX Control als Hintergrund wählen indem man es in eine HTML seite packt und diese Seite als Hintergrundbild auswählt. In diesem ActiveX kann man dann ganz normal mit OGL zeichnen. Allerdings gibt es da probleme, da das ActiveX Control die Mausklicks abfängt, so dass man sie irgendwie manuell an den Desktop weiterleiten muss um den normalen Desktop zu imitieren.
http://www.sulaco.co.za/opengl.htm auf der Seite findest du ein Beispiel ActiveX Control mit OGL ...
Gruss
Shai
_________________ Der Mensch hat neben dem Trieb der Fortpflanzung und dem zu essen und zu trinken zwei Leidenschaften: Krach zu machen und nicht zuzuhören. (Kurt Tucholsky)
Schwabbeldiwapp, hier kommt die Grütze. (Der Quästor)
Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
Ich hab jetzt immerhin die Problemstellung so umgebogen, dass ich nur noch ein Bild draufkreiegn muss. Dazu möchte ich ein Element für den ActiveDesktop erzwugen, aber das geht nicht. Hat da einer funktionierenden Code(auch C(++/#))?
Mein Code:
Code:
procedure TfmDesktop.EmbedDesktop(X, Y, W, H:integer);
Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
The-Winner hat geschrieben:
Eine primitive Lösung: (Aktive-Desktop aus, einfacher Bildhintergrund) 1. Pfad zum Bild aus der Registry auslesen 2. Bitmap in Desktopgröße erzeugen und in Desktop-Hintergrundfarbe anmalen 3. Bild entprechend dem Angaben in der Registry auf das Bitmap zeichnen 4. Deine Infos auf das Bitmap schreiben 5. Das Bitmap speichern als Hintergrund setzen 6. Desktop-Refresh auslösen
Du wirst es nicht glauben, aber ich hab das dann jetzt doch so gemacht. Funzt super und ist auch zuverlässiger.
OT: erster Post auf neuem Server. Naja, zu so einer kranken Uhrzeit...
ich habs mir nicht genau angeschaut und weiß daher nicht, obs wirklich das ist was du willst, aber evtl hast du ja trotzdem Lust dir das anzuschaun ...
Gruß
Shai
_________________ Der Mensch hat neben dem Trieb der Fortpflanzung und dem zu essen und zu trinken zwei Leidenschaften: Krach zu machen und nicht zuzuhören. (Kurt Tucholsky)
Schwabbeldiwapp, hier kommt die Grütze. (Der Quästor)
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Müsste man nicht auch sich das DC des Desktop's holen können und darauf nen RC erstellen?
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Doch doch. Wenn du glück hast klappt das auch. Allerdings besteht der Desktop aus mehreren Fenstern. Mit der GDI funktioniert das. Allerdings mit einer kleinen Einschränkung. Die Icons und die Fenster werden auf dieses DC gezeichnet. Wenn du jetzt also auch etwas auf diesen DC zeichnest übermals du fröhlich einmal alles was da existiert. Und das ist ja nicht ganz so gewollt gewesen, oder?
Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
Lossy eX hat geschrieben:
Doch doch. Wenn du glück hast klappt das auch.
Nur, wir haben kein Glück. Ich habs grade nochmal versucht, auf das SysListview32 ein HDC und HGLRC zu kriegen, klappt aber nicht.
SetPixelFormat() in CreateRenderingContext scheitert: "Systemfehler. Code: -1073283066."
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ja Ja. Das musst du wenn dann auch händisch machen. Und dann einfach des Resultat von SetPixelFormat ignorieren. Man kann nur ein mal SetPixelFormat pro Fenster aufrufen. Und das wurde da schon gemacht.
Aber ich habe das Gefühl du hast meinen Text nicht zu Ende gelesen. Auch wenn man da einen RC drauf erstellen kann hast du immer noch das Problem, dass du über die Icons und Fenster drüber malst. Und das sieht nicht so wirklich gut aus. Speziell beim Beenden. Außerdem wäre das dann auch überhaupt wie Vollbildmodus.
Aber ich weiß jetzt auch nicht ob man darauf überhaupt einen RC erstellen kann. Hatte das schon mal ausprobiert aber ist zu lange her. Und wenn dann hätte man auch das Problem, dass man keinen Einfluss auf das Pixelformat hat. Und dann kann man das auch vergessen.
Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.