Seite 2 von 3

Verfasst: 19.02.2009 22:55
von The_Dark_Zim-.-
HEHE das ist bei mir auch nicht unter system32 aber es geht trotzdem... KP wie Windows das wieder hinfuscht. Hast du ein 64bit system ?

Gruß Zim

Verfasst: 20.02.2009 00:48
von Deluxe0321
Windows konvertiert jpg,png,gif usw.. in bmp und speichert sie dann in "C:\Windows\System32" oder "C:\Dokumente und Einstellungen\UserName\Lokale Einstellungen\Anwendungsdaten\Microsoft" zumindest in XP. Ich denke bei Vista wird es genauso funktionieren. Kurzum wirst du alle Bilder auch konvertieren müssen.

Grüße

Verfasst: 20.02.2009 01:10
von Kaeru Gaman
XP macht das automatisch?
... wüßte ich noch ganich, hab ich noch nie ausprobiert...
konvertiere das immer selber... :mrgreen:

Verfasst: 20.02.2009 13:15
von The_Dark_Zim-.-
Mein Programm Confertiert auch alle bilder zu *.bmp.
Das Problem ist, dass es bei mir unter SysWOW64 (Windows XP 64x) gespeichert wird. Darum ist es nach dem Neustart auch weg. In der Regestrie steht nähmlich system32. Ich hab auch geschrieben das er es unter system32 speichern soll macht er aber nicht, keine ahnung warum.
Bei Vista (server 2008 64x) speichert er das auch woanders kp wieso er das macht. Ich denke mal das er das unter 32 Bit Systemen nicht macht.

hier der Code:

Code: Alles auswählen

Enumeration
  #Window_0
  #String_0
  #String_1
  #Button_0
  #Button_1
  #Button_4
  #Text_0
  #Text_1
  #Image_0
  #Image_1
  #Image_2
EndEnumeration

Global Icon0
Global Image0
Global RegFile$
Icon0 = CatchImage(6, ?Icon0)
Image0 = CatchImage(7, ?Image0)

DataSection
Image0:
  IncludeBinary "logo.bmp"
Icon0:
  IncludeBinary "wallpaperZIM.ico"
EndDataSection

UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()

OpenConsole()
ConsoleTitle("WallpaperChanger @ TheDarkZim-.-")
ConsoleColor(12, 0)
ConsoleCursor(10)
Print("Dieses Programm wurde von The_Dark_Zim-.- geschrieben!")
Delay(1500)
Print(".")
Delay(200)
Print(".")
Delay(200)
PrintN(".")
Delay(200)
PrintN("#################################################")
Delay(50)
PrintN(" #                                             #")
Delay(50)
PrintN("  #                                           #")
Delay(50)
PrintN("   #           /\              /\            #")
Delay(50)
PrintN("    #         //_\            /_\\          #")
Delay(50)
PrintN("     #       ///                \\\        #")
Delay(50)
PrintN("      #      ______________________       #")
Delay(50)
PrintN("       #     \                    /      #")
Delay(50)
PrintN("        #     \                  /      #")
Delay(50)
PrintN("         #     \  __        __  /      #")
Delay(50)
PrintN("          #     \/°°\      /°°\/      #")
Delay(50)
PrintN("           #     °°°°\    /°°°°      #")
Delay(50)
PrintN("            #     °°°°|  |°°°°      #")
Delay(50)
PrintN("             #     °°°|  |°°°      #")
Delay(50)
PrintN("              #     °/    \°      #")
Delay(50)
PrintN("               #     \    /      #")
Delay(50)
PrintN("                #     \  /      #")
Delay(50)
PrintN("                 #     \/      #")
Delay(50)
PrintN("                  #           #")
Delay(50)
PrintN("                   #         #")
Delay(50)
PrintN("                    #       #")
Delay(50)
PrintN("                     #     #")
Delay(50)
PrintN("                      #   #")
Delay(50)
PrintN("                       # #")
Delay(50)
PrintN("                        #")
Delay (2000)
CloseConsole()

ProcedureDLL AddHotkey(Window, fsModifiers, Keys, HotkeyID) 
  ProcedureReturn RegisterHotKey_(WindowID(Window), HotkeyID, fsModifiers, Keys)
EndProcedure

ProcedureDLL RemoveHotkey(Window, HotkeyID)
  ProcedureReturn UnregisterHotKey_(WindowID(Window), HotkeyID)
EndProcedure

Procedure.s GetSystemDirectory()
  Path.s=Space(501)
  GetSystemDirectory_(@Path,500)
  ProcedureReturn Path
