荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: DelphiTips 001 - 屏蔽系统功能键
发信站: BBS 荔园晨风站 (Thu Jan 21 21:12:18 1999), 转信


问 题:
在 我 的 应 用 程 序 运 行 的 时 候, 我 希 望 防 止 用 户
使 Ctrl-Alt-Del 和 Alt-Tab 等 系 统 组 合 键。  最 有 效 的
方 法 是 什 么 呢?

解决:
解决的方法异常简单。在应用程序中需要屏蔽这些系统按键的最好的
办法是,欺骗Windows, 让它以为有一个屏幕保护程序正在运行。
当一个屏幕保护程序在运行时,组合键 Ctrl-Alt-Del 和 Alt-Tab
(仅对Win95而言) 是无效的。调用一个 Win API 函数SystemParametersInfo
就可以实现这个欺骗性的功能。有关这个函数的详细讨论,我建议你
应该查阅帮助文档。

在任何情况下, SystemParametersInfo 都有四个参数。以下是从
Windows 帮助文件中摘录的有关该函数的C定义:

BOOL SystemParametersInfo(
    UINT  uiAction,     //  要查询或设置的系统参数
    UINT  uiParam,      //  跟要执行的动作有关
    PVOID  pvParam,     // 跟要执行的动作有关
    UINT  fWinIni       // 用户日志文件更新标志
   );


要达到我们的目的, 我们将把 uiAction 参数设置为
SPI_SCREENSAVERRUNNING,uiParam 设为 1 (使键失效)或
0(重新有效), pvParam 设为一个“伪”指针地址,
fWinIni 则设为 0 。相当容易吧?! 你可以:

要屏蔽系统组合键:
当你不需要让用户按Alt+Enter、Ctrl+Alt+Del、Ctrl+Esc等功能键的时候加入以
下代码:
Var
temp:integer;
begin
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @temp, 0);
end;



取消屏蔽:
当你要恢复功能键时用以下代码:
Var
Temp:integer;
begin
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @temp, 0);
end;




赶快开启你的Delphi,试一试这个简单欺骗 Windows 95的方法呀。

你要在 VB 中采用这种方法,就得先定义 SystemParametersInfo 函数和
SPI_SCREEBSAVERRUNNING 常量。

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店