在 Windows 7 中使用 .NET Windows 服务显示消息框

2024-01-02

在 Windows 7 中使用 .NET Windows 服务显示消息框

我们有一个 Windows 服务,用于在用户在 Windows XP 上扫描访问卡后显示确认消息框,但一旦我们迁移到 Windows 7,该弹出功能就不再起作用。正如这篇文章中所描述的在 Windows 7 中使用 .NET Windows 服务显示消息框 https://stackoverflow.com/questions/18528670/displaying-message-box-using-net-windows-services-in-windows-7,我已按照说明进行操作,当我将应用程序作为控制台应用程序运行时,它可以工作,但是当我将其安装为 Windows 服务时,它无法工作。下面是我的代码。 result 变量返回 false,err 变量返回 5。

class Class1
{
    public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
    public static int WTS_CURRENT_SESSION = -1;
    public void test()
    {
        bool result = false;
        string title = "Hello";
        int tlen = title.Length;
        string msg = "Terminal Service!";
        int mlen = msg.Length;
        int resp = 0;

        result = WTSSendMessage(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, title, tlen, msg, mlen, 0, 0, out resp, true);
        int err = Marshal.GetLastWin32Error();
        System.Console.WriteLine("result:{0}, errorCode:{1}, response:{2}", result, err, resp);

    }

    [DllImport("wtsapi32.dll", SetLastError = true)]
    static extern bool WTSSendMessage(
        IntPtr hServer,
        [MarshalAs(UnmanagedType.I4)] int SessionId,
        String pTitle,
        [MarshalAs(UnmanagedType.U4)] int TitleLength,
        String pMessage,
        [MarshalAs(UnmanagedType.U4)] int MessageLength,
        [MarshalAs(UnmanagedType.U4)] int Style,
        [MarshalAs(UnmanagedType.U4)] int Timeout,
        [MarshalAs(UnmanagedType.U4)] out int pResponse,
        bool bWait);

    [DllImport("Kernel32.dll", SetLastError = true)]
    static extern int WTSGetActiveConsoleSessionID();

}

您已声明 WTSGetActiveConsoleSessionId 但从未调用过它。该函数返回当前活动的会话 ID。这是您必须传递给 WTSSendMessage 的会话 ID。

您当前的代码正在尝试在服务会话(会话 0)中显示消息。这不是您想要的。

不过,在调用该函数之前,必须更正其声明。您拼写错误。它被命名为 WTSGetActiveConsoleSessionId。

我认为字符串长度参数需要考虑零终止符。将 1 添加到您传递的值中。如果您切换到 Unicode API,那么您必须将这些值乘以 2,因为它们以字节而不是字符为单位。

