- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在编写一个监视状态的程序。它启动主窗口 (LoginForm) 以询问用户凭据,然后隐藏表单。在 LoginForm 初始化 NotifyIcon 之后,所有剩余的工作都在隐藏 LoginForm 的情况下完成。我已经在 LoginForm 的 FormClosing 事件中实现了所有清理工作。在正常退出过程中,一切正常。
问题是该程序一直位于托盘中,我往往会忘记在关闭 Windows 之前退出它 - 程序不会在关闭事件时保存状态。
我已经阅读了许多论坛和文档,并且从我所阅读的内容来看,事件 FormClosing/FormClosed + SessionEnding/SessionEnded 无论如何都必须触发。但看起来他们就是不开火。甚至不能在 SessionEnding 中取消关闭(使用愚蠢的 e.Cancel=true)——程序没有到达那个地方就消失了。
我为自己制作了一个小型调试库,用于将调试信息写到一个文件中,并立即刷新缓存。我已将调试消息添加到所有事件。当我尝试在 Windows 中注销用户(与关闭相同)进行测试时 - 我通常看不到任何事件被触发,只是程序消失了。没有我能捕捉到的异常,没有事件等。当手动或通过“taskkill/IM”退出程序时——我看到了所有预期的调试打印输出。更有趣的是 - 有时程序确实会到达关闭事件并在 Windows 关闭期间进行适当的清理工作。
已经在这上面浪费了几天时间。按照 MS 文章中的建议覆盖 WndProc - 程序也不会到达 WndProc(以确保它在关闭表单之前先出现)。尝试代替 FormClosing 事件来覆盖 LoginForm 的 OnClosing - 运气不好。添加了 UnhandledException 处理程序、Microsoft.Win32.SessionEnding、Microsoft.Win32.SessionEnded、Form.FormClosing、Form.FormClosed 事件处理程序 - 运气不好。
我怀疑这要么是隐藏表单的问题,要么是仅在关闭期间发生了某种异常(资源已处理?)。我怎样才能找到为什么会这样?是否有一些简单的方法可以模拟单个应用程序的 Windows 关闭,以便在 VS 中进行调试?我已经尝试过 RMTool - 由于某种原因它无法模拟关机并且程序只是忽略它。
更新:程序使用 System.Timers.Timer 定期轮询服务器是否有任何更改。
最佳答案
我对此做了一些研究,基本上,在 Windows XP 之后,他们改变了处理关机的方式。
您不能使用 form_closing 事件等可靠地阻止或捕获关闭事件。
您必须使用新的 API 才能这样做。这里有一个完整的例子:http://bartdesmet.net/blogs/bart/archive/2006/10/25/Windows-Vista-2D00-ShutdownBlockReasonCreate-in-C_2300_.aspx
您应该能够调用该函数来阻止关闭(显示诸如“正在保存更改...”之类的消息),然后在后台保存并退出您的应用程序。一旦您的程序退出,它应该允许 Windows 继续关闭。
关于C# WinForms Tray 应用程序 - 不捕获 Windows 关闭事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34136460/
我正在尝试创建一个Windows窗体应用程序,在该应用程序中,我希望在系统托盘上动态显示一些文本,而不是应用程序图标。我使用下面的代码从文本创建了一个位图图像,它将用于在系统托盘中显示。但空格不足以显
根据 http://msdn.microsoft.com/en-us/library/bb773352(v=vs.85).aspx 处 NOTIFYICONDATA 结构的 guidItem 成员的描
这有效: tray.displayBalloon({ title: 'my app', 'content': 'Access app settings from tray menu.' }); 这不是
在 Swing 中如何计算桌面的大小(不包括系统托盘)?我想调整应用程序框架的大小以填充该大小。 Toolkit.getScreenSize() 返回包含系统托盘的尺寸。 最佳答案 尝试 Graphi
我正在尝试使用 QZ-Tray 打印条码但是我似乎找不到一个很好的例子,我试过这里的代码 https://groups.google.com/forum/#!topic/qz-print/5ybFBj
我正在尝试使用 QZtray 2.0 打印 HTML 文件。文件正在页面左侧打印。我也设置了高度和宽度,但同样的问题。 function printHTML() { var printData
尝试加载 WAMP 服务器时出现错误: The configuration file contains a syntax error on line 0; [EParseError] No tray
更改我的应用程序图标后,“最近的应用程序托盘”中的图标仍然是 Android 的默认设置。我想改变它,但找不到任何方法。我曾经使用过的每一个应用程序都有它自己的图标(尽管注意到他们中的一些人把他们的旧
现在,代码循环遍历每个打印机来源以获取纸张来源名称 Tray 2 有没有比遍历所有源更快的方法?打印速度很慢,因为我相信代码每次都在为每个纸张来源与打印机通信。由于这是网络打印机,打印可能需要一分钟!
我已经通过互联网上的许多提示和技巧来解决 Wampserver Aestan Tray Menu 错误,但没有找到任何解决方案。 我从控制面板取消选中 IIS。安装了最新版本的 Microsoft .
我刚刚下载并安装了 WAMP,当我打开它时,我收到一个警告框 Aestan Tray Menu has stopped working -"A problem has caused program t
我正在制作纸盘应用程序,并且尝试显示一个基本通知: 我的main.js文件和package.json在下面: 我的app/main.js文件 const path = require('path')
我需要编写一个程序,该程序在最小化时位于系统托盘中,我将使用 Java 6 的 SystemTray API 来完成此操作。 当用户按下某个热键时,如何让该应用程序进入前台? 例如,应用程序正在运行但
有谁知道在应用程序失去焦点(按下主页按钮时)后如何让音频流播放(从 AVPlayer 组件中的 webview 或)?在 iOS 4.2 中。我知道我必须阅读有关多任务处理的内容,但如果您能针对该特定
我正在编写一个监视状态的程序。它启动主窗口 (LoginForm) 以询问用户凭据,然后隐藏表单。在 LoginForm 初始化 NotifyIcon 之后,所有剩余的工作都在隐藏 LoginForm
我想在使用 Java 打印时指定输入箱。我找到了应该对应于输入箱的 MediaTray 类: The following standard values are defined for input-t
关于如何使用 SWT 获取系统托盘 (Tray) 或其上的项目 (TrayItem) 的位置的任何想法?从显示器获取边界只会给我整个屏幕的边界。即 item.getDisplay().getBound
是possible使用 AppIndicator3 创建带有菜单的托盘图标。但是这个解决方案是不可移植的。例如it doesn't work on FreeBSD因为这个系统上没有 libappind
有谁知道是否可以(如果可以,怎么办?)将 Shoes 应用程序放入 MS Windows 系统托盘中? 类似于使用最小化将窗口放入系统托盘。 最佳答案 完成!配绿色鞋子,见 sample54.rb 关
如何在 Qt 中正确实现“最小化到托盘”功能? 我在 QMainWindow::changeEvent(QEvent *e) 中尝试了以下代码,但窗口只是最小化到任务栏,并且客户区在恢复时显示为空白。
我是一名优秀的程序员,十分优秀!