C#调用api设置屏保的问题!再次求教!谢谢!

荆棘谷-部落-王亚楠 2009-03-30 11:20:47

以下代码为功能定义:

// 将本程序设置为屏保
//const uint SPI_SETSCREENSAVERRUNNING = 0x0061;
// 屏保状态
const uint SPI_SETSCREENSAVEACTIVE = 0x0011;
// 获取屏幕壁纸地址
const uint SPI_GETDESKWALLPAPER = 0x0073;

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool SystemParametersInfo(uint uAction, uint uParam, StringBuilder lpvParam, uint init);
//static extern bool SystemParametersInfo(uint uAction, uint uParam, uint lpvParam, uint init);
/*
* 设置壁纸
* private const int SPI_SETDESKWALLPAPER = 20
* SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, filename, 1);
*/


以下两行代码分别为设置或取消屏保:
public static void SetScreener()
{
bool ok;
StringBuilder str = new StringBuilder(100);
ok = SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, str, 0);
}

public static void CancelScreener()
{
bool ok;
StringBuilder str = new StringBuilder(100);
ok = SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, str, 0);
}


但是还有一点,当返回值为 true 时,win,ctrl+del+alt,alt+tab,ctrl+esc 等功能键都还能用,实际上,如果设置成屏保,这些键应该是不能用的才对。
...全文
567 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zgke 的回复:]
设置为屏保.只要你按键盘 就关闭了.
你按了键盘 还继续屏保才不对呢.
[/Quote]


zgke 兄,一语惊醒梦中人,呵呵,谢谢,谢谢!
zgke 2009-03-30
  • 打赏
  • 举报
回复
设置为屏保.只要你按键盘 就关闭了.
你按了键盘 还继续屏保才不对呢.
  • 打赏
  • 举报
回复
另外我设置
const uint SPI_SETSCREENSAVEACTIVE = 0x0011;



readonly uint SPI_SETSCREENSAVEACTIVE = 0x0011
;

的时候,vs2005的自动提示里为什么没有 设置为 readonly 时的 SPI_SETSCREENSAVEACTIVE 的值?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