还有一点。仅当 API 调用失败时询问错误代码。因此,在您的代码中,如果结果为 false,则必须仅调用 Marshal.GetLastWin32Error。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 7 中使用 .NET Windows 服务显示消息框 的相关文章

  • 调试VS 2005提示“操作不支持”

    我一直在调试 VS 2005 并将 启动外部程序 设置为 C Program Files Microsoft Visual Studio 10 0 Common7 IDE devenv exe 但按 F5 后出现此错误 尝试运行项目时出错
  • .NET 中非常奇怪的 SSL 错误:仅针对特定 URL 无法解密指定数据

    我正在使用 NET 从 URL 下载数据 对于大多数 URL 它都没有问题 但对于一个特定的 URL 当我尝试建立连接时 我收到一个非常奇怪的错误 此外 该错误仅在第二次 及后续 尝试发出请求时发生 第一次似乎总是有效 这是一些演示该问题的
  • .NET 紧凑框架中的信号量

    不幸的是 使用 NET Compact Framework 时 System Threading 中没有信号量 我不确定为什么会这样 有人有想法吗 经过谷歌搜索后 我发现很多人给出了他们自己的实现 但他们中没有一个真正工作得很好 或者根本没
  • 使用另一个 MEF 程序集中的类而不引用它

    我有 2 个 MEF 组件 设其为A成分和B成分 我需要的是能够从组件 A 中的组件 B 访问一个类 而不需要引用它 然后我想手动实例化该类的对象 目前我看到 MEF 允许使用 Import 自动实例化对象 它使用需要引用的接口 我可以使用
  • 在实体框架 6 中使用 SqlQuery>

    我正在尝试在 EF 6 中执行 SQL 查询 select查询返回两个字符串列 例如select a b 并且可以有任意数量的行 我想将结果映射到字典 但我无法摆脱以下错误 错误 1 无法将类型 System Data Entity Inf
  • 如何避免用户帐户控制或在Win7中始终以管理员模式运行Windows应用程序

    在 WinForms 应用程序中 当我的应用程序启动时 将出现 用户帐户控制 对话框 仅在 Windows 7 中 任何人都可以建议我如何以编程方式避免这种情况 也就是说我的应用程序应该始终以管理模式启动 或者是否有任何选项可以阻止此对话框
  • 如何在 TeamCity 的 .NET 项目中包含解决方案目录之外的依赖项

    我的解决方案目录之外有类库 因此我在 sln 文件 SomeDependency csproj 中有这样的引用 在 VS 中一切正常 但在尝试构建我的解决方案时 TeamCity 失败了 我猜它复制了所有解决方案目录 因此关系不再存在 这是
  • 我可以在 Windows 服务中托管(自托管)WCF 服务并通过 http 公开它吗?

    我是 WCF 新手 这可能吗 如果通过外部 Web 应用程序使用它 最好使用 IIS 和 http 即由 ASP NET MVC 应用程序托管的服务 吗 是的 您可以在 Windows 服务中托管 WCF 服务 http msdn micr
  • PreRequestHandlerExecute 中的会话为空

    在我的 ASP NET 4 0 应用程序中 我在 global asax cs 中有一个 PreRequestHandlerExecute 的事件处理程序 我想访问会话中的数据 大多数时候 会话是被定义的 但有时它是空的 有人可以解释一下什
  • ListView onScroll 事件

    我正在编写一个简单的 C 应用程序 我需要 Listview 上的 onScroll 事件 所以我创建了ListviewEx类继承原来的ListView 我找到了如何从 WinAPI 检测滚动消息 并修改了 WndProc 方法 现在我有这
  • Mono 实现 CLR 吗?或者至少有一些非托管的内部调用?或无?

    我们知道 C 使用非托管代码 如 P Invoke 或 CLR 实现的代码 如 InternalCall 我想知道的是 mono 它自己实现了一个完整的 CLR 还是只是一些非托管代码或者什么都没有 我可以使用 Net Reflactor或
  • 为什么 C# ProcessStartInfoRedirectStandardOutput 会导致 xcopy 进程失败

    这有点痛苦 因为我现在没有代码 但我会尽力解释 我有一个简单的 C 应用程序 它启动 Ruby 脚本 它还执行一些其他操作 因此它生成一个批处理文件并执行该文件 我正在使用 C 进程对象并设置以下内容 重定向标准输出 true 重定向标准错
  • Visual Studio Intellisense 颜色编码不起作用

    现在 在我的代码中 突然有些代码的颜色未编码为 Visual Studio 经典主题颜色 我不确定我的代码中是否存在错误 但是当我定义某些属性时 例如 public class VideoEncodeTest AndroidPowerTes
  • C# 最小化所有打开的窗口

    我在论坛上看到了这个 C 代码 它最小化了所有打开的窗口 define MIN ALL 419 define MIN ALL UNDO 416 int main int argc char argv HWND lHwnd FindWindo
  • C# HTTP 请求解析器[重复]

    这个问题在这里已经有答案了 可能的重复 将原始 HTTP 请求转换为 HTTPWebRequest 对象 https stackoverflow com questions 318506 converting raw http reques
  • 如何更改特定元素的 XML 命名空间

    我有一些通过某些 WCF 消息的 xmlserialization 生成的 xml 集 现在我想创建一个通用方法 在其中提供 xml 文件名和前缀 例如mailxml12 然后在 xml 文件中 那些名称中没有任何命名空间前缀的元素应替换为
  • 构建 Internet Explorer 扩展/附加组件?

    我想为 IE 7 8 构建一个浏览器扩展 我想使用 NET 来做到这一点 您知道我可以参考哪些资源或教程来执行此操作吗 我还没有发现太多 Thanks JP 使 IE 扩展难以开发的主要问题之一是需要使用 C 或 NET 进行开发 另一方面
  • 从 WCF REST 获取错误详细信息

    我有一个由 Net WCF 客户端使用的 REST 服务 遇到错误时 REST 服务会返回 HTTP 400 错误请求 响应正文包含 JSON 序列化详细信息 如果我使用 Fiddler Javascript 或直接从 C 执行请求 我可以
  • VLC 媒体播放器有 C# 界面吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否可以使用 C 控制台应用程序中的包装器从 VLC 播放中当前播放的文件中读取曲目统计信息 时间 标
  • 如何从字符串中提取子字符串直到遇到第二个空格?

    我有一个像这样的字符串 o1 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 如何仅提取 o1 1232 5467 要提取的字符数并不总是相同 因此 我只想提取直到遇到

