XP系统登录前的桌面是winlogon吗?这个跟ctrl+alt+delete后出来的桌面是同一个吗?

Sodar 2008-01-10 11:28:57
XP系统登录前的桌面是winlogon吗?这个跟ctrl+alt+delete后出来的桌面是同一个吗?

我现在需要能够得到这两种情况下(登录系统前和锁定界面)获得焦点的按钮或控件信息,
从网上查到的应该是winlogon这个窗口,可是不知道怎么做,请各位指教一下?

要得到系统登录前的事件消息,我现在是用一个系统服务的方法,服务能够启动,但得不到任何焦点的事件:(
...全文
184 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
内存泄漏 2008-01-14
你需要将你线程所在的桌面设为winlogon桌面..在你程序的开始按下面这样做试试:

//打开Winlogon桌面
HDESK hDesk = OpenDesktop("Winlogon",0,FALSE,MAXIMUM_ALLOWED);
SetThreadDesktop(hDesk);
CloseHandle(hDesk);

  • 打赏
  • 举报
回复
jwybobo2007 2008-01-14
是的哦.
  • 打赏
  • 举报
回复
Sodar 2008-01-14
谢谢楼上各位,学了很多。

  • 打赏
  • 举报
回复
cen_jin_long 2008-01-13
可骒不同。
  • 打赏
  • 举报
回复
sxcong 2008-01-11
“盲人用的屏幕阅读软件”
佩服,支持
对这个不太懂,不过见过瑞星在widnows起动时有个窗口出现,根据这个原理应该可以实现。瑞星是用驱动做的,想做到这个估计要了解一下驱动。顺便说一下,SetWinEventHook之类的ring3级函数,一般的杀毒软件都有提示,好象不允许用了,现在一般都采用驱动进行hook 和注入。
  • 打赏
  • 举报
回复
Sodar 2008-01-11
jameshooo,非常感谢

我想实现的是不是自动登录系统,而是在焦点切换时得到当前拥有焦点的按钮的信息。
如按下ctrl+alt+del后出现的窗口中有“锁定计算机”、“注销”、“关机”等按钮,每按下一次TAB键,焦点就切换一次,我想得到拥有焦点的按钮的标题。

不知道SetWinEventHook以及键盘钩子在Winlogon桌面上能不能用?

另外,我通过一个服务程序,发现在Winlogon桌面下有这么几个窗口,分别是干什么的呢?
Desktop: Winlogon
Window: Winlogon 標準控制對話方塊
Window: MCI command handling window
Window: SAS window
Window: Default IME
  • 打赏
  • 举报
回复
jameshooo 2008-01-11
winlogon整个界面都是DirectUIHWND窗口,你无法得到里面的子窗口,必须做一个服务进程来判断当前桌面是winlogon还是default。服务程序通过调用SetConsoleCtrlHandler来登记接收一些系统通知,包括CTRL_LOGOFF_EVENT通知。如果你需要用服务进程来自动登录,需要LsaRegisterLogonProcess把服务进程注册成可登录进程,调用LsaLogonUser执行登录
  • 打赏
  • 举报
回复
Sodar 2008-01-11
我正在做一个盲人用的屏幕阅读软件。

现在在登录到windows以后所有的按钮、菜单等都可以通过Event Hook得到其文本并通过TTS阅读出来,
但是一直有一个很大的困难就是在登录之前的windows窗口(选择登录用户),以及按ctrl+alt+del出来的窗口中得不到任何事件。所以这两个地方盲人一直没有办法使用。

不知道是不是Event Hook在这些界面中无法使用?
  • 打赏
  • 举报
回复
jameshooo 2008-01-11
是winlogon桌面。你想得到什么消息?
  • 打赏
  • 举报
回复
Sodar 2008-01-11
大家帮忙啊~
  • 打赏
  • 举报
回复
相关推荐
发帖
进程/线程/DLL
加入

1.5w+

社区成员

VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
申请成为版主
帖子事件
创建了帖子
2008-01-10 11:28
社区公告
暂无公告