在Windows Mobile上隐藏你的应用程序

    有时候,我们需要在Windows Mobile上做一些invisible的应用程序,使得用户无法察觉。这几天找了一些资料,请教了Jake等一些朋友,下面就做一个简单的总结。

 

1. 如何逃脱“任务管理器”?

大家知道,在Windows Mobile上做自己的应用程序,会在“设置->系统->内存->运行的程序”中显示出来。在Windows Mobile 6.1以后,则由“设置->系统->任务管理器”代替了。如下图1所示:

1

    有什么方法,能够使得应用程序不显示在应用程序列表中呢?下面提供两种方法,一种是偷懒的方法,另一种是正规的方法。

 

A. Form设计方法

    这是一种比较偷懒的方法,为什么这么说?因为我们仅仅需要在visual studio开发环境中,对Form设计进行简单的编辑,就可以实现我们的需求。闲话少说,直接上图。如图2所示,在Form设计窗口中,选中Form,查看其Properties,就可以发现有“Text”一项,这项功能是充当Form的标题,如果我们把其中的文字“Form1”去掉,在对应的设计窗口中,我们就可以发现,Form1已经不见了。

 

2

    Deploy程序到模拟器中,我们就无法在任务管理器中发现Demo的影子了。如下图3所示。

 

3

    在任务管理器中是找不到我们应用程序的信息了,还有一个问题:如何让程序运行于后台,在应用程序启动的时候,不让Form显示出来?

    这个可以通过FormActivated事件来解决,即在该事件中,把Form隐藏掉。如下图4所示,在Form的事件中,添加Activated事件响应函数如下:

private void Form1_Activated(object sender, EventArgs e)

{

     this.Hide();

}

 

4

 

B. 利用Service.exe

    和.NET Framework一样,.NET CF不提供托管类来创建Windows Services。在CodePlex上,PeterNowak,创建了一个轻量级的dll动态库,通过它,我们就可以利用托管代码来创建Windows Mobile上的Services了。具体大家可以参考文章:Managed Services for Windows Mobile。在程序运行时,我们无法在“Running Programs”中找到应用程序信息,如图5所示:

 

5

    把Cellular Emulator和模拟器连接以后,在模拟器上给Cellular Emulator拨打电话,如图6所示:

 

6

    利用File Explorer,在设备的“My Device”下,我们找到了phonelog.txt文件,打开该文件,我们就可以查到刚才拨打电话的信息,如图7和图8所示。

 

7

 

 

8

 

2. 开机自启动

如何让我们的应用程序在设备开机的时候,自动加载运行呢?在codeproject上,MVP Joel Ivory Johnson写了一篇文章《Automatically Starting Your Application on Windows Mobile》,在“A program launches at device power up”这一节中我们可以找到需要的答案。

文章提供了两种方法:

A.在设备的\Windows\StartUp文件夹中,放置应用程序的快捷方式。

B.将应用程序拷贝到设备的\Windows文件夹,然后修改注册表,在HKEY_LOCAL_MACHINE\Init中加入新的内容,如下图9所示:

 

9

    这样,在设备重启时,应用程序就会自启动了。

 

参考链接:

1Managed Services for Windows Mobile

2Automatically Starting Your Application on Windows Mobile

posted on 2010-07-30 16:46  施炯  阅读(2781)  评论(14编辑  收藏  举报