| 
| Autor | Beitrag |  
| Martok 
          Beiträge: 3661
 Erhaltene Danke: 604
 
 Win 8.1, Win 10 x64
 Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
 
 | 
Verfasst: Fr 09.05.14 21:20 
 
Moin!
 Wenn man über die (immer spärlicher werdenden) Darstellungsoptionen von Windows etwas ändert und das übernimmt, initialisiert Windows den DWM neu. Das ist das, was man mit diesem Fullscreen-"Einen Moment Geduld bitte" vermittelt bekommt.
 
 Wie kann ich das selber auslösen?
 
 Viele Grüße,
 Martok
 _________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
 |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Sa 10.05.14 08:05 
 
Ich glaube wenn das ginge, würden nicht so viele Tools mit Tricks arbeiten und die dwm.exe abschießen oder ähnliches...
 Da es in der offiziellen API des DWM soweit ich das sehe keinen Weg dafür gibt, wird es Tricks dafür vermutlich ohnehin nur für einzelne Windowsversionen geben. Insofern ist der unsaubere Weg wohl eine Überlegung wert: Einfach den dwm abschießen... taskkill /f /im dwm.exe...
 |  |  |  
| hathor Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 10.05.14 11:44 
 
Zitat:
 In Windows 8, Desktop Window Manager (DWM) is always ON and cannot be disabled by end users and apps . As in Windows 7, DWM is used to compose the desktop. In addition to experiences enabled in Windows 7, now DWM desktop composition enables desktop composition for all themes, support for Stereoscopic 3D, and management, separation, and protection of the experience with Windows Store apps.
msdn.microsoft.com/e...42%28v=vs.85%29.aspx RedrawWindow function
msdn.microsoft.com/e...11%28v=vs.85%29.aspx IShellView::Refresh method
msdn.microsoft.com/e...36%28v=vs.85%29.aspx How to Refresh Desktop and Windows Explorer?
social.msdn.microsof...rer?forum=vblanguage Ist hier was Brauchbares dabei?
www.swissdelphicente...showcode.php?id=1054
Zum Testen: 
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 
 | function GetDesktopHandle: HWND;var
 S : String;
 begin
 Result := FindWindow('ProgMan', nil);
 Result := GetWindow(Result, GW_CHILD);
 Result := GetWindow(Result, GW_CHILD);
 SetLength(S, 40);
 GetClassName(Result, PChar(S), 39);
 if PChar(S) <> 'SysListView32' then Result := 0;
 end;
 
 procedure RefreshDesktop;
 begin
 PostMessage(GetDesktopHandle, WM_KEYDOWN, VK_F5, 0);
 PostMessage(GetDesktopHandle, WM_KEYUP, VK_F5, 1 shl 31);
 SendMessage(GetDesktopHandle, WM_COMMAND, $A065, 0);
 InvalidateRect(GetDesktopHandle, nil, True);
 end;
 
 procedure TForm2.Button5Click(Sender: TObject);
 begin
 RefreshDesktop;
 end;
 |  |  |  |  
| Martok  
          Beiträge: 3661
 Erhaltene Danke: 604
 
 Win 8.1, Win 10 x64
 Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
 
 | 
Verfasst: Sa 10.05.14 18:08 
 
	  |  jaenicke hat folgendes geschrieben  : |  	  | Insofern ist der unsaubere Weg wohl eine Überlegung wert: Einfach den dwm abschießen... taskkill /f /im dwm.exe... | 
 Hm. Ich hab das mal probiert, reicht aber nicht für alles. Teilweise gehts nur mit Neuanmeldung - das was Windows da selber macht braucht aber keine. Ich mein, ich könnte da ja mal den ProcessMonitor draufwerfen, aber das artet ja in Arbeit aus    @Hathor: weißt du zufällig, ob das auch den Explorer zu einem "realign mal deine Icons" veranlassen kann?_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
 |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Sa 10.05.14 19:44 
 |  |  |  
| hathor Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 10.05.14 19:54 
 
