2009-07-11 10 views
3

Einer meiner Programme programmatisch Einstellung scheint die Eigenschaften von Anzeige> Darstellung> Effekte> Zeigen Fensterinhalte zu ändern, während des Ziehens aus alle paar Stunden einstellen.Update-Desktop „Fensterinhalt beim Ziehen anzeigen“

Ich weiß nicht genau, welches Programm oder wann es passiert. Ich habe eine Reihe von Programmen, die wie wahrscheinlich Täter erscheinen - Wallpaper Rotatoren, Software für mehrere Monitore, mehrere virtuelle Desktops und Switching, und ein paar andere.

ich gerade denke ein wenig Batch-Skript erstellen regelmäßig und setzen Sie die Einstellung wieder auf auf laufen.

Weiß jemand, wie man das in Windows macht? Ich benutze XP Pro SP3.

Danke!

Antwort

4

können Sie RegMon verwenden, das Programm zu finden, das Ihre Einstellungen zu ändern hält. Vielleicht ist das ein besserer Anfang, als herumzuhacken.

+0

Dies könnte funktionieren, aber wenn man bedenkt, was ich in meiner Antwort erwähnen (die, die gerade Ändern der Registrierung keine Wirkung hat, bis Sie sich abmelden und hinten), wenn der Täter die Einstellung programmatisch verändert (dh NICHT den Registrierungsschlüssel direkt ändern), Überwachung der Registrierung möglicherweise nicht das Richtige melden. Es hängt davon ab, wie RegMon funktioniert. – Sean

0

Ich vermute, dass es in der Registrierung gespeichert ist - vielleicht [HKEY_CURRENT_USER \ Control Panel \ Desktop] - "DragFullWindows"?

Es wäre leicht, die Registrierung zu kippen jede Stunde auf „1“ oder so mit einer Batch-Datei Einstellung zurück.

1

Es scheint, die Einstellung Registry, die steuert, dass Präferenz HKCU \ Control Panel \ Desktop \ DragFullWindows ist. Sie können mehr darüber lesen here. Wenn Sie es jedoch auf meinem eigenen Computer ausprobieren, wird die Änderung nicht sofort registriert, so dass ein Batch-Skript dies nicht tut. Sie müssen wahrscheinlich ein Programm schreiben, um es mit SystemParametersInfo() zu manipulieren. Sie können den Parameter SPI_SETDRAGFULLWINDOWS übergeben. Here's eine Seite, die es mehr erklärt. Here's eine Seite, die zeigt, wie sie aufgerufen wird, wenn auch nicht für denselben Parameter.

5

Die beste Option besteht darin, dies programmgesteuert mit der unterstützten API durchzuführen. Ich habe nicht getestet, aber es sollte den Trick tun:

SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, 
        TRUE, 
        NULL, 
        SPIF_UPDATEINIFILE | SPIF_SENDCHANGE) 

Sie können SPI_GETDRAGFULLWINDOWS verwenden, um festzustellen, ob das das Bit unnötig eine WM_SETTINGCHANGE Auslösung zu vermeiden gekippt wurde.

+2

Getestet auf Windows 7 x64 - es funktioniert!Die Option wird unmittelbar nach dem Aufruf von SystemParametersInfo() wirksam - Sie müssen sich nicht abmelden. (Beispiel App-Code: https://gist.github.com/neokril/8035995) – Dmitry

+0

Danke Dmitry, das funktioniert super! Gibt es eine Chance, dass Sie die Anwendung im Systray platzieren und regelmäßig überprüfen und reparieren können? Tut mir leid, dass ich so frech bin, aber ich habe leider keine C++ Fähigkeiten :( – abstrask

2

Es gibt eine einfache und effektive Lösung für dieses Problem. In dem Editor die folgenden Zeilen:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER \ Control Panel \ Desktop] "DragFullWindows" = "1"

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ Currentversion \ Explorer \ VisualEffects \ DragFullWindows] "CheckedValue" = dword: 00000001 "UncheckedValue" = dword: 00000001

Speichern Sie die Datei unter "Show Window Contents.reg" Durch Doppelklick auf diese Datei und Neustart wird das Problem dauerhaft behoben. Veröffentlichen Sie eine Nachricht, wenn Sie dies nützlich finden.

Aravind Banerjee

Verwandte Themen