Seite 1 von 2
Eventabfrage: Hintergrundbild geändert?
Verfasst: 09.09.2012 21:28
von Sebastian
Ich habe ein Programm geschrieben, das ein halbtransparentes Fenster simuliert (mit WindowedScreen), indem ein Screenshot vom Desktop eingezeichnet wird. Eine andere Möglichkeit für den WindowedScreen ist mir nicht eingefallen... Das ganze funktioniert, solange der Hintergrund (Desktop) sich nicht verändert. Viele habe bei Windows7 aber aktiviert, dass sich nach einer bestimmten Zeitspanne das Hintergrundbild verändert. Kann ich das Event (Hintergrundbild wurde gewechselt) irgendwie abfangen, damit ich weiß, dass das Fenster neu gezeichnet werden muss?
Re: Eventabfrage: Hintergrundbild geändert?
Verfasst: 10.09.2012 18:09
von kapege
Hallo Sebastian,
probiers doch mal mit diesem PNG anstatt eines Screenshot:
dann dürfte dein Prob. doch erl. sein, falls keiner doch noch mit einer Event Lösung kommt.
gerne kann ich dir auch andere Glas-HG in jeder Grösse erstellen, auch farbig.
Gruss Peter
Re: Eventabfrage: Hintergrundbild geändert?
Verfasst: 10.09.2012 19:54
von NicTheQuick
Das PNG bringt hier nichts, wenn er es in einem WindowedScreen macht.
Re: Eventabfrage: Hintergrundbild geändert?
Verfasst: 10.09.2012 20:24
von Sebastian
Danke. Ich nutze ein transparentes PNG als Oberlay. Wie Nic sagte, löst dies das Problem nicht. Selbst wenn ich das PNG als ImageGadget verwende, so würde ich nur den Fensterhintergrund sehen, richtig?
Re: Eventabfrage: Hintergrundbild geändert?
Verfasst: 10.09.2012 20:41
von BSP
Hallo Sebastian.
Ich komme z.Z. leider nicht dazu, Dir ein Beispiel zu schreiben.
Aber schau Dir mal die "Fingerprints" an.
In der PB- Hilfe unter "Cipher" zu finden.
- Bild in Speicher, Fingerprint von machen,
- Kurze Zeit später neues Bild machen, mit vorherigem Fingerprint vergleichen,
(in einer Schleife regelmäsig wiederholen),
Wenn Fingerprint1 <> Fingerprint2: Aktion auslösen.
Gruß: Bernd
Re: Eventabfrage: Hintergrundbild geändert?
Verfasst: 10.09.2012 22:02
von Bisonte
zwar kein Event aber in der Registry steht z.B. der Pfad des aktuellen Wallpapers bei
HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper
den evt. alle paar min. abfragen...
Re: Eventabfrage: Hintergrundbild geändert?
Verfasst: 11.09.2012 06:38
von Sebastian
Beides hört sich interessant an. Fingerprint vergleichen ist doch sicher rechenintensiv? Da erscheint es wohl einfacher, die Idee mit dem Auslesen der Registry umzusetzen. Wie kann ich diese Registry-Info auslesen? Ist dieses Verfahren sicher und eindeutig?
Re: Eventabfrage: Hintergrundbild geändert?
Verfasst: 11.09.2012 07:59
von BSP
Hallo Sebastian.
Also; - ich habe mir ein kleines Prg zum Bilder sortieren geschrieben,
das mit Fingerprints doppelte Bilder findet.
Bei "normal" grossen Bildern ist das kein Problem.
Und Du machst das ja nicht mit jedem Schleifendurchlauf,
sondern Zeitabhängig, z.B. alle 10 Sek.
Code: Alles auswählen
If ElapsedMilliseconds()-zeit>10000
; Bild einlesen und Fingerprint2 erstellen
if Fingerprint2<>fingerprint1
; mach was
fingerprint1 = fingerprint2
EndIf
zeit=ElapsedMilliseconds()
EndIf
Aber die Registry auslesen ist sicher schneller.
Dazu kann Dir Bisonte sicher mehr sagen.
Gruß: Bernd
Re: Eventabfrage: Hintergrundbild geändert?
Verfasst: 11.09.2012 10:12
von NicTheQuick
Ich hab kein Windows, aber wie wäre es mit dieser Funktion:
MSDN - SystemParametersInfo function
Zum Setzen des Hintergrundbildes habe ich folgende Funktion gefunden:
Code: Alles auswählen
private static readonly UInt32 SPI_SETDESKWALLPAPER = 0x14;
private static readonly UInt32 SPIF_UPDATEINIFILE = 0x01;
private static readonly UInt32 SPIF_SENDWININICHANGE = 0x02;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 3, path, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE)
Re: Eventabfrage: Hintergrundbild geändert?
Verfasst: 12.09.2012 20:11
von Sebastian
Oh.. mit MSDN bin ich noch überhaupt nich in Kontakt getreten. Hat jemand vielleicht eine direkte Funktion für mich parat? Das wäre klasse!!