Windows服务弹出MessageBox对话框

  自从Windows升级到Vista版本后,系统服务就不在允许弹出那些惨绝人寰的MessageBox了(至于为什么不让弹出,原理有点小复杂,我也不是很门清,只是略知一点,这里就不丢人现眼了,自行Google吧),但是无论多么奇葩,总有要从服务弹出MessageBox的需求,所以就参见了国内外相关秘籍,倒是有方法可以帮助我们弹出这个对话,下面是实现代码(内部函数的具体含义MSDN详细了解)。

#include <windows.h>
#include <WtsApi32.h>
#pragma comment( lib, "WtsApi32.lib" )
BOOL SvcMessageBox( LPSTR lpCap, LPSTR lpMsg, DWORD style, DWORD &result )
{

if ( NULL == lpMsg || NULL == lpCap )
  return FALSE;
result = 0;
DWORD sessionXId = WTSGetActiveConsoleSessionId();
return WTSSendMessage( WTS_CURRENT_SERVER_HANDLE, sessionXId,
              lpCap, strlen(lpCap),
              lpMsg, strlen(lpMsg),
              style, 0, &result, FALSE );

}

  在编译该代码的时候,可能vs会提示你找不到WTSGetActiveConsoleSessionId()函数,这是因为该函数是从Windows XP版本开始支持的,所以老的版本系统上没有该函数,而你的工程中却是从老的代码上升级来得,如把_WIN32_WINNT定义为0x0500,解决办法如下:
#define _WIN32_WINNT 0x0501
关于这些十六进制代表具体意义,自行MSDN吧。

注意:
  弹出对话框的是用户当前进程,所以弹出的对话框不能阻塞服务进程,服务器无法通过判断该函数的返回值来做处决定,这一点很别扭,有没有大牛遇到过该问题,请指点一二。
同时在Windows中还见到了其他的服务,弹出了如下图所示的对话框,感觉很爽,比那MessageBox用户体验要好的多,但是不知道是怎么实现的,跪求实现方法呀。

 这个如何实现呢?

Windows服务弹出MessageBox对话框的更多相关文章

  1. (转)C# Windows服务 弹出消息提醒框

    出处:http://blog.csdn.net/donghui6116773/article/details/53467069 服务(Service)对于大家来说一定不会陌生,它是Windows 操作 ...

  2. ASP.net后台弹出消息对话框的方法!【转】

          在winform后台,我们通过MessageBox.show(“消息")的方式来返回后台信息,在webform后台,我们通过Response.write(”消息")来返 ...

  3. C# 禁止 Webbrowser 控件的弹出脚本错误对话框

    当IE浏览器遇到脚本错误时浏览器,左下 角会出现一个黄色图标,点击可以查看脚本错误的详细信息,并不会有弹出的错误信息框.当我们使用 WebBrowser控件时有错误信息框弹出,这样程序显的很不友好,而 ...

  4. MFC弹出模拟对话框

    Windows对话框分为两类:模态对话框和非模态对话框. 模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继 ...

  5. [c/c++] programming之路(2)、kill QQ,弹出系统对话框,吃内存等

    一.删除文件 二.盗取密码的原理 #include<stdlib.h> //杀掉QQ,然后提示网络故障,请重新登陆,弹出高仿界面,获取账号密码,然后打开QQ进行登录 void main() ...

  6. adb 连接时候不弹出授权对话框【转】

    本文转载自:http://blog.csdn.net/sinc00/article/details/44957943 在首次使用adb connect,然后adb shell的时候,常常需要点击弹出的 ...

  7. Winforn中使用FastReport实现点击导出按钮PDF预览并弹出另存为对话框

    场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  8. JS实现弹出层对话框

    点击按钮后,弹出层对话框,可交互,点击关闭后才关闭掉对话框. 效果图: 源码: <!doctype html> <html> <head> <meta cha ...

  9. ASP.NET点击按钮弹出确认对话框方法

    开发asp.net网页应用程序的时候,有些页面的按钮需要增加一个确认对话框,比如: 实现这个功能比较简单,代码这样写: Button.Attributes["onclick"] = ...

随机推荐

  1. linux bash: sqlplus: command not found 错误处理

    在oracle用户下 ,执行sqlplus命令,抛出如上错误.   解决办法:   1.su oracle   2.cd /home/oracle   3. 执行命令 source .bash_pro ...

  2. POJ 1258 最小生成树

    23333333333 完全是道水题.因为是偶自己读懂自己做出来的..T_T.prim的模板题水过. DESCRIPTION:John竞选的时候许诺会给村子连网.现在给你任意两个村子之间的距离.让你求 ...

  3. 无需激活用户直接登入discuz

    //打开discuz/api/uc.php //synlogin方法(180行)处,往下找到 if(($member = getuserbyuid($uid, 1))) { dsetcookie('a ...

  4. 使用Chef管理windows集群 | 运维自动化工具

    但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半 ...

  5. POJ 1083 Moving Tables 思路 难度:0

    http://poj.org/problem?id=1083 这道题题意是有若干段线段,每次要求线段不重叠地取,问最少取多少次. 因为这些线段都是必须取的,所以需要让空隙最小 思路: 循环直到线段全部 ...

  6. iOS App创建桌面快捷方式

    http://www.cocoachina.com/ios/20150827/13243.html 先mark,暂时用不到

  7. 在同一个页面中加载多个不同的jQuery版本

    <!-- 从谷歌服务器加载jQuery最新版本--> <script type="text/javascript" src="http://ajax.g ...

  8. 关于Xcode调试的帖子,感觉不错,转来看看

    http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1 http://www.raywenderlich.com/10505 ...

  9. julia生成指定格式的字符串.jl

    julia生成指定格式的字符串.jl """ julia生成指定格式的字符串.jl http://bbs.bathome.net/thread-39829-1-1.htm ...

  10. setLayoutParams getLayoutParams

    继承关系:java.lang.Object ↳ android.view.ViewGroup.LayoutParams ↳ android.view.ViewGroup.MarginLayoutPar ...