Walpaper >>>-Code überarbeitet-<<<

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Nimm mal

Code: Alles auswählen

InitDesktopPreferences()

;Your Functions

DeInitDesktopPreferences()
aus der include Datei heraus und setze ersteres an den anfang des Source und letzteres ans Ende
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Ich habe es doch so gemacht...

Code: Alles auswählen

InitDesktopPreferences()

;Your Functions

DeInitDesktopPreferences()
Wenn ich noch "SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, Neu.s, #SPIF_UPDATEINIFILE)" Setze dann werden zwar die User system einstellung geändert und als Hintergrund wird die Hintergrund Farbe gesetzt anstad das bild..
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Also ...
dort wo

Code: Alles auswählen

;Your Functions
steht, da muß Dein gesamter Code rein
Am besten so, wie ich eben schon mal geschrieben hab :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

okay jetzt habe ich verstanden was du meintest.....

nur es passiert genau das selbe (hatte ich schon im gefühn)
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Ich habe einiges durchsucht aber nichts gefunden :( ich bin noch am verzweifeln :cry:
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Okay ich habe meinen Code noch einmal komplet über arbeiet. Jetzt stell ich mich seit ein paar stunden die frage: "Warum wird das aktuelle Wallpaper neu gesetzt?

Hier der code:

Code: Alles auswählen

Procedure.s GetExePath()
  Prg.s = Space(#MAX_PATH)
  GetModuleFileName_(GetModuleHandle_(0), @Prg, #MAX_PATH)
  Prg = GetPathPart(Prg)
  If (FindString(prg,"\PureBasic\Compilers\", 1))
    Prg.s = Space(#MAX_PATH)
    GetCurrentDirectory_(#MAX_PATH,@Prg)
  EndIf
If Right(Prg, 1) <> "\" : Prg + "\" : EndIf
  ProcedureReturn Prg
  teste$ = Prg.s
EndProcedure
#WPSTYLE_CENTER = 0
#WPSTYLE_TILE = 1
#WPSTYLE_STRETCH = 2
#WPSTYLE_MAX = 3

#AD_APPLY_SAVE = 1
#AD_APPLY_HTMLGEN = 2
#AD_APPLY_REFRESH = 4
#AD_APPLY_FORCE = 8
#AD_APPLY_ALL = #AD_APPLY_SAVE | #AD_APPLY_HTMLGEN | #AD_APPLY_REFRESH

Structure myWALLPAPEROPT
  dwSize.l
  dwStyle.l
EndStructure

wallpaperOptions.myWALLPAPEROPT
wallpaperOptions\dwSize = SizeOf(myWALLPAPEROPT)

CoInitialize_(0)

If CoCreateInstance_(?CLSID_ActiveDesktop,0,1,?IID_IActiveDesktop,@deskObj.IActiveDesktop) <> #S_OK
  MessageRequester("Error", "Could not create object")
  quit = #True
EndIf

Global wallpaperOptions, deskObj

Procedure doWallpaper(myWallpaper$)
  ; get option selection
  ;If GetGadgetState(2)
  ;  wallpaperOptions\dwStyle = #WPSTYLE_TILE
 ; ElseIf GetGadgetState(3)
    wallpaperOptions\dwStyle = #WPSTYLE_STRETCH
 ; Else
 ;   wallpaperOptions\dwStyle = #WPSTYLE_CENTER
;  EndIf
 
  ; allocate for wStr filename
  filenameWide = AllocateMemory(Len(myWallpaper$)*2+2)
  MultiByteToWideChar_(#CP_ACP, 0, @myWallpaper$, -1, filenameWide, Len(myWallpaper$)*2+2)               
   
    If deskObj\SetWallpaper(filenameWide, 0) = #S_OK
   
      If deskObj\SetWallpaperOptions(@wallpaperOptions, 0) =#S_OK
     
        If deskObj\ApplyChanges(#AD_APPLY_SAVE) <> #S_OK
          MessageRequester("Error", "Unable to apply changes to Wallpaper.")
        EndIf
     
      EndIf
     
    EndIf
  FreeMemory(filenameWide)
 
ProcedureReturn 0
EndProcedure
If OpenFile(0, GetExePath() + "Setting.conf")
  IMG$ = ReadString()
  Random$ = ReadString()
  RandomTest$ = ReadString()
  CloseFile(0)
Else
  MessageRequester("Information","Keine Configuration voranden!",#PB_MessageRequester_Ok)
  RunProgram(Run$,"","",0)
  End
EndIf
If Random$ = RandomTest$
  ExamineDirectory(50, IMG$, "*.jpg")
  Debug NextDirectoryEntry()
  While NextDirectoryEntry() = 1
    Anzahl.l + 1
    z = Random(10)
    Debug Anzahl.l
    Debug DirectoryEntryName()
    If y <> 1
      If z = 0
        doWallpaper(DirectoryEntryName())
        y = 1
      EndIf
    EndIf
  Wend
  CreateFile(0,GetExePath() + "Setting.conf")
  WriteStringN(IMG$)
  WriteStringN(Random$)
  WriteStringN("1")
  CloseFile(0)
Else
  Debug RandomTest$
  Debug Val(RandomTest$)
  Radndom.l = Val(RandomTest$)
  Radndom.l + 1
  RandomNeu$ = Str(Radndom.l)
  Debug RandomNeu$
  CreateFile(0,GetExePath() + "Setting.conf")
  WriteStringN(IMG$)
  WriteStringN(Random$)
  WriteStringN(RandomNeu$)
  CloseFile(0)
EndIf
quit = #True
End
If deskObj
  deskObj\release()
EndIf

CoUninitialize_()

End

DataSection
CLSID_ActiveDesktop:
Data.l $75048700
Data.w $EF1F,$11D0
Data.b $98,$88,$00,$60,$97,$DE,$AC,$F9

IID_IActiveDesktop:
Data.l $F490EB00
Data.w $1240,$11D1
Data.b $98,$88,$00,$60,$97,$DE,$AC,$F9
EndDataSection
Antworten