Win32 API: ShowWindow unter Windows 11 plötzlich verändertes Verhalten. [Gelöst]

Antworten
daduja
Beiträge: 1
Registriert: Di 6. Aug 2024, 08:34

Win32 API: ShowWindow unter Windows 11 plötzlich verändertes Verhalten. [Gelöst]

Beitrag von daduja »

GELÖST: 6.8.2024, 12:21 Uhr
Ausgerechnet beim Testen meiner Applikation bin ich auf das neue Release der "Rechner"-App in Windows 11 gestossen. Nachdem ich mit der App "Rechner" ein Problem beim Fokus setzen entdeckt habe bin etwas hecktisch geworden und habe nicht korrekt weiter getestet. --sorry.
Demnach ist derzeit die App "Rechner" in Windows 11 die einzige, die ich gefunden habe, die nicht auf das zuvor identifizierte Window Handle reagert, wenn sie in die Taskleiste minimiert wurde! Ob das nun ein Fehler der Rechner-App ist oder ein "works as designed" von Microsoft Windows ist weiß ich nicht. Mein Fokus-Tool zeigt es deutlich an. "Rechner" App antwortet nicht auf ShowWindow, wenn die App Minimiert wurde.

Die Stelle, wo kein Response kommt wird weiter unten in den Anhängen gezeigt (Bild und Code Ausschnitt als Textfile).

Hier noch im Nachtrag die ausstehenden Infos:
OS: Windows 11 Home x64 / Rel. 10.0.22631 Build 22631
Lazarus IDE: Version: 2.2.3 (2023-06-02), FPC Ver.: 3.2.2,
Revision: lazarus_2_2_4, x86_64-win64-win32/win64

Auf dem System ist ausschließlich der MS Windows Defender bzw. MS Windows Sicherheitssoftware installiert. Getestet wurde jetzt auch mit deaktivierten Sicherheitsfeatures (besonders bezüglich Ransomware Erkennung) mit gleichem Ergebnis: Die Windows "Rechner"-App reagiert nicht bzw. das Window Handle ist nicht mehr sichtbar, wenn die App minimiert wurde. Getestete andere Apps reagieren auch minimiert und und werden wieder auf Desktop dargestellt, wenn mit ShowWindow angesprochen.

daduja
----------------------------------------------------------------
Hallo,
folgenden Beitrag muss ich wohl erstmal ausklammern und weiter mein Problem testen und eingrenzen:

[[ich bin neu hier, sehe mich als Anfänger in Freepascal und suche Infos und Hilfe- Tips zu meinem Problem.
Ich habe eine Freepascal Anwendung mit der Lazarus IDE für Windows implementiert. Darin wird unter anderem der Window Status einer externen Anwendung auf dem lokalen System geprüft und bei Bedarf diese Anwendung automatisch aus dem "Minimiert" Modus aus der Taskleiste wieder auf dem Desktop "hergestellt" angezeigt.

Für diese Aufgabe verwende ich ShowWindow(Wnd_Handle, SW_RESTORE). Bisher lief das ohne Probleme unter Windows 7 (x64).. bis Windows 11. Seit geraumer Zeit funktioniert dieser Aufruf nicht mehr in Windows 11, die externe Anwendung bleibt minimiert in der Taskleiste Stehen. Ich habe mein Tool auch unter administrativer Berechtigung ausgeführt, das hat auch nicht geklappt. Wenn das Fenster der externen Anwendung jedoch auf dem Desktop im Modus Normal angezeigt wird, kann ich diese zum Beispiel mit ShowWindow(Wnd_Handle, SW_MINIMIZED) in die Taskleiste "minimieren". -komisch, oder?
Auch andere Modus Optionen (SW_...) habe ich mit ShowWindow ausprobiert. Ein Wiederherstellen des Fensters aus der Taskleiste klappt. nicht. Bei Microsoft habe ich in der Doku zur API nachgeschaut aber dort gibt es keine Änderung in der Funktionalität.

Externe Testanwendung auf meinem System war: die App Rechner in Windows 11 Home (aktuelles Build) aber auch andere Anwendungen (Mozilla, Editor,..). Das Handle der externen Anwendung wurde bei meinen Tests immer richtig erkannt und angesprochen. Nur das Zurückholen aus dem Minimierten Modus klappt nicht mehr. Auch auf anderen Test PCs mit Windows 11 trit das Problem auf.
Ist dieses Problem bekannt oder kennt Jemand eine Lösung?

Vielen Dank im Voraus für einen Kommentar oder Hinweis]]

..Ups, habe eben nochmals mit Mozilla probiert und jetzt klappt es mit diesem.
Aber wenn ich eine App von MS Windows 11 probiere, ist das Problem wieder da. Damit kann ich aber leben, es soll nur eine Livemusik Aufnahme dauerhaft im Fokus gehalten werden und bei Bedarf auch wiederhergestellt angezeigt werden und dazu reich es jetzt wieder aus.

Vielen Dank für die Tips, die ich schon so rasch erhalten habe. Ich werde noch Infos zu Releases der eingesetzen OS und IDE nachtragen aber es scheint "nur" ein Problem mit den Bordmitteln von Win11 zu geben, die sich nicht aus der Taskleiste via API wiederherstellen lassen wollen?

Jetzt klappt es auch wieder mit Editor als Testfall. Jedoch Rechner lässt sich immer noch nicht restoren in der Desktopanzeige. Was ist da denn los? Ich muss wohl mein Thema vorerst wieder zurückziehen und intensiver Testen. :oops:

Und meinen Dank an af0815 !

daduja
----------------------------------------------------------------
Dateianhänge
Code_Auszug_ShowWindow.txt
(993 Bytes) 27-mal heruntergeladen
Minimized_to_taskbar_Rechner_App_didnt _respond.jpg
Minimized_to_taskbar_Rechner_App_didnt _respond.jpg (28.75 KiB) 1636 mal betrachtet
Zuletzt geändert von daduja am Di 6. Aug 2024, 21:13, insgesamt 9-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6782
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Win32 API: ShowWindow unter Windows 11 plötzlich verändertes Verhalten

Beitrag von af0815 »

Es hilft ungemein, wenn das auf ein ganz einfaches Beispiel reduzieren kannst und den Source postest. Damit kann versuchen es nach zu vollziehen.

Bitte auch die Versionen vom fpc und Lazarus dazu angeben.

BTW: Wenn du andere Fenster als die von dir erzeugten manipuliert werden, greift auch oft ein Ransomware Schutz ein. Ich schreibe jetzt extra Ransomware und nicht Antivirus. In letzter Zeit wird die Isolierung der Prozesse immer mehr verstärkt und das kann auch zu scheinbaren API Änderungen führen.

Bsp. der Ransomeware Schutz von Sophos hat das Debuggen trotz Adminrechte fast verunmöglicht (auch Delphi betroffen). Nach einigen Bugreports geht es langsam wieder. Auch das Laufzeitverjalten war etwas beeinträchtigt und deutlich langsamer.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten