如何在服务(Service)程序中显示对话框
原文:http://www.vckbase.com/index.php/wv/94
服务程序(Service)一般是不能和用户进行交互的,所以他一般是不能显示窗口的。要和用户进行交互(如显示窗口),我们必须打开用户WinSta0和desktop,下面的这段代码就是打开上述两个,并显示一个dialog:
01.BOOL CServiceModule::ShowMsgDlg(void)02.{03.HDESK hdeskCurrent;04.HDESK hdesk;05.HWINSTA hwinstaCurrent;06.HWINSTA hwinsta;07. 08.hwinstaCurrent
= GetProcessWindowStation();09.if (hwinstaCurrent
== NULL){10.LogEvent(_T("get
window station err"));11.return FALSE;12.}13. 14.hdeskCurrent
= GetThreadDesktop(GetCurrentThreadId());15.if (hdeskCurrent
== NULL){16.LogEvent(_T("get
window desktop err"));17.return FALSE;18.}19. 20.//打开winsta021.hwinsta
= OpenWindowStation("winsta0",
FALSE, 22.WINSTA_ACCESSCLIPBOARD
|23.WINSTA_ACCESSGLOBALATOMS
|24.WINSTA_CREATEDESKTOP
|25.WINSTA_ENUMDESKTOPS
|26.WINSTA_ENUMERATE
|27.WINSTA_EXITWINDOWS
|28.WINSTA_READATTRIBUTES
|29.WINSTA_READSCREEN
|30.WINSTA_WRITEATTRIBUTES);31.if (hwinsta
== NULL){32.LogEvent(_T("open
window station err"));33. 34.return FALSE;35.}36. 37.if (!SetProcessWindowStation(hwinsta)){38.LogEvent(_T("Set
window station err"));39. 40.return FALSE;41.}42. 43.//打开desktop44.hdesk
= OpenDesktop("default",
0, FALSE, 45.DESKTOP_CREATEMENU
|46.DESKTOP_CREATEWINDOW
|47.DESKTOP_ENUMERATE
|48.DESKTOP_HOOKCONTROL
|49.DESKTOP_JOURNALPLAYBACK
|50.DESKTOP_JOURNALRECORD
|51.DESKTOP_READOBJECTS
|52.DESKTOP_SWITCHDESKTOP
|53.DESKTOP_WRITEOBJECTS);54.if (hdesk
== NULL){55.LogEvent(_T("Open
desktop err"));56. 57.return FALSE;58.}59. 60.SetThreadDesktop(hdesk);61. 62.//到这一步,我们获取了和用户交互(如显示窗口)的权利63.CMsgDlg
dlgMsg;64.//显示一个dialog65.dlgMsg.DoModal(); 66. 67.if (!SetProcessWindowStation(hwinstaCurrent))68.return FALSE;69. 70.if (!SetThreadDesktop(hdeskCurrent))71.return FALSE;72. 73.if (!CloseWindowStation(hwinsta))74.return FALSE;75. 76.if (!CloseDesktop(hdesk))77.return FALSE;78. 79.return TRUE;80.}如何在服务(Service)程序中显示对话框的更多相关文章
- 微信小程序中显示html富文本的方法
微信小程序中显示html富文本的方法 使用方法:git地址:https://github.com/icindy/wxParse 一.下载wxParse文件 二.在要引入的页面的js文件中,引入文件 j ...
- 在Win32程序中显示Dos调试窗口,可暂停(AllocConsole,WriteConsole,FreeConsole函数,GetStdHandle函数取得输入句柄)
在很多程序中,都可以看到程序运行中,会有一个Dos窗口,实时显示一些运行信息,这里就告诉大家是如何实现的,我们做个简单的,其实对控制台的操作还有很多,有兴趣的可以去查资料. 用到的API函数如下: / ...
- 在Win32程序中显示Dos调试窗口
在很多程序中,都可以看到程序运行中,会有一个Dos窗口,实时显示一些运行信息,这里就告诉大家是如何实现的,我们做个简单的,其实对控制台的操作还有很多,有兴趣的可以去查资料. 用到的API函数如下: / ...
- 自己主动化的在程序中显示SVN版本号
有时候会有这种情况,策划拿着应用过来提一个bug,但我们却不好确定策划的手机上装的应用相应的是那个代码版本号. 为了解决问题.我们希望能在应用上显示出当前应用所相应的代码版本号,即svn版本号. 构想 ...
- 在fragment中显示对话框出现异常
异常类型为:android.view.WindowManager$BadTokenException: Unable to add window 我在fragment中public View onCr ...
- 微信小程序中显示与隐藏(hidden)
1.wx.wxml页面部分 <view bindtap='click'>点击</view> //这是显示隐藏的部分 <view hidden="{{hidden ...
- C#在Winform程序中显示QQ在线状态
首先,引入必要的命名空间 using System.Windows.Forms; using System.Net; 其次,在Form中拖入一个PictureBox控件,并设置其SizeMode为A ...
- QT程序中显示中文字体解决办法
Qt4.7.1 默认没有中文字体库,迅为给用户提供“文泉驿”字体和配置方法.本节需要的 文件在网盘: 用一个简单测试程序说明“文泉驿”字体的配置方法. 在 Qt Creater 新建工程“nihao” ...
- select引起的服务端程序崩溃问题
现象: 某个线上的服务最近频繁崩溃.该服务使用C++编写,是个网络服务端程序.作为TCP服务端,接收和转发客户端发来的消息,并给客户端发送消息.该服务跑在CentOS上,8G内存.线上环境中,与客户端 ...
随机推荐
- Oracle中Left join的on和where的效率差别
假设有两个表a.b 使用on Select * from a left join b on b.col = a.col and b.col2 = ‘aa’ 使用 where Select * from ...
- 用JavaScript刷新框架子页面的七种方法
下面以三个页面分别命名为framedemo.html,top.html,button.html为例来具体说明如何做. 其中framedemo.html由上下两个页面组成,代码如下: < !DOC ...
- spring中controller
提示:原网站已由百度转码,以便在移动设备上查看. 第七城市 (Portal 开发读书笔记)Spring Portlet MVC 测试Controller 2012-04-28 16:32:44 - - ...
- 11g RAC R2 体系结构---用户及用户组
10.2 RAC 到11.2 RAC 用户及用户组的变化: 在10.2 RAC 的部署中,只需要一个用户(oracle)和一个用户组(dba).Database.Clusterware都是用oracl ...
- JS对Json对象Distinct
Json对象去重 今日有一个需求如下: 从数据库中取出数据源转化成json字符串绑定到隐藏域中,取出的json字符串如下: string data="[{"CompanyName& ...
- 世界级Oracle专家Jonathan Lewis:我很为DBA们的未来担心(图灵访谈)
部分节选 图灵社区:如果您的子女对计算机科学感兴趣,你会让他们选什么具体的方向呢? JL:我的孩子对计算机科学一点都不感兴趣,甚至对科学都没什么兴趣.他们主修的都是艺术.如果要我给其他的人建议的话,我 ...
- c 指针兼容性问题
指针兼容性问题: const指针不能赋值给非const指针. 非const指针可以赋值给const 指针,但前提是只是一层间接运算 Example: int *pt1; const *pt2; con ...
- backbone前端基础框架搭建
前端站点名为:site: 前端框架分为:css.js和img,框架的核心在js文件夹下: js中包括collections.models.views.lib和一个app入口js
- Ubuntu中NetBeans C/C++配置、编译
系统环境:Ubuntu 9.04软件环境:NetBeans 6.7.1 C/C++ .JDK1.6.0_16本次目的:完成NetBeans 6.7.1 C/C++ 的配置工作.编译测试及对中文支持 首 ...
- hifi/ headphone test
https://www.youtube.com/watch?v=-r0gRjqN0N8 https://www.youtube.com/watch?v=sMh_zvCw6us