Wallpaper Intelligent

Es gäbe ja noch die Möglichkeit sich mit HTML etc was zu basteln. Windows bietet ja die Möglichkeit HTML als Hintergrund laufen zu lassen. Da einfach ne Flaschanimation rein und fertig.

Gruß
Snatch
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
wirklich interessant würde es werden wenn es im winter dann auch mit schnee wär :)


als verbesserungsvorschlag für das prog würde ich sagen:
versuch doch ne art "fade" reinzubringen. so das die einzelnen bilder ineinander übergehen.
so.. irgendwie alle 5minuten einen schritt weiter.
müsste eigentlich möglich sein sowas zu programmieren
 
Update:

Also optisch hat sich nichts mehr geändert...

lediglich am Code hab ich was geschraubt, dass mit dem Datei auswählen klappt nun... aber was leider bis jetzt noch net klappt ist folgendes:

bspw. is das Bild, was man für 14:00 Uhr benutzen will auf nem USB-Stick... wenn der net dran is um 14 Uhr, dann würds wohl ne Fehlermeldung geben... deswegen war von anfang an mein Gedanke, die ausgewählten Bilder in ein Unterverzeichnis der Anwendung zu kopieren...

nur eben das Kopieren will noch net so ganz, wie ich will... :mad:

eine andere, aber eher kleine Sache ist die, dass ich zwar des Progamm in den Autostart rein bekomme, aber net weiss, wie ichs per Code wieda rausbekommen soll, wenns jm. net mehr drin haben will...

naja, ich denke, das wird sich mit der Zeit noch geben...

vorab ist zu sagen, dass ich jetzt am Weekend leider weniger Zeit habe, was dran zu tun, weil bei uns Stadtfest ist und wir da von der Feuerwehr aus helfen...

wünsch allen ein sonniges, warmes und schönes Weekend :banana:

so long...
 
bspw. is das Bild, was man für 14:00 Uhr benutzen will auf nem USB-Stick... wenn der net dran is um 14 Uhr, dann würds wohl ne Fehlermeldung geben... deswegen war von anfang an mein Gedanke, die ausgewählten Bilder in ein Unterverzeichnis der Anwendung zu kopieren...

nur eben das Kopieren will noch net so ganz, wie ich will...

ich bin kein programmierer, kenn mich mit deinem system also wenig aus, aber könntest du nicht ne kleine *.bat datei schreiben die einen ordner anlegt und alle dateien dort reinkopiert die du in der auswahlliste festgesetzt hast?

du könntest ja mit umgebungsvariablen arbeiten.
 
Frankenheimer schrieb:
ich bin kein programmierer, kenn mich mit deinem system also wenig aus, aber könntest du nicht ne kleine *.bat datei schreiben die einen ordner anlegt und alle dateien dort reinkopiert die du in der auswahlliste festgesetzt hast?

du könntest ja mit umgebungsvariablen arbeiten.

Wäre ne Idee... :eek:

Schau ich dann, sobald ich Zeit habe... ;)
 
Glühwürmchen schrieb:
Also optisch hat sich nichts mehr geändert...

lediglich am Code hab ich was geschraubt, dass mit dem Datei auswählen klappt nun... aber was leider bis jetzt noch net klappt ist folgendes:

bspw. is das Bild, was man für 14:00 Uhr benutzen will auf nem USB-Stick... wenn der net dran is um 14 Uhr, dann würds wohl ne Fehlermeldung geben... deswegen war von anfang an mein Gedanke, die ausgewählten Bilder in ein Unterverzeichnis der Anwendung zu kopieren...

nur eben das Kopieren will noch net so ganz, wie ich will... :mad:

eine andere, aber eher kleine Sache ist die, dass ich zwar des Progamm in den Autostart rein bekomme, aber net weiss, wie ichs per Code wieda rausbekommen soll, wenns jm. net mehr drin haben will...

naja, ich denke, das wird sich mit der Zeit noch geben...

vorab ist zu sagen, dass ich jetzt am Weekend leider weniger Zeit habe, was dran zu tun, weil bei uns Stadtfest ist und wir da von der Feuerwehr aus helfen...

wünsch allen ein sonniges, warmes und schönes Weekend :banana:

so long...

na dann mal viel spass bei deinem stadtfest ..

und komm es drängt dich keiner , lass dir zeit !

mfg tom1tom
 
Zuletzt bearbeitet:
Zwischenstand 2

Hallo Leute!

Also damit nicht hier der Eindruck erweckt wird, dass sich das kleine Projekt totgelaufen hätte, will ich nochmal einen kleinen Zwischenstand bekannt geben.

Stand_2a.jpg
Hier sieht man den Dialog zum auswählen der Bilder, sowie ganz oben in der Zeile sieht man auch den kompletten Pfand & Dateinamen, falls man sich bspw. verklickt hat un nicht das Bild "3d_engel" sondern gkA... "3d_teufel" wollte...

Stand_2b.jpg
Die Anwendung muss ja die ganze Zeit laufen, damit das mit dem stündlichen Wechsel klappt... also klickt man auf "Ausblenden" und sieht die Anwendung nicht mehr... doch wie dann wieder drauf zugreifen (um bspw. Bilder zu ändern) !? Deshalb gibt es in der Taskleiste ein kleines animiertes Icon, auf das man Doppelklicken kann und schon sieht man die Anwendung wieder...

Stand_2c.jpg
Über einen Klick auf den Button "Speichern" wird eine Batch-Datei angelegt (Kopieren.bat), welche den Befehl enthält, dass die Bild-Dateien von ihrem Ursprungsort in das Unterverzeichnis "Bilder" der Anwendung kopiert werden (weshalb das ganze steht in nem Entry weiter vorne).
Doch eben hier is der aktuelle Haken der Geschichte... aus mir unerklärlichen Gründen kopiert der des einfach nicht... :( und ich hab keine Ahnung warum... es scheint aber an dem Code in der Batch-Datei zu liegen...
 

Anhänge

  • Stand_2a.jpg
    Stand_2a.jpg
    67,9 KB · Aufrufe: 223
  • Stand_2b.jpg
    Stand_2b.jpg
    18,4 KB · Aufrufe: 182
  • Stand_2c.jpg
    Stand_2c.jpg
    36 KB · Aufrufe: 178
Also die Batch dürfte wegen den Blanks in den Pfadnamen nicht funktionieren. probier mal Verzeichnisse ohne Blanks zu verwenden...

Edit: Hab's gerade bei mir ausprobiert. Der nimmt keine Blanks im Dateipfad an. Nimm mal Verzeichnisse ohne Blanks und probier's nochmal... :bigok:
 
Zuletzt bearbeitet:
Stay_Tuned schrieb:
Also die Batch dürfte wegen den Blanks in den Pfadnamen nicht funktionieren. probier mal Verzeichnisse ohne Blanks zu verwenden...

Edit: Hab's gerade bei mir ausprobiert. Der nimmt keine Blanks im Dateipfad an. Nimm mal Verzeichnisse ohne Blanks und probier's nochmal... :bigok:


Jeder Windows-User ab Win2k hat doch den Ordner "Eigene_Dateien" bzw. "Eigene_Bilder" ... die Unterstriche zeigen die Blanks (=Leerzeichen) an... dass würde ja bedeuten, dass kein Win-User in der Lage sein wird unter der CMD aus diesen Ordnern was zu kopieren... schon n bissel blöd gem8 von MS :-[ :eek:
 
Doch, das geht auch:

Copy "C:\Dokumente und Einstellungen\user\Eigene Bilder\file.txt" D:\

Dann musst du einfach Anführungsstriche um den Pfad rummachen ;)
 
Stay_Tuned schrieb:
Doch, das geht auch:

Copy "C:\Dokumente und Einstellungen\user\Eigene Bilder\file.txt" D:\

Dann musst du einfach Anführungsstriche um den Pfad rummachen ;)