随机推荐

  • C 中空结构的大小是多少?

    据我说 它是零 但似乎有点混乱here https stackoverflow com questions 1626017 why sizeofspinlockt is greater than zero on uni processor
  • 通过套接字使用 boost 发送和接收压缩文件

    在我的项目中 通过套接字读取和写入消息是使用 boost 的 Zlib 过滤器进行压缩的 我想知道如何执行相同的操作files 有什么更好的方法可以提高速度 不使用硬盘将数据保存在缓冲区中 我在使用 boost 传输文件时遇到问题 因此欢迎
  • 带有关闭按钮的 Angular UI Bootstrap 弹出框

    我正在使用 Angular UI Bootstrap 创建弹出窗口 但我找不到在弹出窗口内添加关闭按钮的选项 我自定义了弹出框模板以包含关闭按钮 但我仍然无法找到关闭弹出窗口的函数 事件 环境isOpenfalse 第一次起作用 因为它只是
  • 如何在 PHP-CS-Fixer 中配置 HeaderCommentFixer

    我想用HeaderCommentFixer https github com FriendsOfPHP PHP CS Fixer blob 1 12 Symfony CS Fixer Contrib HeaderCommentFixer p
  • 将 Github 页面重定向到自定义域

    我创建了一个 Github Pages 站点 并将其放在 github 帐户的存储库 abc 上 用户名为 xyz 所以 我的网站现在位于 xyz github io abc 我使用自定义域创建了一个 cname 文件 并使用 Github
  • ClojureScript:如何通过原型向 JS 对象添加方法?

    我正在尝试向现有的 JavaScript 系统添加一些功能 然后再次从 JavaScript 使用 而不是在 ClojureScript 命名空间内 也许这是不可能的 这是我想做的事情的简化 JavaScript String protot
  • 无法使用 Express.js 更改 Favicon

    这是一个非常基本的问题 但我正在尝试使用以下命令更改我的 node js Express 应用程序的图标 app use express favicon dirname public images favicon ico 我仍然得到默认的图
  • 为什么不让每个节点都成为种子节点

    我是卡桑德拉新手 我了解种子节点的用途 但是种子节点有任何相关成本吗 如果是这样 它们是什么 另外 我想知道为什么不让每个节点都成为种子节点 作为种子 基本上没有本地运行时成本 除了您可能会比非种子节点收到更多的八卦流量之外 然而 随着种子
  • 如何通过进程生成器在 4-5 秒后停止执行命令?

    参考代码 ProcessBuilder ps4 Process pr4 null String batchFile3 new File path src example sh ps4 new ProcessBuilder batchFile
  • PyQt:使用不同的 ItemIgnoresTransformations 标志移动多个项目

    有时选定的项目不会一起移动 这种情况发生在具有两种类型项目的应用程序中 常规物品 处理 与ItemIgnoresTransformations标志 缩放时它们必须保持相同的大小 当它们一起被选择并用鼠标移动时 它们预计会被平移相同的量 它们
  • 有没有办法使用 CSS 使子 DIV 的宽度比父 DIV 宽?

    有没有办法让父容器 DIV 中的子 DIV 比其父容器宽 子 DIV 需要与浏览器视口的宽度相同 See example below 子DIVmust保留为父 div 的子级 我知道我可以在子 div 上设置任意负边距以使其更宽 但我无法弄
  • 必须在我的 Rails 3 应用程序的控制器操作中显式渲染 :layout => 'application'

    我必须在控制器操作中显式渲染 layout gt application 才能让我的新 Rails 3 应用程序实际使用 application html erb 布局文件 有什么明显的事情可以看出我做错了吗 如果我不调用 layout 选
  • 使用 Keras,如何输入 X_train 图像(超过一千张图像)?

    我的应用程序是使用机器学习 卷积神经网络 的事故避免汽车系统 我的图像是 200x100 JPG 图像 输出是 4 个元素的数组 汽车将向左 向右 停止或前进 所以输出将让一个元素成为1 根据应采取的正确行动 和其他 3 个要素将是0 我现
  • JavaScript 数组到 CSV

    我关注了这个帖子如何将 JavaScript 数组信息导出到 csv 在客户端 https stackoverflow com questions 14964035 how to export javascript array info t
  • 模型内的简单验证规则

    我在这里提到Laravel 4 2 验证规则 当前密码必须与数据库值匹配 https stackoverflow com questions 24830119 laravel 4 2 validation rules current pas
  • 根据父级 div 大小按比例调整图像大小

    我正在使用全浏览器宽度高度 jquery blockUI 来显示从图库中选择的图像 下图是 blockUI 中的视图方案 基本上侧块 UI 中的视图的宽度和高度设置为 100 里面还有两个 div 右侧的宽度设置为视图的 80 并且包含图像
  • 以编程方式更改“默认使用此操作”

    我有普通的 电话 拨号器和新的 拨号器 应用程序 现在 如果我选中 默认情况下使用此操作 并单击 拨号器 应用程序 那么每次按下电话按钮时 拨号器 应用程序都会自动启动 但我怎样才能在代码中改变它呢 此首选项存储在哪里 这是如何映射的 这是
  • 计算椭圆尺寸与距中心点距离的关系

    我想在每次崩溃时实现尺寸的缓慢消失 换句话说 当圆最大时 椭圆的尺寸也最大 反之 收缩时则相反 到目前为止 我试图通过从中心点的距离重新映射 cSize 来实现这种影响 但在此过程中的某个地方出了问题 目前 我的椭圆尺寸正在从小到大的缓慢过
  • 通过正则表达式获取模式的不匹配部分

    在本主题中 想法是 剥离 数字 除以x通过正则表达式 gt 如何使用 Excel 正则表达式从字符串中提取广告尺寸 https stackoverflow com questions 48427343 how to extract ad s
  • 在 Windows 7 中使用 .NET Windows 服务显示消息框

    在 Windows 7 中使用 NET Windows 服务显示消息框 我们有一个 Windows 服务 用于在用户在 Windows XP 上扫描访问卡后显示确认消息框 但一旦我们迁移到 Windows 7 该弹出功能就不再起作用 正如这