Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Hintergrundbild ändern (https://www.delphipraxis.net/10786-hintergrundbild-aendern.html)

XeRo 25. Okt 2003 12:47


Hintergrundbild ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habmal ein Programm geschrieben, das mir den Hintergrund ändert.
Sucht alle Daten in einem von mir angegebenen Ordner(und Unterordner) und sucht dann nach den zufallsprinzip(durch miteinberechnen der momentanen sekunden verbessert) ein bild aus, welches als Hintergrund eingestellt wird.
Habs bei mir im Autostart...Belebt meinen PC etwas :spin2:

Luckie 25. Okt 2003 12:52

Re: Hintergrundbild ändern
 
Compiler Hinweise und Warnungen interessieren dich nicht oder? :roll:

Des weiteren als ich es compilieren wollte bekam ich das:
Zitat:

Zitat von der &%4ft§"@ Debugger
---------------------------
Debugger Exception Notification
---------------------------
Project backgr.exe raised exception class EStringListError with message 'List index out of bounds (0)'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

Das es OpenSource ist, finde ich gut. Allerdings sollte der Code dann auch vorzeigbar sein. Wenn ich so was sehe:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
//var
// i,x,y:Integer;
begin
// for x:=1 to StrToInt(copy(TimeTOStr(now),7,8)) do
// i:=Random(zaehler);
// Bildname:=ListBox1.Items.Strings[i];
// Image1.Picture.LoadFromFile(BildName);
end;
Dann packe ich mich echt an den Kopf. Zum Ausprobieren OK, aber in der Releaseversion schmeißt man sowas dann doch raus.

Ach ja: "List index out auf Bounds" kommt auch beim Start der Exe.

Eventuell eien kleine Readme, wie an es bedient wäre nicht schlecht. Und bevor es Mathias sieht und sagt: Ja das nonVCL zu machen wäre ein Klacks und dann hätte man auch nicht eine 456 KB Exe ständig geladen. Oder beendet sich dein Programm, wenn es den Hintergrund gewechselt hat? Ich sehe gerade das tut es nicht.

XeRo 25. Okt 2003 12:55

Re: Hintergrundbild ändern
 
Hast du die Pfad.txt an deien Benutzerkonto(deinen PC) angepasst?

SirThornberry 25. Okt 2003 12:56

Re: Hintergrundbild ändern
 
wird der ganze Desktop dann wieder neu gemalt oder bekommst du das irgendwie hinn ohne das der Desktop kurz flackert?? Worauf ich hinaus will. Kann man das ganze auch so machen das man aller paar zehntelsekunden das bild wechselt ohne das, das klicken auf symboloe unmöglich wird (webcamp als desktophintergrundbild)

XeRo 25. Okt 2003 12:58

Re: Hintergrundbild ändern
 
So viel ich weiss, flackert es schon kurz und auserdem braucht es eine bestimmte rechenzeit, bist das hintergrundbild eingestellt ist. :wall:

Luckie 25. Okt 2003 13:06

Re: Hintergrundbild ändern
 
Zitat:

Zitat von XeRo
Hast du die Pfad.txt an deien Benutzerkonto(deinen PC) angepasst?

Wo stand, dass man das machen muss? Etwas Bedienkomfort ist hier gefragt. OK, als ich das gemacht hatte, erschien kurz das Programm mit einem ausgewählten Bild und hat sich dann wieder verabschiedet, beendet sich also doch wieder. Nur das Hintergrundbild hat sich nicht geändert. Grund: kein ActiveDesktop. So was ressourcenfressendes ist bei mir nicht aktiviert.

Noch was: So Fehler, die auftreten, wenn keien Bilde rgefunden wurden oder wenn der Pfad nicht stimmt, sollten unbedingt abgefangen werden. gescheite fehlermeldung, mit der auch mein Vater was anfangen könnte und gut ist.

XeRo 25. Okt 2003 13:11

Re: Hintergrundbild ändern
 
Arbeite schon an einer verbesserten Version!!! :lol:

XeRo 25. Okt 2003 13:20

Re: Hintergrundbild ändern
 
Hab jetzt ne neue Version geschrieben
+Readme-Datei=Anleitung
+Vehlermeldung wenn kein Bild in angegebenen ordner
+kein unnötiger quelltext

Alexander 26. Okt 2003 08:11

Re: Hintergrundbild ändern
 
Kuck dir mal die ganzen Hinweise und Warnungen an, die beim Kompilieren angezeigt werden, das solltest du noch mal unter die Lupe nehmen ;-)
Und kann er sich nciht das Verzeichnis irgendwie automatisch suchen ?
PS: Fehlermeldung wird mit F geschrieben ;-)