EndProcedure

Procedure Regedit()
datasize.l = Len(RegFile$) 
openkey = #HKEY_CURRENT_USER 
subkey.s = "Control Panel\Desktop" 
keyset.s = "Wallpaper" 
hkey.l = 0

RegCreateKey_(OpenKey,SubKey,@hKey) 
RegSetValueEx_(hKey,keyset,0,#REG_SZ,RegFile$,datasize) 
RegCloseKey_(hKey) 
EndProcedure

Procedure refresh()
 RunProgram("rundll32.exe", "user32.dll,UpdatePerUserSystemParameters", GetSystemDirectory() , 0) ;Nur für XP ! 
;Für Vista muss das Volgende gemacht werden.
; CreateFile(0,"refresh.bat")
; WriteString(0,"RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters")
; CloseFile(0)
; RunProgram("refresh.bat" )
; Delay(500)
; DeleteFile("refresh.bat")
EndProcedure
  
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 506, 300, 310, 300, "WallpaperChanger @ TheDarkZim-.-",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_MinimizeGadget )
   If CreateStatusBar(0, WindowID(#Window_0))
    AddStatusBarField(506)
    StatusBarText(0,0, "1.Bild = Strg + F1 ; 2.Bild = Strg + F2")
   EndIf
     If CreateGadgetList(WindowID(#Window_0))
      StringGadget(#String_0, 20, 50, 100, 20, "")
      StringGadget(#String_1, 20, 130, 100, 20, "")
      ButtonGadget(#Button_0, 230, 50, 60, 20, "Search")
      ButtonGadget(#Button_1, 230, 130, 60, 20, "Search")
      ButtonGadget(#Button_4, 258, 2, 51, 20, "Minimize")
      TextGadget(#Text_0, 20, 30, 260, 20, "Bild 1:")
      TextGadget(#Text_1, 20, 110, 260, 20, "Bild 2:")
      ImageGadget(#Image_0, 52, 200, 200, 60, Image0)
      ButtonImageGadget(#Image_1, 140, 19, 80, 80,Icon0)
      ButtonImageGadget(#Image_2, 140, 101, 80, 80,Icon0)
     EndIf
  EndIf
EndProcedure

#PB_Event_Hotkey = 786

Open_Window_0()

AddSysTrayIcon(#PB_Any,WindowID(#Window_0),Icon0)
AddHotkey(0, #MOD_CONTROL, #PB_Shortcut_F1, 0)
AddHotkey(0, #MOD_CONTROL, #PB_Shortcut_F2, 1)

Repeat 

  Event = WaitWindowEvent()
  WindowID = EventWindow() 
  GadgetID = EventGadget()
  EventType = EventType()
  
  If Event = #PB_Event_Gadget
    
   If GadgetID = #String_0
      
    ElseIf GadgetID = #Button_0
    
     file$ = OpenFileRequester("Choose a picture", "", "All Images Formats|*.bmp;*.jpg;*.png;*.tif;*.tga", 0)
   If file$ > ""
     LoadImage(1,file$)
     SaveImage(1,  GetSystemDirectory()+"\Wall1.bmp",#PB_ImagePlugin_BMP)
     file1$ =  GetSystemDirectory()+"\Wall1.bmp"
     SetGadgetText(#String_0, GetFilePart(file$)) 
     LoadImage(2,file1$)
     ResizeImage(2,80,80) 
     ButtonImageGadget(#Image_1, 140, 19, 80, 80,ImageID(2))
   EndIf
   
    ElseIf GadgetID = #Button_1
    
     file$ = OpenFileRequester("Choose a picture", "", "All Images Formats|*.bmp;*.jpg;*.png;*.tif;*.tga", 0)
   If file$ > ""
     LoadImage(3,file$)
     SaveImage(3, GetSystemDirectory()+"\Wall2.bmp",#PB_ImagePlugin_BMP)
     file2$ = GetSystemDirectory()+"\Wall2.bmp"
     SetGadgetText(#String_1, GetFilePart(file$)) 
     LoadImage(4,file2$)
     ResizeImage(4,80,80) 
     ButtonImageGadget(#Image_2, 140, 101, 80, 80,ImageID(4))
   EndIf
   
    ElseIf GadgetID = #Image_1
    
RegFile$ = file1$
Regedit()
  
refresh()

    ElseIf GadgetID = #Image_2

    
RegFile$ = file2$
Regedit()
  
refresh()

    ElseIf GadgetID = #Button_4
     HideWindow(#window_0,1)
 EndIf
EndIf
  
  If EventType() = #PB_EventType_LeftClick
     min +1
  EndIf 
  
  If min = 2 
    HideWindow(#window_0,0)
    min = 0
  EndIf
  
    Select event
       Case #PB_Event_Hotkey 
         Select EventwParam() 
          Case 0 
          
RegFile$ = file1$
Regedit()
  
refresh()

          Case 1 
          
RegFile$ = file2$
Regedit()
  
refresh()

        EndSelect
    EndSelect
Until Event = #PB_Event_CloseWindow 

  RemoveHotkey(0, 0)
  RemoveHotkey(0, 1)

End

Gruß ZIM

Verfasst: 20.02.2009 17:16
von Andesdaf
Ich hab Vista 32 Bit.

So, nachdem ich GetSystemDirectory() in GetHomeDirectory()+"\AppData"
geändert hab und bei refresh geändert hab geht's jetzt endlich.

So ich hab jetzt einen ausgewählt und STRG+F1 gedrückt: keine Reaktion
Zweiten Hintergrund ausgewählt und STRG+F1 gedrückt: keine Reaktion
und immer so weiter: keine Reaktion.

Ich habs vorhin geschafft den Background zu ändern und es kommt auch immer
eine Console angehüpft, die aber gleich wieder verschwindet.

Verfasst: 20.02.2009 18:51
von The_Dark_Zim-.-
Die Console soll auch sofort verschwinden!, eigentlich wäre es mir sogar lieber sie würde garnicht erscheinen, geht aber leider bisher nur unter XP.

Änder er denn das Hintergrundbild wenn du auf die knöpe drückst ?

Gruß ZIM

Verfasst: 20.02.2009 19:13
von Andesdaf

Code: Alles auswählen

    ElseIf GadgetID = #Button_0
   
     file$ = OpenFileRequester("Choose a picture", "", "All Images Formats|*.bmp;*.jpg;*.png;*.tif;*.tga", 0)
   If file$ > ""
     LoadImage(1,file$)
     SaveImage(1,  GetHomeDirectory()+"\AppData\Wall1.bmp",#PB_ImagePlugin_BMP)
     file1$ =  GetHomeDirectory()+"\AppData\Wall1.bmp"
     SetGadgetText(#String_0, GetFilePart(file$))
     LoadImage(2,file1$)
     ResizeImage(2,80,80)
     FreeGadget(#Image_1)
     ButtonImageGadget(#Image_1, 140, 19, 80, 80,ImageID(2))
   EndIf
   
    ElseIf GadgetID = #Button_1
   
     file$ = OpenFileRequester("Choose a picture", "", "All Images Formats|*.bmp;*.jpg;*.png;*.tif;*.tga", 0)
   If file$ > ""
     LoadImage(3,file$)
     SaveImage(3, GetHomeDirectory()+"\AppData\Wall2.bmp",#PB_ImagePlugin_BMP)
     file2$ = GetHomeDirectory()+"\AppData\Wall2.bmp"
     SetGadgetText(#String_1, GetFilePart(file$))
     LoadImage(4,file2$)
     ResizeImage(4,80,80)
     FreeGadget(#Image_2)
     ButtonImageGadget(#Image_2, 140, 101, 80, 80,ImageID(4))
   EndIf
Wenn du wieder ein ImageGadget über das andere legst, wirds mist.
Deswegen vorher FreeGadget.

Wenn du dann zwei Bilder auswählst wirds immer klappen.

Verfasst: 21.02.2009 18:05
von The_Dark_Zim-.-
@ Andesdaf
Danke, auch wenn das nie probleme bei mir gemacht hatte.

Kann man nicht rausfinden welches System auf dem PC läuft auf dem das Program ausgeführt wird ? Dann könnte man ja für jedes System ein eigenden Pfard schreiben.

Verfasst: 21.02.2009 18:13
von Kaeru Gaman
> Kann man nicht rausfinden welches System auf dem PC läuft auf dem das Program ausgeführt wird ?

toch latürnich...

http://www.purebasic.com/german/documen ... rsion.html

Verfasst: 21.02.2009 18:18
von Andesdaf

Code: Alles auswählen

If OSVersion() = #PB_OS_Windows_XP
 ; mache dies
Else
 ; mache das
Endif
Die Hilfe hilft.

>Danke, auch wenn das nie probleme bei mir gemacht hatte.
Naja bei mir liefs dann besser :)