100分求解:什么函数可以判断windows是否被锁定了,急!

reven_zl 2004-10-03 06:07:12
多谢了
...全文
276 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
an_bachelor 2004-10-20
  • 打赏
  • 举报
回复
赞赏花差的方法 简洁
fzd999 2004-10-04
  • 打赏
  • 举报
回复
kugou123笨办法,完全可以通过判断Exployer是否正在运行来实现,实际上我也是这么做的。

不过,既然已经揭贴了,我也就不罗嗦了。
Likefei 2004-10-03
  • 打赏
  • 举报
回复
还是无法登陆Windows??
kugou123 2004-10-03
  • 打赏
  • 举报
回复
楼主的意思是注册表被锁,还是桌面被锁?
weasea 2004-10-03
  • 打赏
  • 举报
回复
up!
nwpulipeng 2004-10-03
  • 打赏
  • 举报
回复
帮顶混分
nineclock 2004-10-03
  • 打赏
  • 举报
回复
UP
kugou123 2004-10-03
  • 打赏
  • 举报
回复
哦。你自己写一个dll,替换掉windows原来的dll。
导出gina.dll的以下函数(具体做法,是用LoadLibrary和GetProcAddress()两个函数来实现的):

GINA DLL要输出下列函数(winlogon会调用)
WlxActivateUserShell
WlxDisplayLockedNotice
WlxDisplaySASNotice
WlxDisplayStatusMessage
WlxGetStatusMessage
WlxInitialize
WlxIsLockOk
WlxIsLogoffOk
WlxLoggedOnSAS
WlxLoggedOutSAS
WlxLogoff
WlxNegotiate
WlxNetworkProviderLoad
WlxRemoveStatusMessage
WlxScreenSaverNotify
WlxShutdown
WlxStartApplication
WlxWkstaLockedSAS

而锁屏幕的时候,会调用gina.dll的WlxLoggedOnSAS函数。

你需要截获该函数。

int WINAPI WlxLoggedOnSAS (
PVOID pWlxContext,
DWORD dwSasType,
PVOID pReserved)
{
if (dwSasType == WLX_SAS_TYPE_CTRL_ALT_DEL){ //屏蔽CTRL_ALT_DEL,

//在这个if里面,你可以加入你自己的处理代码
//比如:
::MessageBox(NULL,"屏幕即将被锁定!","锁定提示",MB_OK);
}

}
//下面就是调用你导出的WlxWkstaLockedSAS函数
return prcWlxLoggedOnSAS ( //这是我从标准GINA.DLL中获取的函数。
pWlxContext,
dwSasType,
pReserved);
}
可以看到,在调用原始gina.dll之前,你已经对Ctrl+Alt+Del进行了前期处理,可以达到锁定前提示你的效果。

更多替换gina.dll的资料,你可以参考:

http://www.vckbase.com/document/viewdoc/?id=242
http://dev.csdn.net/develop/article/15/15645.shtm
http://dev.csdn.net/develop/article/29/29863.shtm


reven_zl 2004-10-03
  • 打赏
  • 举报
回复
kugou123具体怎么做,能说明白点吗
kugou123 2004-10-03
  • 打赏
  • 举报
回复
可能只有替换gina.dll来截获这个事件。
bit1010 2004-10-03
  • 打赏
  • 举报
回复
是不是就是为了获得类似网吧里面登录会员登录登录框的功能,有个函数可以:LockServer.用法查msdn.
reven_zl 2004-10-03
  • 打赏
  • 举报
回复
不好意思,我是指锁定桌面,就是按下Ctrl+Alt+Del的那个锁定。memory_xj说的方法确实不错,可是如果此时windows没有被锁定的话,那程序就会主动锁定windows,这样并不好。另外,最好是能够有一个什么事件能通知我的程序windows桌面被锁定了
memory_xj 2004-10-03
  • 打赏
  • 举报
回复
用LockWorkStation()函数试着锁一下试试,如果系统已锁定或没有用户已登录都会出错,用GetLastError()函数得到出错信息判断一下就可以了。呵呵~~笨方法

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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