XeRo 26. Okt 2003 12:35

Re: Hintergrundbild ändern
 
.)Welche Fehlermeldungen meinst du genau???
Bei mir kommen überhaupt keine!!! :wiejetzt:
ScreenShot wäre toll...
.)Das das Verzeichniss selbst gesucht wird ist schwer...woher soll das Programm wissen welche
Bilder du anzeigen willst?!

MathiasSimmack 26. Okt 2003 12:53

Re: Hintergrundbild ändern
 
  1. Fehlermeldung: "Unbekannte Bilddateierweiterung". Bei BMPs und JPEGS? Andere waren nicht im Ordner drin.
  2. Wenn du den "Eigene Bilder"-Ordner als Standard benutzen möchtest, warum suchst du nicht danach? Ab Shell-Version 5 (min. ME und 2000) gibt´s dazu die Konstante CSIDL_MYPICTURES, mit deren Hilfe du den passenden Ordner ermitteln kannst. Für ältere Versionen (so du sie denn unterstützen möchtest), könntest du mit CSIDL_PERSONAL immerhin noch den Pfad zu den "Eigenen Dateien" ermitteln.
  3. Üblich ist doch eigentlich auch, dass man im Programm den Pfad wählen kann. Wieso muss ich ´ne Textdatei bearbeiten? Das sollte dein Programm für mich übernehmen.
  4. Bei mir ist übrigens der Active-Desktop deaktiviert. Ich glaube daher nicht, dass diese Form der Prozedur "ChangeWallpaper" bei mir was bringen wird.

XeRo 26. Okt 2003 15:35

Re: Hintergrundbild ändern
 
Das Blöde ist, dass man in die Textdatei nicht nur den Pfad (C:\...\Eigene Bilder\) eingeben muss sonder (C:\...\Eigene Bilder\*.bmp bzw. C:\...\Eigene Bilder\*.jpg)..Arbeite agber gerade an einer Verbesserung

Un dass man den Pfad nicht im Programm ändern kann, liegt daran, dass das Programm nur kurtz erscheint und sich gleich wieder schließt. :lol:

XeRo 26. Okt 2003 16:11

Re: Hintergrundbild ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
SO!!!

Hier ist nun meine neue Version:
Arbeited nicht mehr mit ActiveDesktop und auch in der Textdatei muss man nicht mehr C:\...\Eigene bilder\*.bmp sonder nur mehr den Pfad (C:\...Eigene Bilder\) angeben.

Wenns weitere Fehler gibt bitte melden!!!

Alexander 26. Okt 2003 16:26

Re: Hintergrundbild ändern
 
@XeRo
Von Fehlermeldungen habe ich nicht geredet ;-). Ich habe von Hinweisen und Warnungen geredet.
Beim Compilieren erscheint doch unterm Editor-Fenser eine kleine Box.
Dort stehen (oder stande ? habe mir den Source der neuen Version noch nicht angeschaut.) jede Menge Warnungen und Hinweise bei drin.
Diese solltest du noch ausmerzen. Aber sonst :thuimb:

MathiasSimmack 27. Okt 2003 06:43

Re: Hintergrundbild ändern
 
Zitat:

Zitat von XeRo
[...] und auch in der Textdatei muss man nicht mehr C:\...\Eigene bilder\*.bmp [...] angeben.