Wuheee... danke... :bigok:

*gleich mal am Weiterbasteln bin*

€dit:

hmm... wohl zufrühgefreut... ich kann schlecht ein Anführungszeichen da in den Code verweden...
so sieht der Code aus, mit dem der Pfad der Textzeile ausgelesen wird, und der die Zeile für die Batch-Datei erstellt
Befehlt COPY + Pfad aus Textzeile + Zielpfad

If pic_pfad_txt_00.Text = "" Then
txt_batch.Text = " " + vbCrLf
Else: txt_batch.Text = "copy " + pic_pfad_txt_00.Text + " " + App.Path & "\Bilder" + vbCrLf
End If
Aber da gibts doch sicher auch 'n Code für das Zeichen so wie "vbCrLf" für Zeilenumbruch steht...

€dit 2:

habs gefunden: das Anführungszeichen ist ein Chr(34)
und nun gehts...
 
Zuletzt bearbeitet:
Schön, sehr gut. Beobachte den Thread auch schon von Anfang an und freue mich schon voll auf's Ergebnis. Falls du nochmal Probleme hast, helfe gerne...
 
Moin Leute!

Also ich habe die aktuelle Version mal als Setup zusammengepackt.

Da es zu groß ist, um es hier hochzuladen, habe ichs auf meinen FTP geladen, dort könnt ihr es euch mal runterladen:

http://www.wayne.at/DOWNLOAD/Setup_Wallpaper_Changer.zip

1) Runterladen
2) Entzippen
3) Setup ausführen

S/N oder ähnliches wird nicht benötigt.

==========================================================

Aber einwas funzt leider noch net ganz.
Und zwar werden die Bilder ja in den Unterordern "\Bilder" kopiert. Aber wie soll ich se nun umbennen. Klar per Batch mit dem "ren" / "rename" befehl... aber wie den Dateinamen mit einbauen!?... das einzige, wo ich den Dateinamen habe ist aus dem jeweiligen Textfeld, wo man das Bild auswählt. Aber dort ist auch der ganze Pfad mit drin... was ich bräuchte wäre was, was das ganze von bpsw. "C:\Dokumente und Einstellungen\...\Eigene Bilder\Herbst05.jpg" auf ein einfaches "Herbst05.jpg" reduziert... weil dann könnt ichs einfach umbennen mit "rename Herbst05.jpg Bild_0000.jpg"

Weiß da jemand wie man das "beheben" kann!?
Oder würde das gehen, wenn man folgendes macht:
Code:
rename "C:\Dokumente und Einstellungen\...\Eigene Bilder\Herbst05.jpg" "C:\Dokumente und Einstellungen\...\Eigene Bilder\Bild_0000.jpg"
copy "C:\Dokumente und Einstellungen\...\Eigene Bilder\Bild_0000.jpg" "[Verzeichnis der Anwendung]\Bilder"

Naja... probiert das Prog erstmal aus... viel Spaß!

