2012-06-23 3 views
1

바탕 화면 새로 고침 :보내기 WM_SETTINGCHANGE 메시지가 나는 프로그램이 한 줄을 통해 내 바탕 화면 배경을 변경하려면 관리

DllCall("user32.dll", "int", "SystemParametersInfo", "int", 20, "int", 0, "str", $CmdLine[1], "int", 0) 

중 & hellip을; 원하는 배경 화면을 컴파일 된 스크립트로 끌어서 놓기 만하면됩니다.

바탕 화면을 변경하는 다른 프로그램이 있는데 어떤 이유로 든 WM_SETTINGCHANGE 메시지를 보내지 못했습니다. (업데이트되는 키는 HKCU\Control Panel\Desktop\Wallpaper입니다.) 이 메시지를 보내면 벽지를 새로 고침 할 수 있습니까? WM_SETTINGCHANGE에 정확한 메시지가 있습니까? 아니면 첫 번째 스크립트가 유일한 방법입니까?

나는이 시도했지만 작동하지 않습니다

DllCall("user32.dll", "lresult", "SendMessage", _ 
    "int", 0xffff, _ 
    "int", 0x001a, _ 
    "int", 0x0014, _ 
    "str", "HKCU\Control Panel") 

0xffff 모든 창에 메시지를 방송을위한, 0x001aWM_SETTINGCHANGE를 들어, 0x0014spi_setdeskwallpaper의 코드가 의미합니다. Windows 7의 작업 표시 줄은 깜박 하나 배경 무늬가 변경되지 않습니다.

C, C++ 또는 Visual Basic으로 문제를 해결하면 직접 AutoIt으로 변환합니다 (피연산자의 숫자 코드가 필요함).

답변

1
#include <SendMessage.au3> 
#include <WindowsConstants.au3> 

Dim $hWnd = WinGetHandle('[CLASS:Progman]') 
_SendMessage($hWnd, $WM_COMMAND, 0x0001A220) 

작동합니다. 그렇지 않은 경우 알려 주시면이 답변을 업데이트 할 수 있습니다.

+0

불행히도 작동하지 않습니다. 작업 표시 줄의 용지함 근처에서 약간 깜박 거리는 것을 볼 수 있지만 벽지는 바뀌지 않습니다. 어쨌든,이 작은 유틸리티 (http://windowsxp.mvps.org/wprefresh.exe) (wprefresh.exe)를 발견했습니다.이 트릭을 수행하는 것으로 보입니다. 수동으로'HKCU \ Control Panel \ Desktop \ Wallpaper'를 변경하고 wprefresh를 실행하면 새로운 배경 화면이 보입니다. 나는 그것이 어떤 메시지를 보내는 지 모릅니다, 그것은 단지 작동합니다. 그럼에도 불구하고 관심을 가져 주셔서 감사합니다. – Marco