我正在尝试在 Windows 窗体应用程序中以编程方式禁用所有视觉效果。除了要更改的注册表值的扩展列表之外,我找到了这个选项,但我似乎无法让它工作。
在 pinvoke.net 和 MSDN 上搜索更具体的答案,但我找不到。
所以,这是我拥有的数据:
关于 SPI_SETUIEFFECTS 的信息
SPI_SETUIEFFECTS 0x103F
启用或禁用 UI 效果。将 pvParam 参数设置为 TRUE 以启用所有 UI 效果或 FALSE 以禁用所有 UI 效果。
我需要将它作为 pvParam 传递一个布尔值,这似乎是一般规则的一个例外......好吧,然后我尝试将其声明为:
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SystemParametersInfo(uint uiAction, uint uiParam, bool pvParam, uint fWinIni);
现在,调用它:
const uint SPI_SETUIEFFECTS = 0x103F;
const uint SPIF_SENDCHANGE = 0x02;
bool result = SystemParametersInfo(SPI_SETUIEFFECTS, 0, false, SPIF_SENDCHANGE);
它构建,运行......并且什么都不做。没有错误,没有改变。“结果”设置为真。
我在这里想念什么?