Windows服务弹出MessageBox对话框

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用户体验要好的多,但是不知道是怎么实现的,跪求实现方法呀。

 这个如何实现呢?

时间: 2024-10-09 18:17:56

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

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

在winform后台,我们通过MessageBox.show(“消息")的方式来返回后台信息,在webform后台,我们通过Response.write(”消息")来返回后台消息,但这样需要将消息值以字符串形式显示到前台页面,是否有类似于MessageBox.show("消息")的方式弹出信息呢.我们会很快想到javascript的alert方法.通过在后台调用js来实现alert的调用.用法为:Response.write("<script>

解决每次启动都弹出UAC对话框

1.下载并安装微软官方工具 Microsoft Application Compatibility Toolkit 2.右击“Microsoft Application Compatibility Toolkit 5.5”程序组中的“Compatibility Administrator”,选择“以管理员身份运行”,单击“是”打开该工具. 3.单击工具栏上的“New”按钮,然后右击“Custom Databases”下的“New Database(1)”出现菜单,选择“Create New”下的

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

一.删除文件 二.盗取密码的原理 1 #include<stdlib.h> 2 3 //杀掉QQ,然后提示网络故障,请重新登陆,弹出高仿界面,获取账号密码,然后打开QQ进行登录 4 void main(){ 5 system("taskkill /f /im QQ.exe"); 6 system("pause"); 7 system("D:\\QQ\\Bin\\QQScLauncher.exe"); 8 } 三.弹出系统对话框 1 #

Python弹出MessageBox

ctypes import ctypes ctypes.windll.user32.MessageBoxW(0, u'内容', u'标题',0) 通过ctypes直接调用windows的API. 这种方法的好处是不用安装第三方的库,自给自足. pywin32 import win32api,win32con win32api.MessageBox(0,u'内容', u'标题' ,win32con.MB_OK) win32api是对windows API的封装,用到的常量都封装在win32con里

Android编程:底部弹出的对话框

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 开发环境:Android Studio 2.2 Preview 3 说明: 两种方法实现底部弹出的对话框: Dialog DialogFragment 推荐用DialogFragment 效果图: 布局文件dialog_select_call.xml: <?xml version="1.0" encoding="utf-8"?> &l

MFC 弹出模态对话框

在一个稍微大一点的程序中往往需要多个窗体来进行交换.有些窗体的出现是为了提醒用户注意或是为了实现一项指定功能,不希望用户在关闭这个窗口前对相应程序的其他窗体进行操作,这个时候会用到模式对话框,本文所讲的就是如何在 MFC 中创建一个最为简单的对话框,并在一定条件下以模态弹出该对话框. 第一步:创建对话框,在程序的资源视图中Dialog文件夹处右键->插入对话框 第二步:为对话框添加对应的对话框类,双击相应对话框视图->在弹出的"MFC添加类向导"中填入对话框类名->点

从仿QQ消息提示框来谈弹出式对话框

<代码里的世界> -UI篇 用文字札记描绘自己 android学习之路 转载请保留出处 by Qiao http://blog.csdn.net/qiaoidea/article/details/45896477 [导航] - 自定义弹出式对话框的简单用法 列举各种常见的对话框实现方案 1.概述 android原生控件向来以丑著称(新推出的Material Design当另说),因此几乎所有的应用都会特殊定制自己的UI样式.而其中弹出式提示框的定制尤为常见,本篇我们将从模仿QQ退出提示框来看一

Android 继承DialogFragment弹出dialog对话框一

相信现在Android软件开发员,都经常用到这种方式弹出对话框的.Android继承DialogFragment弹出dialog对话框,这样弹出有很多可以灵活处理地方,想什么启动,什么时候数据接口返回都可以,有自已layout布局,生命周期.下面看看我写demo. 本文代码下载:请点击这里 转载请注明出处: http://blog.csdn.net/qq_16064871 一.MainActivity package com.example.fragmentdialogdemo; import

弹出一个对话框并且对是和否绑定事件

  //String 是用来显示提示内容 protected void dialog(String result) { AlertDialog.Builder builder = new Builder(MainActivity.this); builder.setMessage(result); builder.setTitle("提示"); builder.setPositiveButton("确定", new DialogInterface.OnClickLi