Walpaper >>>-Code überarbeitet-<<<
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Code: Alles auswählen
InitDesktopPreferences()
;Your Functions
DeInitDesktopPreferences()
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
Okay ich habe jetzt verstanden das ich die 2 Funktionen extra rufen muss also erst InitDesktopPreferences() und nam meinem Belibigen befehl DeInitDesktopPreferences()DarkDragon hat geschrieben:Code: Alles auswählen
InitDesktopPreferences() ;Your Functions DeInitDesktopPreferences()
Aber ich verstehe jetzt nicht warum das gemacht werden muss... gut ich werde es machen aber warum ist das notwendig? könntest du mir das bitte erklären?
[EDIT]
Eine fehler mendung kommt nun nicht mehr aber das Hintergrundbild Wechelt dennoch nicht...
Code: Alles auswählen
InitDesktopPreferences()
SetWallpaper(Neu.s)
DeInitDesktopPreferences()
> aber warum ist das notwendig?
naja, Du rufst beispielsweise die Prozedur [c]SetWallpaper()[/c] auf. Darin befindet
sich die Sequenz [c]CallFunction(DesktopPreferences_Lib, [...][/c]. Es wird also eine
Funktion mit der Adresse aufgerufen, die in der Variable
[c]DesktopPreferences_Lib[/c] steht.
Wenn Du nun [c]InitDesktopPreferences()[/c] zuvor nicht aufrufst, dann wird die
Variable [c]DesktopPreferences_Lib[/c] nicht mit dem korrekten Wert gefüllt. Somit
geht dann auch der Aufruf [c]CallFunction()[/c] unweigerlich in die Hose.
[c]DeInitDesktopPreferences()[/c] rufst Du nach Deinen Desktop-Aktivitäten auf,
damit die DLL, die in [c]InitDesktopPreferences()[/c] geöffnet wurde, korrekt
wieder geschlossen wird. Das ist quasi eine Aufräumroutine.
Grüße ... Kiffi
naja, Du rufst beispielsweise die Prozedur [c]SetWallpaper()[/c] auf. Darin befindet
sich die Sequenz [c]CallFunction(DesktopPreferences_Lib, [...][/c]. Es wird also eine
Funktion mit der Adresse aufgerufen, die in der Variable
[c]DesktopPreferences_Lib[/c] steht.
Wenn Du nun [c]InitDesktopPreferences()[/c] zuvor nicht aufrufst, dann wird die
Variable [c]DesktopPreferences_Lib[/c] nicht mit dem korrekten Wert gefüllt. Somit
geht dann auch der Aufruf [c]CallFunction()[/c] unweigerlich in die Hose.
[c]DeInitDesktopPreferences()[/c] rufst Du nach Deinen Desktop-Aktivitäten auf,
damit die DLL, die in [c]InitDesktopPreferences()[/c] geöffnet wurde, korrekt
wieder geschlossen wird. Das ist quasi eine Aufräumroutine.
Grüße ... Kiffi
a²+b²=mc²
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
Danke kiffi 
Jetzt nur naoch das Proplem das, dass Wallpaper nicht dennoch nicht ändert...
[Edit]
So ich musste eben festestellen das das Wallpaper gesetzt wurde aber nicht korreckt.
Ich habe folgendes gemacht.
Ich habe die Eigenschaften auf dem Desktop aufgerufen und musste in der Vorschau für das Desktop Theme gesehen das kein Hintergrundbild mehr da ist.....
Als ich in der Klapkarten auf Desktop Geklickt habe ws das im Debug angezeigte bild ausgewählt. das heist das, dass Problem woanderst liegen muss.... aber wo? kann es sein das es an einer *.jpg Grafik liegt? wenn ja wie kann ich das ändern bzw. lösen
[Edit End]
[Edit 2]
Also geändert ist es nun doch -_- nur es wird auf dem Desktop nicht aktualisiert....
[Edit2 End]

Jetzt nur naoch das Proplem das, dass Wallpaper nicht dennoch nicht ändert...
[Edit]
So ich musste eben festestellen das das Wallpaper gesetzt wurde aber nicht korreckt.
Ich habe folgendes gemacht.
Ich habe die Eigenschaften auf dem Desktop aufgerufen und musste in der Vorschau für das Desktop Theme gesehen das kein Hintergrundbild mehr da ist.....
Als ich in der Klapkarten auf Desktop Geklickt habe ws das im Debug angezeigte bild ausgewählt. das heist das, dass Problem woanderst liegen muss.... aber wo? kann es sein das es an einer *.jpg Grafik liegt? wenn ja wie kann ich das ändern bzw. lösen
[Edit End]
[Edit 2]
Also geändert ist es nun doch -_- nur es wird auf dem Desktop nicht aktualisiert....
[Edit2 End]
> kann es sein das es an einer *.jpg Grafik liegt?
kann sein. Wenn Du in Deinen Einstellungen den Active-Desktop
ausgeschaltet hast, wird eine jpg-Grafik nicht angezeigt.
Aber egal, ob jpg- oder bmp-Grafik: Du änderst mit Deinem Code ja
lediglich einen Eintrag in der Registry. Danach muss auf jeden Fall noch
eine Nachricht an Windows gesendet werden, damit veranlasst wird, dass
das neu eingetragene Bild auch auf dem Desktop angezeigt wird.
Momentan weiss ich aber nicht, wie man das macht.
Mit folgender Anweisung kannst Du das Hintergrundbild mit einer Bitmap
ad hoc ändern:
Grüße ... Kiffi
kann sein. Wenn Du in Deinen Einstellungen den Active-Desktop
ausgeschaltet hast, wird eine jpg-Grafik nicht angezeigt.
Aber egal, ob jpg- oder bmp-Grafik: Du änderst mit Deinem Code ja
lediglich einen Eintrag in der Registry. Danach muss auf jeden Fall noch
eine Nachricht an Windows gesendet werden, damit veranlasst wird, dass
das neu eingetragene Bild auch auf dem Desktop angezeigt wird.
Momentan weiss ich aber nicht, wie man das macht.
Mit folgender Anweisung kannst Du das Hintergrundbild mit einer Bitmap
ad hoc ändern:
Code: Alles auswählen
SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, FileName$, #SPIF_UPDATEINIFILE)
a²+b²=mc²
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
So Hier noch mal den kompletten Code:
Hier die Desktop.pb:
Code: Alles auswählen
IncludeFile "Desktop.pb"
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
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
Debug Anzahl.l
Debug DirectoryEntryName()
Wend
z = Random(Anzahl)
;ExamineDirectory(50, IMG$, "*.jpg")
If Anzahl = 0
Anzahl = 1
EndIf
;ExamineDirectory(50, IMG$, "*.jpg")
For k = 0 To z
Neu.s = IMG$ + DirectoryEntryName()
Debug Neu.s
Debug z
Next
Debug z
Debug "Neues Bild: " + Neu.s
InitDesktopPreferences()
SetWallpaper(Neu.s)
DeInitDesktopPreferences()
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
Code: Alles auswählen
Procedure InitDesktopPreferences()
Shared DesktopPreferences_Lib
DesktopPreferences_Lib = OpenLibrary(#PB_Any, "SHLWAPI.DLL")
If DesktopPreferences_Lib = 0
MessageRequester("ERROR", "Couldn't open SHLWAPI.DLL")
EndIf
EndProcedure
Procedure SetScreensaver(Val.s)
Shared DesktopPreferences_Lib
ProcedureReturn CallFunction(DesktopPreferences_Lib, "SHSetValueA", #HKEY_CURRENT_USER, "Control Panel\Desktop", "SCRNSAVE.EXE", #REG_SZ, Val, Len(Val)+1)
EndProcedure
Procedure SetScreensaverActive(Val.l)
Shared DesktopPreferences_Lib
ProcedureReturn CallFunction(DesktopPreferences_Lib, "SHSetValueA", #HKEY_CURRENT_USER, "Control Panel\Desktop", "ScreenSaveActive", #REG_SZ, Str(Val), Len(Str(Val))+1)
EndProcedure
Procedure SetScreensaverTimeout(Val.l)
Shared DesktopPreferences_Lib
ProcedureReturn CallFunction(DesktopPreferences_Lib, "SHSetValueA", #HKEY_CURRENT_USER, "Control Panel\Desktop", "ScreenSaveTimeOut", #REG_SZ, Str(Val), Len(Str(Val))+1)
EndProcedure
Procedure SetWallpaper(Val.s)
Shared DesktopPreferences_Lib
ProcedureReturn CallFunction(DesktopPreferences_Lib, "SHSetValueA", #HKEY_CURRENT_USER, "Control Panel\Desktop", "Wallpaper", #REG_SZ, Val, Len(Val)+1)
EndProcedure
Procedure SetMouseSpeed(Val.l) ;Standard here: 2
Shared DesktopPreferences_Lib
ProcedureReturn CallFunction(DesktopPreferences_Lib, "SHSetValueA", #HKEY_CURRENT_USER, "Control Panel\Mouse", "MouseSpeed", #REG_SZ, Str(Val), Len(Str(Val))+1)
EndProcedure
Procedure SetDoubleClickSpeed(Val.l) ;Standard here: 458
Shared DesktopPreferences_Lib
ProcedureReturn CallFunction(DesktopPreferences_Lib, "SHSetValueA", #HKEY_CURRENT_USER, "Control Panel\Mouse", "DoubleClickSpeed", #REG_SZ, Str(Val), Len(Str(Val))+1)
EndProcedure
Procedure SwapMouseButtons(Val.l)
Shared DesktopPreferences_Lib
ProcedureReturn CallFunction(DesktopPreferences_Lib, "SHSetValueA", #HKEY_CURRENT_USER, "Control Panel\Mouse", "SwapMouseButtons", #REG_SZ, Str(Val), Len(Str(Val))+1)
EndProcedure
Procedure SetKeyboardSpeed(Val.l) ;Standard here: 31
Shared DesktopPreferences_Lib
ProcedureReturn CallFunction(DesktopPreferences_Lib, "SHSetValueA", #HKEY_CURRENT_USER, "Control Panel\Keyboard", "KeyboardSpeed", #REG_SZ, Str(Val), Len(Str(Val))+1)
EndProcedure
Procedure SetKeyboardDelay(Val.l) ;Standard here: 1
Shared DesktopPreferences_Lib
ProcedureReturn CallFunction(DesktopPreferences_Lib, "SHSetValueA", #HKEY_CURRENT_USER, "Control Panel\Keyboard", "KeyboardDelay", #REG_SZ, Str(Val), Len(Str(Val))+1)
EndProcedure
Procedure DeInitDesktopPreferences()
Shared DesktopPreferences_Lib
CloseLibrary(DesktopPreferences_Lib)
DesktopPreferences_Lib = 0
EndProcedure
InitDesktopPreferences()
;Your Functions
DeInitDesktopPreferences()