Man kann das hier
www.swissdelphicente...showcode.php?id=1054 beliebig erweitern - siehe Anhang...
Einloggen, um Attachments anzusehen!
 Für diesen Beitrag haben gedankt: Martok
 |  |  |  
| Martok  
          Beiträge: 3661
 Erhaltene Danke: 604
 
 Win 8.1, Win 10 x64
 Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
 
 | 
Verfasst: Sa 10.05.14 21:23 
 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
 |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: So 11.05.14 08:43 
 
Vielleicht fehlt auch nur ein WM_THEMECHANGED oder WM_DWMCOLORIZATIONCOLORCHANGED danach, wenn es nicht gleich greift? |  |  |  
| Martok  
          Beiträge: 3661
 Erhaltene Danke: 604
 
 Win 8.1, Win 10 x64
 Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
 
 | 
Verfasst: Fr 16.05.14 14:10 
 
So, Thread mal wieder aufwärmen: SystemParamtersInfo() ist leider so verbuggt, dass man die nicht gefahrlos nutzen kann - einige Werte werden nicht richtig gelesen, wenn man die Structs dann wieder zurückschreibt kommen komische Dinge raus. Muss man also über die Registry direkt machen.
 Nur die Messages broadcasten reicht leider nicht, obwohl ich im API Monitor auch nicht mehr gesehen hab. Noch jemand Ideen?
 _________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
 |  |  |  
| Martok  
          Beiträge: 3661
 Erhaltene Danke: 604
 
 Win 8.1, Win 10 x64
 Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
 
 | 
Verfasst: So 18.05.14 01:07 
 
Es scheint leider kein Weg an SystemParametersInfo vorbei zu führen - auch wenn das gefährlich sein kann . Muss man halt jede Einstellung testen und gucken ob etwas explodiert._________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
 |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: So 18.05.14 06:58 
 
Das Verhalten dieser Funktion hängt von der in die Exe in den PE Header kompilierten MajorSubsystemVersion ab. Steht dort ein Wert von 5.0 drin (wie ihn z.B. Delphi XE6 standardmäßig schreibt), wird diese Exe wie eine XP Anwendung behandelt, also wird in iBorderWidth der kombinierte Wert zurückgegeben wie dies bei XP gemacht wurde:
objectmix.com/clippe..._cxpaddedborder.html In Delphi kann man in den Projektoptionen unter Projekt --> Optionen --> Delphi-Compiler --> Linken einstellen welche Version dort geschrieben werden soll. Die Einstellung heißt:
 Untersystem-Versionsfelder in PE-Header als <Haupt>.<Neben> setzen
 Diese gibt es seit Delphi 2009. Vorher bleibt nur den PE Header nach dem Kompilieren manuell zu manipulieren. |  |  |  
| Martok  
          Beiträge: 3661
 Erhaltene Danke: 604
 
 Win 8.1, Win 10 x64
 Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
 
 | 
Verfasst: So 18.05.14 14:57 
 
	  |  jaenicke hat folgendes geschrieben  : |  	  | wird diese Exe wie eine XP Anwendung behandelt, also wird in iBorderWidth der kombinierte Wert zurückgegeben wie dies bei XP gemacht wurde: | 
 Sind die bekloppt oder so? Dafür gebe ich doch die andere cbSize (344 statt 340) an... Es ist sogar lang und breit dokumentiert wie man diese Unterscheidung machen soll wenn man auch auf WINVER < 0600 funktionieren will (Plattform abfragen und kleinere struct angeben) - und dann wird das ignoriert ?
 Ich schlage dann mal SystemParametersInfo für die Am Schlechtesten Dokumentierte Funktion vor.
 €: das ändert natürlich nichts daran dass es kreuzgefährlich ist dann den falschen Wert zu schreiben. Hätten sie das dann wieder auseinandergepflückt, z.B. unter der Annahme dass die PaddedBorderWidth konstant bleibt... oder einen Fehler geworfen._________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
 |  |  |  |