![]() |
Re: Speziellen Pfad in XP finden
Es sind max. 6 Zeilen Mehr-Aufwand. ;)
|
Re: Speziellen Pfad in XP finden
Mir ist es egal, was du machst, ich habe dich nur auf mögliche Probleme mit deinem Code hingewiesen.
|
Re: Speziellen Pfad in XP finden
Und das zurecht, Luckie!
Aber mir fällt gerade ein, dass es doch in der Open Source-Sparte ein ähnliches Programm gibt, dem es im Prinzip vollkommen egal ist, wo sich das Hintergrundbild befindet. Sprich: Mit den Pfaden brauchst du dich überhaupt nicht rumärgern. Hier ist der ![]() ![]() ![]() |
Re: Speziellen Pfad in XP finden
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Im Anhang habe ich mein Programm, das aus dem Ordner in dem es sich befindet alle Jpgs sucht, durch Zufall eine Datei auswählt und als Hintergrund einstellt. Das Programm funktioniert wahrscheinlich nur unter WIN XP und WIN 2000, braucht dafür aber keine 8-Tasten Maus. 8) |
Re: Speziellen Pfad in XP finden
Was glaubst du, was das Programm im genannten Link macht? Es sucht ebenfalls alle Bitmaps (sofern ActiceDesktop unter 9x aktiv ist auch alle JPEGs) und lädt eine. Ich persönlich habe es unter 98 und XP getestet. Meine Version, natürlich. :) Keine Probleme.
|
Re: Speziellen Pfad in XP finden
Ich wollte das Erlebnis haben dieses Problem selbst zu lösen
|
Re: Speziellen Pfad in XP finden
Hast du ja auch. Nur eben nicht perfekt und Fehler anfällig.
|
Re: Speziellen Pfad in XP finden
Zitat:
Delphi-Quellcode:
program WechselHintergrund;
uses Windows,Sysutils,Graphics,Classes,Registry,JPEG,ActiveX,ShellAPI,ShlObj; var Liste : Tstringlist; Zufall : Integer; bmp: TBitmap; mjpeg: TJpegImage; Datei: String; Function ChangeWallpaper(FileName: String; Style: Integer): Boolean; Var reg: TRegistry; wp: Array[0..$FF] Of Char; Begin reg := TRegistry.Create; Try reg.RootKey := HKEY_CURRENT_USER; If reg.OpenKey('\Control Panel\desktop\', True) Then Begin If (Style = 1) Then reg.WriteString('TileWallpaper', '1') Else reg.WriteString('TileWallpaper', '0'); reg.WriteString('WallpaperStyle', IntToStr(Style)); End; Finally reg.Free; End; StrPCopy(wp, FileName); Result := SystemParametersInfo(spi_SetDeskWallpaper, 0, @wp, spif_UpdateIniFile); End; function GetAllFiles(mask: string): TStringlist; {....} end; function GetSpecialFolder(hWindow: HWND; Folder: Integer): String; var pMalloc: IMalloc; pidl: PItemIDList; Path: PChar; begin // get IMalloc interface pointer if (SHGetMalloc(pMalloc) <> S_OK) then begin MessageBox(hWindow, 'Couldn''t get pointer to IMalloc interface.', 'SHGetMalloc(pMalloc)', 16); Exit; end; // retrieve path SHGetSpecialFolderLocation(hWindow, Folder, pidl); GetMem(Path, MAX_PATH); SHGetPathFromIDList(pidl, Path); Result := Path; FreeMem(Path); // free memory allocated by SHGetSpecialFolderLocation pMalloc.Free(pidl); end; //------------------------------------------------------------ begin randomize; Liste := Tstringlist.create; Liste := GetAllFiles(Extractfilepath(ParamStr(0))+'*.jpg'); if Liste.count = 0 then halt; Zufall := random(Liste.count); if fileexists(Liste[Zufall]) then begin try mjpeg := TJpegImage.Create; mjpeg.LoadFromFile(Liste[Zufall]); bmp:=TBitmap.Create; bmp.Assign(mjpeg); Datei := GetSpecialFolder(0,28) + '\Microsoft\Wallpaper1.bmp'; bmp.SaveToFile(Datei); ChangeWallpaper(Datei,2); Liste.Free; except end; end; end. |
Re: Speziellen Pfad in XP finden
Zitat:
Zu deinem letzten Code-Posting würde ich sagen, benutze bitte nicht den Wert "28" für den Ordner. Kein Mensch, außer dir (weil du ihn gerade brauchst), weiß aus dem Kopf, was er bedeutet. Wofür gibt es denn die Konstanten wie CSIDL_APPDATA, usw.? Das ist, mit Verlaub, der gleiche Unsinn, den ich bei Dialogboxen immer sehe. Anstelle der IMHO selbst erklärenden Konstanten wie
Delphi-Quellcode:
werden die Werte zusammengerechnet, und zwei Monate später weiß man (ohne Ausprobieren des Programms) nicht mehr, was es bedeutet.
MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz