2013-05-15 1 views
0

Windows Forms 응용 프로그램에서 모든 시각 효과를 프로그래밍 방식으로 사용하지 않도록 설정하려고합니다. 변경해야 할 레지스트리 값의 확장 목록 외에도이 옵션이 있지만 작동하지 않을 수 있습니다.SystemParametersInfo를 통해 Windows 시각 효과 사용 안 함

pinvoke.net과 MSDN에서 좀 더 구체적인 대답을 찾으 셨지만 찾을 수 없습니다.

그래서를 heres 데이터는 내가 가진 :

정보에 대한 SPI_SETUIEFFECTS

SPI_SETUIEFFECTS 0x103F는

사용하거나 UI 효과를 사용하지 않습니다. 모든 UI 효과를 사용하려면 pvParam 매개 변수를 TRUE로 설정하고, 모든 UI 효과를 사용하지 않으려면 FALSE로 설정하십시오.

지금
[DllImport("user32.dll", SetLastError = true)] 
[return: MarshalAs(UnmanagedType.Bool)] 
static extern bool SystemParametersInfo(uint uiAction, uint uiParam, bool pvParam, uint fWinIni); 

, 전화하기 :

내가 확인 ... 그것을 일반적인 규칙에 대한 예외 것 같다 pvParam, 같은 부울을 통과해야, 그때로 선언하려고 그것은 :

const uint SPI_SETUIEFFECTS = 0x103F; 
const uint SPIF_SENDCHANGE = 0x02; 

bool result = SystemParametersInfo(SPI_SETUIEFFECTS, 0, false, SPIF_SENDCHANGE); 

그리고 그것은, 빌드 실행 ... 그리고 아무것도하지 않습니다. 오류가없고 변경도 없습니다. "result"는 true로 설정됩니다.

무엇이 여기에 있습니까?

+0

pvParam을'ref bool pvParam'으로 사용해 볼 수 있습니까? –

+0

@ Simon 답장을 보내 주셔서 감사합니다. 나는 그것이 bool을 수정해야 할 필요가 없기 때문에 참조 된 것 대신 직접 전달할 수도 있다고 생각했다. 여전히'ref bool pvParam'을 선언하고'bool f = false'를 할당 한 다음'ref f '를 전달했습니다. 나는 같은 결과를 얻는다. – Acelnorst

+0

당신은 SPIF_SENDCHANGE + SPIF_UPDATEINIFILE (그리고 ref bool을 다시 시도해 보셨습니까?) –

답변

0

[DllImport("user32.dll", SetLastError = true)] 
[return: MarshalAs(UnmanagedType.Bool)] 
static extern bool SystemParametersInfo(
    uint uiAction, 
    uint uiParam, 
    bool pvParam, 
    uint fWinIni 
); 
.... 
bool enabled = false; 
SystemParametersInfo(SPI_SETUIEFFECTS, 0, enabled, 0); 

완벽하게 작동이 코드. 콤보 상자의 드롭 다운 효과를 살펴 보았습니다. enabledfalse이면 콤보의 목록이 즉시 나타납니다. enabledtrue 일 때 콤보 목록이 아래로 내려갑니다.

시스템에 의해 그려지지 않은 컨트롤을보고있을 가능성이 높습니다. 그리고이 컨트롤은이 옵션을 무시합니다.

+0

글쎄, 이것은 당황 스럽다. 당신 말이 맞아요, 코드가 제대로 작동했는데, 나는 올바른 곳을 보지 않고있었습니다. 답장을위한 Thx. – Acelnorst