如何在服务(Service)程序中显示对话框
来源:互联网 发布:xcode8 mac 编辑:程序博客网 时间:2024/06/06 20:00
如何在服务(Service)程序中显示对话框
作者: ac952_z_cn
下载源代码 服务程序(Service)一般是不能和用户进行交互的,所以他一般是不能显示窗口的。要和用户进行交互(如显示窗口),我们必须打开用户WinSta0和desktop,下面的这段代码就是打开上述两个,并显示一个dialog:作者: ac952_z_cn
BOOL CServiceModule::ShowMsgDlg(void){ HDESK hdeskCurrent; HDESK hdesk; HWINSTA hwinstaCurrent; HWINSTA hwinsta; hwinstaCurrent = GetProcessWindowStation(); if (hwinstaCurrent == NULL){ LogEvent(_T("get window station err")); return FALSE; } hdeskCurrent = GetThreadDesktop(GetCurrentThreadId()); if (hdeskCurrent == NULL){ LogEvent(_T("get window desktop err")); return FALSE; }//打开winsta0 hwinsta = OpenWindowStation("winsta0", FALSE, WINSTA_ACCESSCLIPBOARD | WINSTA_ACCESSGLOBALATOMS | WINSTA_CREATEDESKTOP | WINSTA_ENUMDESKTOPS | WINSTA_ENUMERATE | WINSTA_EXITWINDOWS | WINSTA_READATTRIBUTES | WINSTA_READSCREEN | WINSTA_WRITEATTRIBUTES); if (hwinsta == NULL){ LogEvent(_T("open window station err")); return FALSE; } if (!SetProcessWindowStation(hwinsta)){ LogEvent(_T("Set window station err")); return FALSE; }//打开desktop hdesk = OpenDesktop("default", 0, FALSE, DESKTOP_CREATEMENU | DESKTOP_CREATEWINDOW | DESKTOP_ENUMERATE | DESKTOP_HOOKCONTROL | DESKTOP_JOURNALPLAYBACK | DESKTOP_JOURNALRECORD | DESKTOP_READOBJECTS | DESKTOP_SWITCHDESKTOP | DESKTOP_WRITEOBJECTS); if (hdesk == NULL){ LogEvent(_T("Open desktop err")); return FALSE; } SetThreadDesktop(hdesk);//到这一步,我们获取了和用户交互(如显示窗口)的权利 CMsgDlg dlgMsg;//显示一个dialog dlgMsg.DoModal(); if (!SetProcessWindowStation(hwinstaCurrent)) return FALSE; if (!SetThreadDesktop(hdeskCurrent)) return FALSE; if (!CloseWindowStation(hwinsta)) return FALSE; if (!CloseDesktop(hdesk)) return FALSE; return TRUE;}运行:编译生成guiser.exe, 运行guiser /service, 然后在控制面板的服务中启动该服务,将会出现一个对话框!
上述程序在win2000 professional + VC6.0 + Sp5.0 + Platform SDK 2001.8编译运行通过
如有编译不通过,请下载最新的Platform SDK
- 如何在服务(Service)程序中显示对话框
- 如何在服务(Service)程序中显示对话框(转贴)
- 如何在服务(Service)程序中显示对话框
- 如何在服务(Service)程序中显示对话框
- 如何在服务(Service)程序中显示对话框
- 如何在service中显示对话框dialog
- Android 在服务Service中创建Dialog对话框
- 如何在非Activity中启动、绑定Service(服务)
- 如何在对话框中显示一个位图
- Android如何在service中显示Dialog
- 如何在service中显示Dialog
- 如何在对话框程序中让对话框捕获WM_KEYDOWN消息
- 如何在对话框程序中让对话框捕获WM_KEYDOWN消息
- 如何在对话框程序中让对话框捕获WM_KEYDOWN消息
- 如何隐藏显示在任务栏中的对话框程序
- GAC 在“添加引用”对话框中显示程序集
- 在“添加引用”对话框中显示程序集
- 在广播接收器中显示对话框失败,并退出程序
- 重装系统,sql server 数据库 如何备份,装好系统后又如何还原?
- saveorUpdate与unsaved-value,save,update,delete
- 编写有图形界面的 Windows 服务程序
- 我是一个数学院大三的学生,想走IT路,怎么走?
- 方是民本是“方刁民”,方舟子还得要翻船
- 如何在服务(Service)程序中显示对话框
- HttpSession session = request.getSession(false);
- 基于MFC对话框的NT服务程序框架
- VC中调用外部程序方式
- jsp重定向中文乱码(get传中文)
- Servlet过滤器大全
- 编写一个带管理界面(对话框)的windows后台服务程序
- SimpleDateFormat
- 测试视频(好玩)