Windows mobile Windows Mobile是否只能在“中”的图标后显示UI;计划;点击了吗?

Windows mobile Windows Mobile是否只能在“中”的图标后显示UI;计划;点击了吗?,windows-mobile,compact-framework,Windows Mobile,Compact Framework,我有一个用C#(.NETCF)编写的应用程序,我希望它具有以下行为。 1.应用程序在后台启动,以便在设备启动时连接到服务器。 2.当用户从程序中单击图标以显示应用程序UI时。没有办法做到这一点,至少在同一流程实例中没有。您可以接近完成所需操作的唯一方法是创建两个流程。第一个是没有连接到服务器的UI的进程。第二个是您实际的UI过程。您必须设计一种进程间通信的方法(可能是套接字?)来在两者之间交换数据。您可以通过使用通知API的应用程序代码来实现这一点。通知API使您能够在任务栏或主屏幕上显示图标(

我有一个用C#(.NETCF)编写的应用程序,我希望它具有以下行为。 1.应用程序在后台启动,以便在设备启动时连接到服务器。
2.当用户从程序中单击图标以显示应用程序UI时。

没有办法做到这一点,至少在同一流程实例中没有。您可以接近完成所需操作的唯一方法是创建两个流程。第一个是没有连接到服务器的UI的进程。第二个是您实际的UI过程。您必须设计一种进程间通信的方法(可能是套接字?)来在两者之间交换数据。

您可以通过使用通知API的应用程序代码来实现这一点。通知API使您能够在任务栏或主屏幕上显示图标(如桌面windows任务栏的通知区域)。应用程序本身被最小化(隐藏)启动,如果用户单击通知图标,您可以直接显示UI或显示带有链接的气泡来显示您的应用程序

另请参见(通知图标)

另请参见(今日屏幕图标)

编辑:


选项三,也是最简单的一个:通常,windows mobile应用程序只能运行一次(单个实例)。为此,Win32 C++智能设备代码插入一些代码,检查先前启动的窗口,其窗口与当前启动实例的Type和类相同。如果是这样,C++代码就显示了Prim窗和PrimOS窗口的句柄,然后退出。在Compact Framework中也可以实现这一点,您可以在Program.cs WinMain()函数中查找以前启动的实例。如果存在以前的实例,则将ShowWindow()与找到的实例的句柄一起使用,并退出进一步的执行。通过这种方式,您的应用程序启动时最小化,但如果通过单击程序图标(或exe文件)再次尝试启动,则会出现在前台。在C#中,您需要FindWindow()和ShowWindow()PInvokes。

非常感谢您的回复。客户希望从程序列表开始,而不是从通知开始。然后只需启动应用程序。当再次在程序列表中单击时,应用程序会最小化自身并显示。我们找到了一个解决方法,应用程序启动UI并在显示后立即隐藏它,它还会启动一个线程连接到服务器,并且我们在Form.on activated callback中添加了一些代码来处理UI显示。