gpt4 book ai didi

c# - 使用 C# 中的 SystemParametersInfo (SPI_GETSCREENREADER SPI_SETSCREENREADER)

转载 作者:行者123 更新时间:2023-11-30 21:16:04 27 4
gpt4 key购买 nike

我这样做正确吗?

[DllImport("user32", CharSet = CharSet.Auto)]
internal static extern long SystemParametersInfo(long uAction, int lpvParam, ref bool uParam, int fuWinIni);

...

public static bool IsScreenReaderRunning()
{
long SPI_GETSCREENREADER = 70L;
bool bScreenReader = false;
long retVal;

retVal = SystemParametersInfo(SPI_GETSCREENREADER, 0, ref bScreenReader, 0);

//uint iParam = 0;
//uint iUpdate = 0;
//bool result = false;
//bool bReturn = SystemParametersInfo(SPI_GETSCREENREADER, iParam, &bScreenReader, iUpdate);
return bScreenReader;
}

public static void ScreenReaderOn()
{
long SPI_GETSCREENREADER = 71L;
bool bScreenReader = true;
long retVal;

retVal = SystemParametersInfo(SPI_GETSCREENREADER, 0, ref bScreenReader, 0);
}

public static void ScreenReaderOff()
{
long SPI_GETSCREENREADER = 71L;
bool bScreenReader = false;
long retVal;

retVal = SystemParametersInfo(SPI_GETSCREENREADER, 0, ref bScreenReader, 0);
}

最佳答案

pinvoke 声明完全错误,它是从VB6 代码复制的。返回类型和参数都不长(VB6 int32 类型),它们是 int。 Pinvoke.net 是一个获得良好声明的好网站。

[DllImport("user32.dll", SetLastError = true)]
static extern bool SystemParametersInfo(int uiAction, int uiParam, IntPtr pvParam, int fWinIni);

当你得到一个错误的返回时,不要忘记抛出 Win32Exception,这样失败就不会悄无声息了。

关于c# - 使用 C# 中的 SystemParametersInfo (SPI_GETSCREENREADER SPI_SETSCREENREADER),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5434709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com