我有一个用 C# (.net CF) 编写的应用程序,我希望它具有以下行为。1. 应用程序在后台启动,设备启动时连接服务器。2. 当用户单击程序中的图标以显示应用程序 UI。
2 回答
您可以使用通知 API 通过应用程序代码执行此操作。通知 API 使您可以在任务栏或主屏幕上显示图标(如桌面窗口任务栏的通知区域)。应用程序本身以最小化(隐藏)启动,如果用户单击通知图标,您可以直接显示 UI 或显示带有链接的气泡以显示您的应用程序。
另见http://www.christec.co.nz/blog/archives/104(通知图标)
另请参阅http://msdn.microsoft.com/en-us/library/aa446525.aspx(今日屏幕图标)
编辑:
选项三和最简单的一个:通常一个 Windows 移动应用程序应该只运行一次(单个实例)。为此,MS Win32 C++ SmartDevice 代码插入一些代码来检查以前启动的窗口,该窗口与当前要启动的实例具有相同的标题和类。如果是这样,C++ 代码使用前一个窗口的窗口句柄和参数 SW_SHOWNORMAL) 执行 ShowWindow,然后退出。在 Compact Framework 中也可以实现相同的功能,您可以在 Program.cs WinMain() 函数中查找先前启动的实例。如果存在先前的实例,则将 ShowWindow() 与找到的实例的句柄一起使用并退出进一步的执行。这样,您的应用程序开始最小化,但如果尝试通过单击程序图标(或 exe 文件)再次启动,它将进入前台。在 C# 中,您将需要 FindWindow() 和 ShowWindow() PInvokes。
没有办法做到这一点,至少不能在同一个流程实例中。您可以接近做您想做的事情的唯一方法是创建两个流程。第一个是没有连接到服务器的 UI 的进程。第二个将是您的实际 UI 流程。您必须设计一种进程间通信方式(可能是套接字?)在两者之间交换数据。