Entschuldige bitte, aber ich muss mal zu dir "Du Pfeife!" sagen. Woher soll man denn wissen, dass man die Dateiendung in der alten Version auch angeben musste? In deiner Readme-Datei hieß es nur
Zitat:

Zitat von Readme.txt
[...] und passe sie an einen deiner Ordnern an(der natürlich zumindestens 1 Bild hat, dass deinen Suchkriterien entspricht).

Klar, wenn man weiß, dass man die gewünschte Bildendung auch angeben muss, dann erscheint keine Fehlermeldung (s. Punkt 1 meines letzten Postings). :roll:

Zitat:

Zitat von XeRo
Un dass man den Pfad nicht im Programm ändern kann, liegt daran, dass das Programm nur kurtz erscheint und sich gleich wieder schließt

Ja und? Ich habe ein Programm, das überhaupt nicht sichtbar ist sondern sich gleich in der TNA verankert. Trotzdem kannst du über das Popupmenü einen Konfig-Dialog aufrufen. Soll ich den jetzt rausnehmen und in die Liesmich schreiben, wo man in der Registry was ändern muss?
Hat also irgendwo etwas mit Komfort zu tun. Es gibt sogar Dialoge (Stichwort Hier im Forum suchenSHBrowseForFolder), mit denen man gezielt nur Verzeichnisse auswählen kann. Der User muss im Idealfall also nicht mal was tippen sondern nur ein bisschen herumklicken.

MathiasSimmack 27. Okt 2003 06:48

Re: Hintergrundbild ändern
 
Ich habe gerade eben mal deine neue Version runtergeladen, aber ich wollt´ nicht glauben, was ich da sah. Also machen wir´s auf die sarkastische Art:
Zitat:

Zitat von XeRo
Arbeited nicht mehr mit ActiveDesktop [...]

Aha. Und was machen jetzt die Leute, die den Active Desktop aktiviert haben?

Luckie 27. Okt 2003 06:52

Re: Hintergrundbild ändern
 
Ich glaube XeRo ist Linux vorbelastet. Da hackt man doch auch nur in den Config Dateien rum um irgendwas, irgendwie "zum laufen" zu bringen. :mrgreen:

MathiasSimmack 27. Okt 2003 09:22

Re: Hintergrundbild ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang eine kleine Übung, damit mir die Finger nicht einfrieren. ;)

Hat ein bisschen länger gedauert, da ich bisher noch nichts mit dem Active Desktop gemacht habe (habe ihn ja immer deaktiviert), also musste ich mir das erst mal anschauen. Kannst du als Grundlage nehmen, @XeRo. Ich habe auf die Anzeige des Bildes im Programm verzichtet. Ist ja auch logisch, ich seh´s ja dann auf dem Desktop. Und darum ist´s dann mit D5 kompiliert auch bloß 25k groß.
Für 9x und NT 4 gibt´s außerdem noch einen Sonderfall, weil die ohne Active Desktop nur Bitmaps (BMP) anzeigen können. Dazu bitte die Prozedur "InitSupportedExt" beachten.

Wenn das Programm den gewünschten Pfad nicht findet, oder wenn es keine INI-Datei gibt (wo der Pfad gespeichert ist), oder wenn man es mit dem Parameter "/n" startet, kann man den Ordner mit den nack... äh, ich meine: mit den anspruchsvollen Bildern via SHBrowseForFolder auswählen. :mrgreen:

Gruß.

XeRo 27. Okt 2003 16:30

Re: Hintergrundbild ändern
 
Zitat:

Zitat von MathiasSimmack
Entschuldige bitte, aber ich muss mal zu dir "Du Pfeife!" sagen. Woher soll man denn wissen, dass man die Dateiendung in der alten Version auch angeben musste?

nachdem in der Pfad.txt extra drinnstand (C:\...\*.bmp) dachte ich das ist eh klar...(man ist a nicht blöd :thuimb: )
Und zu dem Problem mit der Pfadeingabe im Programm: Daran arbeite ich gerade...

XeRo 28. Okt 2003 16:28

Re: Hintergrundbild ändern
 
@ Mathias
So könnte man es auch programmieren, wenn man so programmieren könnte. :cry:

Matthias L.

MathiasSimmack 28. Okt 2003 16:36

Re: Hintergrundbild ändern
 
Mach dir nix draus. Bin ja selbst nicht fehler-resistent. Die Prozedur "ChangeWallpaper" (die aus meinem Programm, meine ich!) sollte besser so aussehen:
Delphi-Quellcode:
procedure ChangeWallpaper(const szFilename: string);
var
  oleres    : HRESULT;
  actdesk   : IActiveDesktop;
  compopt   : TComponentsOpt;
  dwReserved : dword;
begin
  actdesk := CreateComObject(CLSID_ActiveDesktop,oleres) as IActiveDesktop;
  if(oleres = S_OK) then begin
    ZeroMemory(@compopt,sizeof(compopt));
    compopt.dwSize := sizeof(compopt);
    dwReserved    := 0;
    actdesk.GetDesktopItemOptions(compopt,dwReserved);

    // Active Desktop ist aktiv
    if(compopt.fActiveDesktop) then begin
      actdesk.SetWallpaper(pwidechar(widestring(szFilename)),0);
      actdesk.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);

      exit;
    end
  end;

  // im Fehlerfall, bzw. ohne Active Desktop
  SystemParametersInfo(SPI_SETDESKWALLPAPER,0,pointer(szFilename),
    SPIF_SENDWININICHANGE);
end;
;)

XeRo 28. Okt 2003 16:55

Re: Hintergrundbild ändern
 
Um das HintergrunBild auch unter "Eigenschaften von Anzeige"\"Hintergrund" anzeigen zu lassen, könnte man auch folgenden Code verwenden. Allerdings weiß ich nicht, wo und wie er funktioniert...(ist nicht von MIR).

Delphi-Quellcode:
Uses Registry;

procedure SetWallpaper(sWallPaperBMPPath: string; bTile: Boolean);
var
  reg: TRegIniFile;
begin
  reg := TRegIniFile.Create('Control Panel\Desktop');
  try
    with reg do
    begin
      WriteString('', 'Wallpaper', sWallPaperBMPPath);
      WriteString('', 'TileWallpaper', IntToStr(Ord(bTile)));
    end;
  finally
    reg.Free;
  end;
  SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);
end;

Alexander Roth 13. Sep 2004 14:30

Re: Hintergrundbild ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hab mal schnell ein Programm geschrieben zur leichten Eingabe von Ordnern, musst wenn du willst nur den namen der Datei ändern. (ist aber wohl überflüssig.)
Ach ja und @MathiasSimmack leider unterstütz dein Programm keine Unterordner. Und es unterstützt kein JPG. Habs ausprobiert.

XeRo 14. Sep 2004 21:07

Re: Hintergrundbild ändern
 
Ok...danke nochmal...

Ich bin jetzt etwas überrascht, weil ich das programm schon total verdrängt hatte...
aber dennoch danke! :thumb:

kowa 20. Jan 2006 17:16

Re: Hintergrundbild ändern
 
kann man des auch so machen, dass das Programm alle 5 Minuten das Hintergrundblid ändert?

XeRo 20. Jan 2006 18:31

Re: Hintergrundbild ändern
 
ja du kannst ja einfach einen timer benutzen...oder du schreibst selbst eine zeitabfrage... :gruebel:
oder hast du damit probleme? wenn ja nur sagen...aber bitte in nen neuen thread...

jokerfacehro 23. Jul 2006 18:27

Re: Hintergrundbild ändern
 
Zitat:

Zitat von SirThornberry
wird der ganze Desktop dann wieder neu gemalt oder bekommst du das irgendwie hinn ohne das der Desktop kurz flackert?? Worauf ich hinaus will. Kann man das ganze auch so machen das man aller paar zehntelsekunden das bild wechselt ohne das, das klicken auf symboloe unmöglich wird (webcamp als desktophintergrundbild)

um eine webcam als hintergrund einzustellen, empfehle ich einfach active desktop mit
einer html seite die das bild anzeigt

peace


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