如何在服务(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.
//打开winsta0
21.
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.
//打开desktop
44.
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.
//显示一个dialog
65.
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内存.线上环境中,与客户端 ...
随机推荐
- System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本
说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.ServiceModel.FaultEx ...
- 删除所有表数据的sql语句
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' EXEC sp_MSForEachTable 'ALTER TABLE ? ...
- Python脚本控制的WebDriver 常用操作 <十五> 处理Navigation Bar
下面将使用WebDriver来模拟操作:选择一个Navigation bar的选项 测试用例场景 Navigation Bar可以看作是简单的类似于tab的导航栏.一般来说导航栏都是ul+li.先定位 ...
- (转)Android Support Percent百分比布局
一.概述 周末游戏打得过猛,于是周天熬夜码代码,周一早上浑浑噩噩的发现 android-percent-support-lib-sample(https://github.com/JulienGeno ...
- Mininet安装及使用
最简单的方法是开始 下载一个预包装Mininet / Ubuntu VM . 这个虚拟机包括Mininet本身,所有预装OpenFlow二进制文件和工具,调整内核配置,以支持更大的Mininet网络. ...
- IOS 控件的生命周期
ViewController的生命周期包括: Initialize ViewDidLoad ViewWillAppear ViewDidAppear ViewWillDisappear ViewDid ...
- iTween基础之Look(使对象面朝指定位置)
一.基础介绍:二.基础属性 原文地址:http://blog.csdn.net/dingkun520wy/article/details/50578142 一.基础介绍 LookTo:旋转游戏对象使其 ...
- 打造自己的程序员品牌(摘自Infoq)
John Sonmez是Simple Programmer的创始人.作者与程序员,关注于如何让复杂的事情变得简单.他是一位专业的软件开发者.架构师与讲师,感兴趣的领域包括测试驱动开发.如何编写整洁的代 ...
- Careercup - Facebook面试题 - 5761467236220928
2014-05-02 07:06 题目链接 原题: Given an array of randomly sorted integers and an integer k, write a funct ...
- Android journey 1@关于编码风格和命名规范
/* * 1.关于编程风格:每一位程序猿可能都有自己独特的编程风格,但是有些规则是大家都必须遵守的,特别 * 是在工作的过程中,良好的代码风格能大大提高代码本身的可阅读性和维护性,也更有利于别人修改你 ...