我想创建一个VB.Net托盘应用程序,它直接启动到托盘,而不是通过隐藏的启动表单发送到那里。我找到了一篇CodeProject文章,解释了如何做到这一点,它完美无缺。它描述了如何禁用Application Framework(然后再重新启用它),因此可以将启动对象设置为带有启动代码的模块。
但是在重新启用Application Framework之后,如何以编程方式启用“Make single instance application”??
由于最初禁用了框架,因此也禁用了所有复选框,包括单个实例的复选框。我检查了以下两个命名空间,但找不到任何名为“SingleInstance”的属性,或类似或看似相关的任何属性:
System.Windows.Forms.Application
System.Windows.Forms.ApplicationContext
那怎么办呢?
供参考,以下是文章:
http://www.codeproject.com/Articles/75822/Create-a-System-Tray-Application-in-VB-NET
答案 0 :(得分:3)
您找不到“SingleInstance”属性或任何类似属性,因为它不存在。单个实例的概念是在您检查项目属性中的“创建单个实例应用程序...”框时,Visual Basic编译器为您添加的编译器魔法。如果您想将visual basic magic与仅托盘应用程序一起使用,则需要自己管理启动代码的几个部分。
您需要两段代码才能完成这项工作。
继承Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
并覆盖OnRun
方法。您将使用WindowsFormsApplicationBase的方法在此处创建托盘应用程序以提供帮助。
应用程序的Sub Main
入口点,用于创建应用程序库的实例并调用OnRun
方法。
有关WindowsFormsApplicationBase
如何运作的详情,请参阅this article。