2009-07-11 45 views
3

我的一個程序似乎在每隔幾小時將設置關閉的情況下更改顯示屬性>外觀>效果>顯示窗口內容。以編程方式更新桌面「在拖動時顯示窗口內容」

我不確定究竟是哪個程序,或者它發生的時間。我有很多程序看起來像是可能的罪魁禍首 - 壁紙輪播,多顯示器軟件,多個虛擬桌面和切換,以及其他一些。

我只是想創建一個小批處理腳本來定期運行,並將設置重新設置爲開。

有誰知道如何在Windows中做到這一點?我正在使用xp pro sp3。

謝謝!

回答

4

您可以使用RegMon來查找不斷更改設置的程序。也許這比黑客入侵更好。

+0

這可能會實現,但鑑於我在我的答案(這是剛剛更改註冊表,直到註銷並重新登錄在沒有任何效果)提到,如果罪犯被編程改變設置(即不直接更改註冊表項),監視註冊表可能不會報告正確的事情。這取決於RegMon的工作方式。 – Sean 2009-07-11 21:06:20

0

我懷疑它保存在註冊表中 - 也許[HKEY_CURRENT_USER \ Control Panel \ Desktop] - 「DragFullWindows」?

使用批處理文件每隔一小時左右就可以輕鬆地將註冊表設置翻轉回「1」。

1

似乎控制該首選項的註冊表設置是HKCU \ Control Panel \ Desktop \ DragFullWindows。你可以閱讀更多關於它here。但是,在我自己的計算機上嘗試它不會立即註冊更改,因此批處理腳本不會執行此操作。您可能需要編寫一個程序來使用SystemParametersInfo()來操作它。您可以將它傳遞給SPI_SETDRAGFULLWINDOWS參數。 Here's一頁解釋更多。 Here's顯示如何調用它的頁面,儘管不是用於相同的參數。

5

最好的選擇是使用受支持的API以編程方式執行此操作。我沒有測試過這一點,但它應該做的伎倆:

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

您可以使用SPI_GETDRAGFULLWINDOWS看是否位已被翻轉以避免不必要地觸發WM_SETTINGCHANGE。

+2

在Windows 7 x64上測試 - 工作正常!選項在SystemParametersInfo()調用後立即生效 - 無需註銷。 (示例應用程序代碼:https://gist.github.com/neokril/8035995) – Dmitry 2013-12-19 08:16:24

2

有一個簡單而有效的解決方案來解決這個問題。在記事本類型下列行:

Windows註冊表編輯器版本5.00

[HKEY_CURRENT_USER \控制面板\桌面] 「DragFullWindows」= 「1」

[HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows \ CurrentVersion \ Explorer \ VisualEffects \ DragFullWindows]「CheckedValue」= dword:00000001「UncheckedValue」= dword:00000001

將文件另存爲「Show Window Contents.reg」雙擊該文件並重新啓動將永久解決問題。發佈消息,如果你覺得這很有用。

亞拉文納吉