Eventabfrage: Hintergrundbild geändert?
Eventabfrage: Hintergrundbild geändert?
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?
(Win 11 64-bit, PB 6.04 und 6.10)
- kapege
- Beiträge: 39
- Registriert: 28.12.2004 17:35
- Computerausstattung: AMD Ryzen 7 3700X 8-Core Processor 3.60 GHz
Windows 10 Pro 64bit
14 GB Ram
PureBasic 6.00 LTS (Windows - x64) - Wohnort: Trostberg
Re: Eventabfrage: Hintergrundbild geändert?
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
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
- NicTheQuick
- Ein Admin
- Beiträge: 8807
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Eventabfrage: Hintergrundbild geändert?
Das PNG bringt hier nichts, wenn er es in einem WindowedScreen macht.
Re: Eventabfrage: Hintergrundbild geändert?
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?
(Win 11 64-bit, PB 6.04 und 6.10)
Re: Eventabfrage: Hintergrundbild geändert?
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
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
PB 5.31 (x86) & (x64) Win10
Re: Eventabfrage: Hintergrundbild geändert?
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...
HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper
den evt. alle paar min. abfragen...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
Re: Eventabfrage: Hintergrundbild geändert?
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?
(Win 11 64-bit, PB 6.04 und 6.10)
Re: Eventabfrage: Hintergrundbild geändert?
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.
Aber die Registry auslesen ist sicher schneller.
Dazu kann Dir Bisonte sicher mehr sagen.
Gruß: Bernd
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
Dazu kann Dir Bisonte sicher mehr sagen.
Gruß: Bernd
PB 5.31 (x86) & (x64) Win10
- NicTheQuick
- Ein Admin
- Beiträge: 8807
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Eventabfrage: Hintergrundbild geändert?
Ich hab kein Windows, aber wie wäre es mit dieser Funktion: MSDN - SystemParametersInfo function
Zum Setzen des Hintergrundbildes habe ich folgende Funktion gefunden:
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?
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!!
(Win 11 64-bit, PB 6.04 und 6.10)