首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何发送消息/激活SysTray应用程序?

如何发送消息/激活SysTray应用程序?
EN

Stack Overflow用户
提问于 2012-07-15 20:40:31
回答 2查看 922关注 0票数 0

我们正在尝试设置一个可以从其他地方激活的SysTray应用程序。更具体地说,激活将来自第三方应用程序,我们不能修改它,但允许我们通过它的路径激活我们自己的应用程序(加上参数/参数)。

当它被激活时,我们想要安装一个BalloonText,不涉及任何形式。

因此,我们有两个问题要解决:

  1. 让我们的SysTray应用程序只有一个实例(因为它不能生成多个实例)。
  2. 允许另一个应用程序用参数激活我们的应用程序

大量的帮助帮助学习者创建简单的SysTray应用程序(实际上,我们已经将其作为一个未连接项目的解决方案的一部分来完成)。然而,我们从来没有尝试过使它成为单一的实例。

有很多帮助帮助学习者创建单个实例Winforms应用程序(同样,我们作为其他项目的一部分完成了这一点),但总是使用常规形式的简单应用程序(不是SysTray)。我们使用VisualBasic WindowsFormsApplicationBase方法。

似乎不能将这两种方法结合到一个单一的解决方案中。

更新:

汉斯在下面回答(尤其是他的评论):

这已经用NotifyIcon来处理了,把它放到表单上。以及“做出单个实例应用程序”复选框。还有StartupNextInstance事件。你不要再假设这件事有什么特别之处

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-15 22:01:48

当您实际使用表单时,一切都变得琐碎了。把你的应用程序和设计师放在一起很简单,让你的应用程序终止,简单的避免托盘中的鬼图标,简单的创建上下文菜单,如果你需要的话添加弹出窗口很简单。

唯一不简单的事情是让表单不显示。将此代码粘贴到表单的类中:

代码语言:javascript
复制
Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
    If Not Me.IsHandleCreated Then
        Me.CreateHandle()
        value = False
    End If
    MyBase.SetVisibleCore(value)
End Sub

现在,上下文菜单中的"Exit“命令很简单:

代码语言:javascript
复制
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
    Me.Close()
End Sub
票数 1
EN

Stack Overflow用户

发布于 2012-07-15 21:43:58

至于您关于检查其他实例的第一个问题,这似乎是可行的。我使用CodeProject实例作为基线。在您的Sub例程中,您可以使用GetProcessesByName类的Process方法来检查其他实例。就像这样:

代码语言:javascript
复制
Public Sub Main()
    'Turn visual styles back on
    Application.EnableVisualStyles()

    'Run the application using AppContext
    Dim p() As Process
    p = Process.GetProcessesByName("TrayApp") 'Your application name here
    If UBound(p) >= 0 Then
        End
    End If
    Application.Run(New AppContext)

End Sub

对于第二个问题,如果您的SysTray应用程序已经在运行,您可能希望尝试一下文章 on .Net进程间通信。否则,在创建CommandLine参数时解析Sub Main中的参数。

根据上述条款:

XDMessaging库为同一盒跨应用程序域通信提供了一种易于使用的零配置解决方案.它提供了一个用于跨应用程序边界发送和接收目标字符串消息的简单API。该库允许使用用户定义的伪“通道”来发送和接收消息。任何应用程序都可以向任何通道发送消息,但它必须以侦听器的身份向该通道注册才能接收。通过这种方式,开发人员可以快速和编程地设计出他们的应用程序如何最好地相互通信和协调工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11495455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档