==========================================================
Ankündigung:
von 16. - 23.8. bin ich im Urlaub, d.h. ich werde in der Zeit eventuell nichts am Programm schaffen können (man muss sich ja auch irgendwann ausruhen :haha: )... und ob ich hier was posten kann weiss ich net, da ich dort wahrscheints kein Internet habe :shake: :(
 
Zuletzt bearbeitet:
So, hab's gerade ausprobiert und sieht ja schon sehr gut aus...

Ein paar Änderungsvorschläge habe ich noch: Das Ding hat sich bei mir direkt in den Programme-Ordner gelegt. :-[ Wäre cool, wenn er da noch einen Unterordner erstellen und sich da reinkopieren würde.

Außerdem vermisse ich einen Uninstaller. Kommt der noch oder hast du gar keinen geplant?

Dann funktioniert das Ding halt noch nicht wirklich, ich denke aber mal das ist eben aus dem Grund, den du oben beschrieben hast, oder?

So, dann mal zu dem Problem. Die Frage, die ich mir stelle, ist, wieso willst du die Dateien überhaupt umbenennen? Kommt dein Programm nicht damit klar wenn die nicht nach einem bestimmten Format (BildXXX.jpg) benannt sind oder wo ist das Problem?

Mein Problem ist einfach, dass ich von VisualBasic nicht wirklich viel Ahnung habe. Aber es müsste doch bestimmt eine Funktion geben, mit der du nur den Dateiname wo rausziehen kannst. Entweder indem du sagst, alles bis zum letzten Backslash (\) ignorieren und nur das danach nehmen oder indem er sogar selbst so intelligent ist und erkennt bis wohin die Pfadangaben gehen und nur den Dateiname nimmt. Ich müsste mich da erstmal selbst einlesen und mich schlau machen. Kann ich aber frühestens im Laufe der nächsten Woche...

Was ich viel cooler fände, wenn du das Prog bis auf diesen Kopierkram mal komplett fertig machst und uns sagst, was wir da wo hinkopieren und umbenennen müssen. Ich würde nämlich echt mal gerne die Funktion von dem Teil sehen.... :d

Edit: Hab deinen hinzugefügten Code erst jetzt gesehen. Das müsste selbstverständlich auch funktionieren, allerdings benennt er dann die Dateien halt schon dort um, wo man sie herholt. Und ich weiß nicht ob die Leute so begeistert davon sind, wenn man ihnen die Bilddateien auf ihrem USB-Stick umbenennt... :-[

Edit2: Oh mann, da hätte ich ja gleich drauf kommen können. Schau dir mal im cmd den "move" Befehl an:

C:\Dokumente und Einstellungen\Stefan>move /?
Verschiebt Dateien und benennt Dateien und Verzeichnisse um.

Um eine oder mehrere Dateien zu verschieben:
MOVE [/Y| /-Y] [Laufwerk:][Pfad]Datei1[,...] Ziel

Um ein Verzeichnis umzubenennen:
MOVE [/Y| /-Y] [Laufwerk:][Pfad]Verz1 Verz2

[Laufwerk:][Pfad]Datei1 Bezeichnet den Pfad und den Namen der zu
verschiebenden Datei(en).
Ziel Bezeichnet den Zielort für die Datei. Das Ziel
kann ein Laufwerkbuchstabe mit Doppelpunkt, ein
Verzeichnisname oder eine Kombination beider sein.
Wenn Sie nur eine einzelne Datei verschieben,
können Sie auch einen Dateinamen angeben, um die
Datei beim Verschieben umzubenennen.
[Laufwerk:][Pfad]Verz1 Bezeichnet das umzubenennende Verzeichnis.
Verz2 Bezeichnet den neuen Namen des Verzeichnisses.
/Y Unterdrückt die Bestätigungsaufforderung zum
Überschreiben bestehender Zieldateien.
/-Y Fordert vor dem Überschreiben bestehender
Zieldateien zur Bestätigung auf.
Die Option /Y ist in der COPYCMD-Umgebungsvariablen eventuell voreingestellt.
Dies kann durch die Option /-Y außer Kraft gesetzt werden. Standardmäßig
müssen Sie das Überschreiben von Dateien bestätigen, es sei denn der MOVE-
Befehl wird von einem Batchprogramm aus aufgerufen.

Also perfekt für deine Zwecke. Kannste gleich beim Kopieren umbenennen...
 
Zuletzt bearbeitet:
Also die Hauptfunktion, dass er zur jeden vollen Stunde ein andres HIntergrundbild setzt, sofern dieses angegeben wurde, sollte funktionieren... wähl halt mal für 12 Uhr eins aus un geh dann auf "Ausblenden"... un dann warte mal bis 12 Uhr ... ich hab das noch nicht testen können.
Aber da nimmt er das Bild halt vom Original-Ort... aber was machste, wenn du das bspw. von nem USB-Stick auswählst und den dann entfernst !?... deswegen war ja mein Gedanke, dass die ausgewählten Bilder einfach im Unterordern "\Bilder" als "Bild_Uhrzeit.jpg" (Bild_0000.jpg / Bild_0100.jpg) gespeichert werden...

Was das Uninstall betrifft:
Ich habe das Setup nun verändert, und es wird beim Install eine Verknüpfung im Startmenü angelegt, dort sollte das Uninstall nun auch verfügbar sein. Ansonsten ist es auf jeden Fall über Systemsteuerung>Software möglich... oder über die Systemwiederherstellung, da beim Setup ein Wiederherstellungspunkt gesetzt wird (sofern der User das nicht abgeschalten hat)...

€dit:
Habe gerade deinen Edit gelesen... wooow... danke... werd ich dann heut nachmittag gleich mal ausprobieren...

€dit 2:
Ich hab nochmal über den MOVE-Befehl nachgedacht... der VERSCHIEBT ja die Datei... d.h. sie wäre ja dann net mehr im Original-Verzeichnis... :-/ würd den Leuten sicher auch net so subba gefallen...

€dit 3:
ich bin so DOOOOOF ... :eek:
was mit dem MOVE-Befehl geht, geht auch mit dem COPY-Befehl...

drum lautet der Code jetzt ganz simple und einfach:
Code:
copy "D:\Eigene Bilder\Beispielbilder\3D_Engel.jpg" "D:\000 Wayne\prog\Kopie von W@llpaper-Changer\Bilder\Bild_0000.jpg"
 
Zuletzt bearbeitet:
Ok, habe es jetzt gerade mal probiert und bei mir hat sich um 12 kein Bild geändert...

Ich bin eher auf Probleme gestoßen. Das Ding hat mein jetziges Hintergrundbild rausgenommen und ein Bild namens "Wallpaper" reingemacht, das aber leer war. Außerdem, wenn ich in dem Tool den Haken bei "Bilder festlegen" rausmache, dann flackern alle Desktopsymbole rum und die CPU-Auslastung springt auf nahezu 100%...

Außerdem habe ich immernoch das Problem, dass er die Dateien direkt unter C:\Programme kopiert und keinen Unterordner dort erstellt... :(

Edit: Wie funktioniert eigentlich die Autostart-Funktion? Bei mir ist weder in der Registry im Run-Verzeichnis noch im Autostart was zu dem Teil drin...
 
Zuletzt bearbeitet:
Stay_Tuned schrieb:
Ok, habe es jetzt gerade mal probiert und bei mir hat sich um 12 kein Bild geändert...
Hmmm... schade... :( dann muss ich mal schauen, wie ich das hinbekomme...

Stay_Tuned schrieb:
Ich bin eher auf Probleme gestoßen. Das Ding hat mein jetziges Hintergrundbild rausgenommen und ein Bild namens "Wallpaper" reingemacht, das aber leer war. Außerdem, wenn ich in dem Tool den Haken bei "Bilder festlegen" rausmache, dann flackern alle Desktopsymbole rum und die CPU-Auslastung springt auf nahezu 100%...
Das Hintergrundbild "Wallpaper" ist ein nichtvorhandenes, dadurch wird der Hintergrund >Standard-Blau< ... das Flackern kam dadurch, dass wenn der Haken raus ist, der Timer dann sekündlich (?gibts das Wort überhaupt?) eben dieses "Wallpaper.jpg" gesetzt hat. Ich hab diesen Eintrag einfach rausgenommen. Dadurch kommts jetzt auch zu keiner erhöhte CPU-Auslastung mehr.

Stay_Tuned schrieb:
Außerdem habe ich immernoch das Problem, dass er die Dateien direkt unter C:\Programme kopiert und keinen Unterordner dort erstellt... :(
Ja ich benutz dafür die unregistrierte Version von Z-Up-Maker ... muss mich aber selbst erst durch dieses kleine Prog klicken... mal schauen, ob ich das hinbekomme, dass es beim Installationspfad automatisch "\Wallpaper Changer" mit anhängt.

Stay_Tuned schrieb:
Edit: Wie funktioniert eigentlich die Autostart-Funktion? Bei mir ist weder in der Registry im Run-Verzeichnis noch im Autostart was zu dem Teil drin...
Ja die funktioniert auch noch nicht... einen Eintrag reinbekommen könnt ich ganz einfach über das Setup-Programm, dann müsst ich mir damit im Programm selber nicht den Kopf zerbrechen :d ... und wenn es jemand da net mehr drin haben will, dann ist das doch eben am Sinn des Programms vorbei, oder?!... also kann ers dann auch gleich de-installen... oder er löscht einfach die Verknüpfung aus dem Autostart-Ordner... ich denke, dass sollte nahezu jeder Windoof-User hinbekommen... vllt tipp ich noch n einfaches "LiesMich.txt" :haha:

Soviel dazu... werd mich dann man wieder in die Tiefen des Quelltextes stürzen... *blubb*
 
hallo,

ich muss doch mal ne kleine Anmerkung loswerden.

Die suchfunktion für die Bilder ist ja sehr schön, aber könnte man sie nicht so bauen das auch multiselektion möglich ist .

könnte man dort wo Ändern steht nicht den Pfad vom vorherigen bild erstmal beibehalten und nicht jedesmal den Pfad wiedereingeben wo man hinwill 24x

evtl. die funktion Mit Windows Starten auch abschaltbar machen .Bei mir ist sie nur grau untelegt

ansonsten ja mit dem Blau habe ich auch festgellt . ansonsten sehr schön.

mfg tom1tom
 
tom1tom schrieb:
hallo,

ich muss doch mal ne kleine Anmerkung loswerden.

Die suchfunktion für die Bilder ist ja sehr schön, aber könnte man sie nicht so bauen das auch multiselektion möglich ist .
Aha... und woher soll dann das Programm wissen, welches der 24 Bilder du wann haben willst !? :eek:

tom1tom schrieb:
könnte man dort wo Ändern steht nicht den Pfad vom vorherigen bild erstmal beibehalten und nicht jedesmal den Pfad wiedereingeben wo man hinwill 24x
Ich glaub, so einfach geht das leider nicht, aber ich werde mal schauen, ob ich was machen kann... aber sehs mal so:
es gibt leute, die haben das erste Bild bspw. unter "C:\Dokumente und Einstellungen\benutzername\Eigene Dateien\Eigene Bilder" und das zweite Bild dann unter "D:\backup\Jahr2005\januar\" die müssen sich dann den ganzen Weg erst auch nochmal "hochklicken" ... hätten dann also den doppelten "Weg" als sonst...

tom1tom schrieb:
evtl. die funktion Mit Windows Starten auch abschaltbar machen .Bei mir ist sie nur grau untelegt

ansonsten ja mit dem Blau habe ich auch festgellt . ansonsten sehr schön.

mfg tom1tom
Ja die ist deshalb grau unterlegt, weil die Anwendung zu dem Zeitpunkt noch net mal im Autostart drin war ;) ... jetzt in der Final kommt die Autostart-Verknüpfung automatisch beim Setup mit rein (außer der User wählt es ab)
Ansonsten sind alle bisher aufgetauchten "richtigen" Fehler behoben... alles andere, wie das derzeit immernoch graue "Mit Windows starten" ist halt Kosmetik... aber selbstverständlich werde ich dafür auch noch versuchen eine Lösung zu finden... aber das Wichtigste funktioniert jetzt... (zumindest hat es das in den Tests hier gemacht).
Hier der Link zum Setup der fertigen Version:
http://www.wayne.at/DOWNLOAD/Setup.zip

Ich wünsch dann erstmal viel Spaß damit :banana:

So und hier dann noch der Code, falls jemand Verbesserungsvorschläge hat.

Einmal für das Fenster selber:
Code:
' Hintergrundgrafik einstellen ANFANG
' Benötigte API-Deklarationen
Private Declare Function IIDFromString Lib "ole32" ( _
  ByVal lpszIID As Long, _
  iid As Any) As Long

Private Declare Function CoCreateInstance Lib "ole32" ( _
  rclsid As Any, _
  ByVal pUnkOuter As Long, _
  ByVal dwClsContext As Long, _
  riid As Any, _
  ByVal ppv As Long) As Long

Private Declare Function CallWindowProcA Lib "user32" ( _
  ByVal addr As Long, _
  ByVal p1 As Long, _
  ByVal p2 As Long, _
  ByVal p3 As Long, _
  ByVal p4 As Long) As Long

Private Declare Sub RtlMoveMemory Lib "kernel32" ( _
  pDst As Any, _
  pSrc As Any, _
  ByVal dlen As Long)

Private Const CLSCTX_INPROC_SERVER  As Long = 1&
Private Const CLSID_ActiveDesktop   As String = _
  "{75048700-EF1F-11D0-9888-006097DEACF9}"

Private Type GUID
  data1                   As Long
  data2                   As Integer
  data3                   As Integer
  data4(7)                As Byte
End Type

Private Type IActiveDesktop
  ' IUnknown
  QueryInterface          As Long
  AddRef                  As Long
  Release                 As Long
  ' IActiveDesktop
  ApplyChanges            As Long
  GetWallpaper            As Long
  SetWallpaper            As Long
  GetWallpaperOptions     As Long
  SetWallpaperOptions     As Long
  GetPattern              As Long
  SetPattern              As Long
  GetDesktopItemOptions   As Long
  SetDesktopItemOptions   As Long
  AddDesktopItem          As Long
  AddDesktopItemWithUI    As Long
  ModifyDesktopItem       As Long
  RemoveDesktopItem       As Long
  GetDesktopItemCount     As Long
  GetDesktopItem          As Long
  GetDesktopItemByID      As Long
  GenerateDesktopItemHtml As Long
  AddUrl                  As Long
  GetDesktopItemBySource  As Long
End Type

Private Enum AD_APPLY
  AD_APPLY_SAVE = &H1
  AD_APPLY_HTMLGEN = &H2
  AD_APPLY_REFRESH = &H4
  AD_APPLY_ALL = &H7
  AD_APPLY_FORCE = &H8
  AD_APPLY_BUFFERED_REFRESH = &H10
  AD_APPLY_DYNAMICREFRESH = &H20
End Enum
' Hintergrundgrafik einstellen ENDE

' Deklarationen für Dateisystem
Private Declare Function PathFileExists Lib "shlwapi.dll" _
  Alias "PathFileExistsA" ( _
  ByVal pszPath As String) As Long
' Ende: Deklarationen für Dateisystem
' Fenster immer im Vordergrund
Private Declare Function SetWindowPos Lib "user32" _
  (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
  ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
  ByVal cy As Long, ByVal wFlags As Long) As Long
  
Private Declare Function GetWindowLong Lib "user32" _
  Alias "GetWindowLongA" (ByVal hwnd As Long, _
  ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" _
  Alias "SetWindowLongA" (ByVal hwnd As Long, _
  ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_REFRESH = SWP_NOZORDER Or _
  SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or _
  SWP_FRAMECHANGED

Private Const GWL_STYLE = (-16)

Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000

Private Const HWND_TOPMOST = -1
Public Sub TopWindow(hwnd As Long)
  SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
    SWP_NOSIZE + SWP_NOMOVE
End Sub
' Ende: Fenster im Vordergrund

' Hintergrundgrafik Funktionen & Subs ANFANG
Public Function ActiveDesktopSetWallpaper( _
  ByVal strFile As String) As Boolean

  Dim vtbl         As IActiveDesktop
  Dim vtblptr      As Long

  Dim classid      As GUID
  Dim IID_IUnknown As GUID

  Dim obj          As Long
  Dim hRes         As Long

  With IID_IUnknown
    .data4(0) = &HC0
    .data4(7) = &H46
  End With

  ' CLSID String in Struktur umschiffen
  hRes = IIDFromString(StrPtr(CLSID_ActiveDesktop), classid)
  If hRes <> 0 Then
    Debug.Print "Konnte String nicht in IID umwandeln"
    Exit Function
  End If

  ' IActiveDesktop Instanz erstellen
  hRes = CoCreateInstance(classid, 0, &H1, IID_IUnknown, VarPtr(obj))
  If hRes <> 0 Then
    Debug.Print "Konnte IActiveDesktop Instanz nicht erstellen"
    Exit Function
  End If

  ' VTable von Instanz kopieren
  RtlMoveMemory vtblptr, ByVal obj, 4
  RtlMoveMemory vtbl, ByVal vtblptr, Len(vtbl)

  ' SetWallpaper aus VTable aufrufen
  hRes = CallPointer(vtbl.SetWallpaper, obj, StrPtr(strFile), 0)
  If hRes <> 0 Then
    Debug.Print "Konnte neues Wallpaper nicht setzen"
  Else
    ActiveDesktopSetWallpaper = True
  End If

  ' ApplyChanges aus VTable aufrufen
  hRes = CallPointer(vtbl.ApplyChanges, obj, AD_APPLY_ALL Or AD_APPLY_FORCE)
  If hRes <> 0 Then
    Debug.Print "Konnte Desktop nicht aktualisieren"
  End If

  ' Instanz zerstören
  CallPointer vtbl.Release, obj
End Function
Private Function CallPointer(ByVal fnc As Long, ParamArray params()) As Long
  Dim btASM(&HEC00& - 1)  As Byte
  Dim pASM                As Long
  Dim i                   As Integer

  pASM = VarPtr(btASM(0))

  AddByte pASM, &H58                  ' POP EAX
  AddByte pASM, &H59                  ' POP ECX
  AddByte pASM, &H59                  ' POP ECX
  AddByte pASM, &H59                  ' POP ECX
  AddByte pASM, &H59                  ' POP ECX
  AddByte pASM, &H50                  ' PUSH EAX

  For i = UBound(params) To 0 Step -1
    AddPush pASM, CLng(params(i))     ' PUSH dword
  Next

  AddCall pASM, fnc                   ' CALL rel addr
  AddByte pASM, &HC3                  ' RET

  CallPointer = CallWindowProcA(VarPtr(btASM(0)), 0, 0, 0, 0)
End Function
Private Sub AddPush(pASM As Long, lng As Long)
  AddByte pASM, &H68
  AddLong pASM, lng
End Sub
Private Sub AddCall(pASM As Long, addr As Long)
  AddByte pASM, &HE8
  AddLong pASM, addr - pASM - 4
End Sub
Private Sub AddLong(pASM As Long, lng As Long)
  RtlMoveMemory ByVal pASM, lng, 4
  pASM = pASM + 4
End Sub
Private Sub AddByte(pASM As Long, bt As Byte)
  RtlMoveMemory ByVal pASM, bt, 1
  pASM = pASM + 1
End Sub
' Hintergrundgrafik Funktionen & Subs ENDE

' Aufruf der API für Dateisystem
Public Function IsFilePath(strPath As String) As Boolean
  IsFilePath = CBool(PathFileExists(strPath))
End Function
' Ende: Aufruf der API für Dateisystem

Private Sub btn_hide_Click()
Me.Top = "-10000"
Me.Left = "-10000"
Tray1.Create
End Sub

Private Sub btn_quit_Click()
Unload Me
End Sub

Private Sub btn_save_Click()
Dim BatFile As String

If pic_pfad_txt_00.Text = "" Then
txt_batch.Text = " " + vbCrLf
Else: txt_batch.Text = "copy " + Chr(34) + pic_pfad_txt_00.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_0000.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_01.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_01.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_0100.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_02.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_02.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_0200.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_03.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_03.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_0300.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_04.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_04.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_0400.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_05.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_05.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_0500.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_06.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_06.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_0600.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_07.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_07.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_0700.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_08.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_08.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_0800.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_09.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_09.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_0900.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_10.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_10.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_1000.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_11.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_11.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_1100.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_12.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_12.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_1200.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_13.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_13.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_1300.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_14.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_14.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_1400.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_15.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_15.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_1500.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_16.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_16.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_1600.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_17.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_17.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_1700.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_18.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_18.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_1800.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_19.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_19.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_1900.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_20.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_20.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_2000.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_21.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_21.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_2100.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_22.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_22.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_2200.jpg" + Chr(34) + vbCrLf
End If
If pic_pfad_txt_23.Text = "" Then
txt_batch.Text = txt_batch.Text + " " + vbCrLf
Else: txt_batch.Text = txt_batch.Text + "copy " + Chr(34) + pic_pfad_txt_23.Text + Chr(34) + " " + Chr(34) + App.Path & "\Bilder\Bild_2300.jpg" + Chr(34) + vbCrLf
End If

txt_batch.TextSave ("kopieren.bat") 'für CoolXP-TextBox
BatFile = "kopieren.bat"
Shell BatFile
End Sub

Private Sub Form_Load()
TopWindow Me.hwnd 'Benötigt, damit das Fenster über ALLEN andren ist
Call bildersave
xpFrame2.Value = cAktiviert

End Sub
Private Sub bildersave()
' Prüfung des Pfad zum Speichern der Bilder
Dim zielpath
If IsFilePath(App.Path & "\Bilder") Then
  Exit Sub
  Else: zielpath = App.Path & "\Bilder"
        MkDir zielpath
  End If
' Ende für Prüfung des Pfad zum Speichern der Bilder
End Sub

Private Sub pic_pfad_btn_00_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_00.Text = FName$
End Sub

Private Sub pic_pfad_btn_01_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_01.Text = FName$
End Sub

Private Sub pic_pfad_btn_02_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_02.Text = FName$
End Sub

Private Sub pic_pfad_btn_03_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_03.Text = FName$
End Sub

Private Sub pic_pfad_btn_04_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_04.Text = FName$
End Sub

Private Sub pic_pfad_btn_05_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_05.Text = FName$
End Sub

Private Sub pic_pfad_btn_06_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_06.Text = FName$
End Sub

Private Sub pic_pfad_btn_07_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_07.Text = FName$
End Sub

Private Sub pic_pfad_btn_08_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_08.Text = FName$
End Sub

Private Sub pic_pfad_btn_09_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_09.Text = FName$
End Sub

Private Sub pic_pfad_btn_10_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_10.Text = FName$
End Sub

Private Sub pic_pfad_btn_11_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_11.Text = FName$
End Sub

Private Sub pic_pfad_btn_12_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_12.Text = FName$
End Sub

Private Sub pic_pfad_btn_13_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_13.Text = FName$
End Sub

Private Sub pic_pfad_btn_14_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_14.Text = FName$
End Sub

Private Sub pic_pfad_btn_15_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_15.Text = FName$
End Sub

Private Sub pic_pfad_btn_16_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_16.Text = FName$
End Sub

Private Sub pic_pfad_btn_17_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_17.Text = FName$
End Sub

Private Sub pic_pfad_btn_18_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_18.Text = FName$
End Sub

Private Sub pic_pfad_btn_19_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_19.Text = FName$
End Sub

Private Sub pic_pfad_btn_20_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_20.Text = FName$
End Sub

Private Sub pic_pfad_btn_21_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_21.Text = FName$
End Sub

Private Sub pic_pfad_btn_22_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_22.Text = FName$
End Sub

Private Sub pic_pfad_btn_23_Click()
Flt$ = "JPG (.jpg)|*.jpg|JPEG (.jpeg)|*.jpeg|Bitmap (.bmp)|*.bmp|"
FName$ = GetOpenName(Flt$, "C:\")
pic_pfad_txt_23.Text = FName$
End Sub

Private Sub tim_aktzeit_Timer()
Dim Hintergrund

lb_akt_date.Caption = Format(Now, "dd. mmmm yyyy")
lb_akt_zeit.Caption = Format(Now, "hh:mm:ss") + " Uhr"

Select Case xpFrame2.Value
 Case "1"
    Scroller1.Visible = True
    Select Case lb_akt_zeit.Caption
    Case "00:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_0000.jpg"
            If pic_pfad_txt_00.Text = "" Then
            pic_pfad_txt_00.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "01:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_0100.jpg"
            If pic_pfad_txt_01.Text = "" Then
            pic_pfad_txt_01.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "02:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_0200.jpg"
            If pic_pfad_txt_02.Text = "" Then
            pic_pfad_txt_02.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "03:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_0300.jpg"
            If pic_pfad_txt_03.Text = "" Then
            pic_pfad_txt_03.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "04:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_0400.jpg"
            If pic_pfad_txt_04.Text = "" Then
            pic_pfad_txt_04.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "05:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_0500.jpg"
            If pic_pfad_txt_05.Text = "" Then
            pic_pfad_txt_05.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "06:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_0600.jpg"
            If pic_pfad_txt_06.Text = "" Then
            pic_pfad_txt_06.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "07:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_0700.jpg"
            If pic_pfad_txt_07.Text = "" Then
            pic_pfad_txt_07.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "08:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_0800.jpg"
            If pic_pfad_txt_08.Text = "" Then
            pic_pfad_txt_08.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "09:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_0900.jpg"
            If pic_pfad_txt_09.Text = "" Then
            pic_pfad_txt_09.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "10:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_1000.jpg"
            If pic_pfad_txt_10.Text = "" Then
            pic_pfad_txt_10.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "11:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_1100.jpg"
            If pic_pfad_txt_11.Text = "" Then
            pic_pfad_txt_11.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "12:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_1200.jpg"
            If pic_pfad_txt_12.Text = "" Then
            pic_pfad_txt_12.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "13:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_1300.jpg"
            If pic_pfad_txt_13.Text = "" Then
            pic_pfad_txt_13.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "14:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_1400.jpg"
            If pic_pfad_txt_14.Text = "" Then
            pic_pfad_txt_14.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "15:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_1500.jpg"
            If pic_pfad_txt_15.Text = "" Then
            pic_pfad_txt_15.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "16:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_1600.jpg"
            If pic_pfad_txt_16.Text = "" Then
            pic_pfad_txt_16.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "17:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_1700.jpg"
            If pic_pfad_txt_17.Text = "" Then
            pic_pfad_txt_17.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "18:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_1800.jpg"
            If pic_pfad_txt_18.Text = "" Then
            pic_pfad_txt_18.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "19:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_1900.jpg"
            If pic_pfad_txt_19.Text = "" Then
            pic_pfad_txt_19.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "20:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_2000.jpg"
            If pic_pfad_txt_20.Text = "" Then
            pic_pfad_txt_20.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "21:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_2100.jpg"
            If pic_pfad_txt_21.Text = "" Then
            pic_pfad_txt_21.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "22:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_2200.jpg"
            If pic_pfad_txt_22.Text = "" Then
            pic_pfad_txt_22.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case "23:00:00 Uhr"
            Hintergrund = App.Path + "\Bilder\Bild_2300.jpg"
            If pic_pfad_txt_23.Text = "" Then
            pic_pfad_txt_23.Text = ""
            Else: ActiveDesktopSetWallpaper (Hintergrund)
            End If
    Case Else
        Exit Sub
    End Select
 Case "0"
    Scroller1.Visible = False
End Select
End Sub

Private Sub Tray1_DblClick(ByVal Button As Long)
Me.Top = "1000"
Me.Left = "1000"
Tray1.Destroy
End Sub

und dann noch für das Module:

Code:
Private Const MAX_PATH = 260

'**********************************************************
Rem Die Datenstruktur "OpenFilename" dient der Konfiguration
Rem des Dialogs.

Private Type OpenFilename
  lStructSize As Long
  'Größe der Datenstruktur. Kann mit Len() bestimmt werden.
  hWndOwner As Long
  'Handle des Besitzers (mit GetActiveWindow() abfragen).
  hInstance As Long
  'Handle der Dialogfeldvorlage, wenn OFN_ENABLETEMPLATEHANDLE
  'in Flags gesetzt ist. Wenn OFN_EXPLORER gesetzt ist, wird
  'der Dialog vom Standardialog des Explorers abgeleitet.
  'Andernfalls wird ein Dialog im Windows-3.x-Stil erzeugt.
  lpstrFilter As String
  'Ein VB-String mit paarweise angeordneten nullterminierten
  'Strings. Der letzte nullterminierte String muß mit einem
  'weiteren NULL-Zeichen abgeschlossen werden.
  'Ein Filter besteht aus zwei nullterminierten Strings. Der
  'erste enthält die Zeichenkette, die im Kombifeld "DateiTyp"
  'angezeigt wird, der zweite die zugehörtigen Dateimasken wie
  'z.B. "*.doc".
  'Beispiel: "Word-Dokumente" + Chr$(0) + "*.doc" + Chr$(0)
  'Sie können mehrere Dateimasken durch Semikola abtrennen.
  'Beispiel:
  '"Grafiken" + Chr$(0) + "*.bmp;*.jpg;*.gif" + Chr$(0)
  lpstrCustomFilter As String
  'Ein VB-String mit dem im Kombifeld "DateiTyp" ausgewählten
  'Filter.
  nMaxCustFilter As Long
  'Die Größe von lpstrCustomFilter.
  nFilterIndex As Long
  'Der 1-basierte Index des im Kombifeld "DateiTyp"
  'ausgewählten Filters.
  lpstrFile As String
  'Ein VB-String mit dem ausgewählten Dateinamen inkl.
  'Laufwerk und Pfad.
  'Der String muß vorher in der entsprechenden Größe erzeugt
  'werden. Er kann vor dem Aufruf des Dialogs mit dem Namen
  'einer existierenden Datei belegt werden.
  nMaxFile As Long
  'Die Größe von lpstrFile.
  lpstrFileTitle As String
  'Ein VB-String mit dem ausgewählten Dateinamen ohne
  'Laufwerk und Pfad.
  nMaxFileTitle As Long
  'Die Größe von lpstrFileTitle.
  lpstrInitialDir As String
  'Ein VB-String mit dem Pfadnamen des Ordners, dessen Inhalt
  'der Dialog beim Anzeigen darstellen soll.
  lpstrTitle As String
  'Ein VB-String mit Titel des Dialogfeldes.
  Flags As Long
  'Flags, die die Anzeigeoptionen des Dialogfeldes bestimmen
  nFileOffset As Integer
  'Index zum Beginn des ersten Dateinamens in lpstrFile.
  nFileExtension As Integer
  'Index zum Beginn der Dateierweiterung in lpstrFile.
  lpstrDefExt As String
  'Die Standarderweiterung, die an einen Dateinamen vergeben
  'wird, wenn er keine Erweiterung besitzt.
  lCustData As Long
  'Ein Zeiger auf anwendungsspezifiasche Daten, für die
  'Rückruffunktion.
  lpfnHook As Long
  'Adresse einer Rückruffunktion, die in der Anwendung
  'definiert wird. Sie können hier NULL eintragen.
  lpTemplateName As String
  'Der Name der Dialogfeldvorlage (siehe hInstance)
End Type

'**********************************************************
Rem Die folgenden Konstanten sind die erlaubten Werte für
Rem OpenFilename->Flags.

Private Const OFN_ALLOWMULTISELECT = &H200
'Zeigt ein Dialogfeld mit der Möglichkeit, mehrere Dateien
'auszuwählen. In diesem Fall enthält lpstrFile den Pfad und
'anschließend alle Dateinamen.
'nFileOffset zeigt auf den Index des ersten Dateinamens nach
'der Pfadangabe.
'lpstrFile enthält alle Dateinamen durch Chr$(0) getrennt.
'Am Ende folgt ein zweites Chr$(0). Bei alten Win-3.x-
'Dialoge) sind die Dateinamen durch Leerzeichen getrennt.
'Diese Variante kennt keine langen Dateinamen.

Private Const OFN_CREATEPROMPT = &H2000
'Zeigt eine Meldung, wenn die Datei nicht existiert und
'fragt den Anwender, ob sie erzeugt werden soll.

Private Const OFN_ENABLEHOOK = &H20
'Aktiviert die Rückruffunktion lpfnHook.

Private Const OFN_ENABLETEMPLATE = &H40
'Aktiviert die Dialogfeldvorlage.

Private Const OFN_ENABLETEMPLATEHANDLE = &H80
'Aktiviert die Dialogfeldvorlage.

Private Const OFN_EXPLORER = &H80000
'Nutzt Explorer-Dialoge. Diese Einstellung ist die Vorgabe,
'selbst wenn Sie dieses Flag nicht angeben. Für alte
'Win-3.x-Dialoge müssen Sie das Flag löschen.
'Sie müssen es in den folgenden Fällen setzen:
'- bei OFN_ALLOWMULTISELECT.
'- wenn Sie Dialogfeldvorlagen und Rückruffunktionen benutzen.

Private Const OFN_EXTENSIONDIFFERENT = &H400&
'Gibt an, dass der Anwender einen Dateinamen mit einer
'anderen Erweiterung als lpstrDefExt eingeben kann.

Private Const OFN_FILEMUSTEXIST = &H1000
'Gibt an, dass der Anwender nur die Namen von existierenden
'Dateien eingeben kann. Andernfalls wird eine Warnmeldung
'ausgegeben.
'OFN_PATHMUSTEXIST muß ebenfalls gesetzt werden.

Private Const OFN_HIDEREADONLY = &H4&
'Versteckt das Kontrollkästchen "Nur lesen".

Private Const OFN_LONGNAMES = &H200000
'Aktiviert die Unterstützung von langen Dateinamen in den
'alten Win-3.x-Dialogen.

Private Const OFN_NOCHANGEDIR = &H8&
'Stellt das ursprüngliche Verzeichnis bei Ende des Dialoges
'wieder her, wenn der Anwender anderes Verzeichnis
'eingestellt hat.

Private Const OFN_NODEREFERENCELINKS = &H100000
'Weist das Dialogfeld an, bei einer markierten Verknüpfung
'Namen und Pfad der Verknüpungsdatei zurückzugeben, anstatt
'Namen und Pfad der Datei, auf die die Verknüpfung verweist.

Private Const OFN_NOLONGNAMES = &H40000
'Deaktiviert die Unterstützung von langen Dateinamen in den
'alten Win-3.x-Dialogen.

Private Const OFN_NONETWORKBUTTON = &H20000
'Versteckt die Schaltfläche "Netzwerk".

Private Const OFN_NOTESTFILECREATE = &H10000
'Gibt an, dass keine Testdatei erzeugt wird, bevor der
'Dialog endet. In diesem Fall überprüft das Dialogfeld nicht
'auf Schreibschutz, Platzmangel auf dem Datenträger oder
'korrekten Netzwerkzugriff.

Private Const OFN_OVERWRITEPROMPT = &H2&
'Gibt im Dialog "Speichern" eine Warnmeldung aus, wenn die
'Datei bereits existiert und durch das Speichern
'überschrieben wird.

Private Const OFN_PATHMUSTEXIST = &H800
'Gibt an, dass der Anwender nur die Namen von existierenden
'Verzeichnissen eingeben kann. Andernfalls wird eine
'Warnmeldung ausgegeben.

Private Const OFN_READONLY = &H1
'Gibt an, das das Kontrollkästchen "Nur Lesen" angekreuzt
'ist, wenn der Dialog angezeigt wird.

Private Const OFN_SHAREAWARE = &H4000
'Gibt an, dass die Funktion fehlschlägt, wenn ein
'Netzwerkfehler auftritt.

Private Const OFN_SHAREFALLTHROUGH = 2
Private Const OFN_SHAREWARN = 0
Private Const OFN_SHARENOWARN = 1

Private Const OFN_SHOWHELP = &H10
'Zeigt im Dialogfeld den Hilfe-Schalter an. hwndOwner muß auf
'ein Fenster zeigen, das die Hilfe anzeigen kann. Explorer-
'Dialoge senden die Nachricht CDN_HELP an die Rückruffunktion.

Private Const OFS_MAXPATHNAME = 128

'**********************************************************
Rem *** GetSaveFileName ***
Rem Funktion zum Anzeigen des Dialogs "Speichern"

Private Declare Function GetSaveFileName Lib "comdlg32" _
  Alias "GetSaveFileNameA" (lpOpenfilename As OpenFilename) _
  As Long

'**********************************************************
Rem *** GetOpenFileName ***
Rem Funktion zum Anzeigen des Dialogs "Speichern"

Private Declare Function GetOpenFileName Lib "comdlg32" _
  Alias "GetOpenFileNameA" (lpOpenfilename As OpenFilename) _
  As Long

'**********************************************************
Rem *** CommDlgExtendedError ***
Rem Funktion zum Ermitteln der Fehlernummer

Private Declare Function CommDlgExtendedError Lib _
  "comdlg32" () As Integer

'**********************************************************
Rem *** GetActiveWindow ***
Rem Eine Funktion zum Ermitteln des Fenster-Handles.

Private Declare Function GetActiveWindow Lib "user32" () _
  As Long

'**********************************************************
Rem *** PrepareFilter ***
Rem Eine Funktion zum Aufbereiten des Filters
Rem Beispielfilter:
Rem "Word Dokument (.doc)|*.doc|Word Vorlage (.dot)|*.dot|"
Rem Die Funktion ersetzt "|" durch Chr$(0) und fügt das
Rem abschließende Chr$(0) ein.

Private Function PrepareFilter(Flt$) As String
  Const O$ = "|"
  Dim Temp$
  Dim i As Integer
  'Mit einer Kopie arbeiten
  Temp$ = Flt$
  'Beim ersten Zeichen beginnen
  i = 1
  '"|" gefunden?
  Do While InStr(i, Flt$, O$) <> 0
    'Alles bis zum ersten "|" kopieren und Chr$(0) anhängen
    PrepareFilter = PrepareFilter + _
      Mid(Temp$, i, InStr(i, Temp$, O$) - i) + vbNullChar
    'Index auf Zeichen nach "|" setzen
    i = InStr(i, Temp$, O$) + Len(O$)
  Loop
  'Evtl. Rest vom String und abschließendes Chr$(0)anhängen
  PrepareFilter = PrepareFilter + _
    Right(Temp$, Len(Temp$) - i + 1) + vbNullChar
End Function

'**********************************************************
Rem *** GetSaveName ***
Rem Eine VB/VBA-Funktion als einfach zu nutzender Mantel für
Rem den Aufruf des Dialogs "Speichern".

Public Function GetSaveName(ByVal Filter$, ByVal DefExt$, _
  ByVal InitialDir$) As String

  Dim OFN As OpenFilename
  Dim Temp$
  Dim n As Integer

  'Bestimmen der Optionen für den Dialog
  With OFN
    'Größe der Struktur festlegen
    .lStructSize = Len(OFN)
    'Das aktive Fenster (= Word) wird zum Besitzer des Dialogs
    .hWndOwner = GetActiveWindow()
    'Der Filtzer wird vorbereitet
    .lpstrFilter = PrepareFilter(Filter$)
    'Speicher reservieren für kompletten Pfad
    .lpstrFile = String$(700, vbNullChar)
    'Größe des reservierten Speichers angeben
    .nMaxFile = 700
    'Speicher reservieren für Dateinamen
    .lpstrFileTitle = String$(MAX_PATH, vbNullChar)
    'Größe des reservierten Speichers angeben
    .nMaxFileTitle = MAX_PATH
    'Das Vorgabeverzeichnis bestimmen
    .lpstrInitialDir = InitialDir$
    'Der Titel des Dialoges
    .lpstrTitle = "Speichern"
    'Optionen bestimmen
    .Flags = OFN_EXTENSIONDIFFERENT Or _
      OFN_NOCHANGEDIR Or OFN_OVERWRITEPROMPT _
      Or OFN_HIDEREADONLY
    'Standarderweiterung für die Dateien bestimmen
    .lpstrDefExt = DefExt$
  End With

  If GetSaveFileName(OFN) Then
    Temp$ = OFN.lpstrFile
    'Alles nach dem NULL-Zeichen verwerfen
    n = InStr(Temp$, vbNullChar)
    If n > 1 Then
      GetSaveName = Left$(Temp$, n - 1)
    Else
      GetSaveName = ""
    End If
  Else
    GetSaveName = ""
  End If
End Function

'**********************************************************
Rem *** GetOpenName ***
Rem Eine VB/VBA-Funktion als einfach zu nutzender Mantel für
Rem den Aufruf des Dialogs "Öffnen".

Public Function GetOpenName(ByVal Filter$, _
  ByVal InitialDir$) As String

  Dim OFN As OpenFilename
  Dim Temp$
  Dim n As Integer

  ''Bestimmen der Optionen für den Dialog
  With OFN
    .lStructSize = Len(OFN)
    .hWndOwner = GetActiveWindow()
    .lpstrFilter = PrepareFilter(Filter$)
    ''Speicher reservieren
    .lpstrFile = String$(700, vbNullChar)
    .nMaxFile = 700
    .lpstrFileTitle = String$(MAX_PATH, vbNullChar)
    .nMaxFileTitle = MAX_PATH
    .lpstrInitialDir = InitialDir$
    .lpstrTitle = "Öffnen"
    .Flags = OFN_EXTENSIONDIFFERENT Or _
      OFN_NOCHANGEDIR Or OFN_OVERWRITEPROMPT _
      Or OFN_HIDEREADONLY
  End With

  If GetOpenFileName(OFN) Then
    Temp$ = OFN.lpstrFile
    ''Alles nach dem NULL-Zeichen verwerfen
    n = InStr(Temp$, vbNullChar)
    If n > 1 Then
      GetOpenName = Left$(Temp$, n - 1)
    Else
      GetOpenName = ""
    End If
  Else
    GetOpenName = ""
  End If
End Function
 
Zuletzt bearbeitet:
wow das war bestimmt ne schweine arbeit

Hochachtung und Danke dafür

mfg
 
Mal ne Frage:
kann man es nicht so machen, dass man die Uhrzeit frei wählen kann oder ist das zu umständlich?
Weil wenn ich jetzt z.b. testen will ob es klappt oder nicnt und es ist gere 12:10 uhr oder so dann ist das nen bisschen doof.
Aber sonst sieht es doch ganz nett aus, werde das mal testen :)
 
ach komm warte mal nen bisschen und vielleicht hat dann der Programmierer , das auch so gelöst das man die zeit frei wählen kann.

und jetzt da der quellcode draussen ist finden sich garantiert leute die was verbessern oder auch hinzufügen.

nicht immer zuviel auf einmal verlangen .

mfg
 
Ich habe garnichts verlangt :)
War ja nur eine Frage ob es möglich ist
 
joshude schrieb:
Ich habe garnichts verlangt :)
War ja nur eine Frage ob es möglich ist

hat ja auch keiner gesagt das was verlangt worden ist !

war auch nur ne anmerkung meinerseits.(der die Idee hatte)

Denke mal Glühwürmchen sitz schon drann und testet und verbessert ohne Ende.

damit es so wird wie wir es uns wünschen, falls seine zeit es zulässt.

mfg
 
hallo ,

habe das problem das wenn es mit windows mitgestartet wird muss ich immer die bilder wieder neu eingeben obwohl das prog. sich ja die bilder die ich am tag vorher festgelegt und gespeichert habe , in seinen eigenen ordner(C:\Program Files\Wallpaper-Changer\Bilder) kopiert hat.

mfg
 
W@llpaper-Changer

Morsche :wink:

So, ich bin nun wieda ausm Urlaub zurück...

@tom1tom:
jepp... das ist mir auch aufgefallen... habe ich wohl irgendwie nicht bedacht...
bin aber seit gestern abend dabei, was daran zu ändern... wird zwar ne n bissel dauern, weil ich noch was andres ändere... aber lasst euch überraschen... :p

greetz
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh