`
mmdev
  • 浏览: 13302444 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

桌面端的移动计算(四)

阅读更多
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Launching an Application

有很多原因使你要从一个桌面程序启动设备上的一个应用程序。在下面情况下,你可以使用这个技术:

· 安装一个新版本的应用程序。简单地拷贝CAB文件到设备上,然后在设备上运行CAB安装程序来提供安装。这项技术被经常用在你想自动发布和安装应用程序更新的情况下。

注意 另一个相似的发法是自动话桌面端的安装过程,使用ActiveSync内置的功能。

· 在安装了新版本应用程序后重起你的移动应用程序。

· 开始一个设备应用程序处理新更新的数据,在更新了文本或者XML文件后。

RAPI示例程序如图4

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 292.5pt; HEIGHT: 178.5pt" type="#_x0000_t75" alt=""><img src="/Develop/ArticleImages/27/27155/CSDN_Dev_Image_2004-4-231744520.gif" o:href="http://msdn.microsoft.com/library/en-us/dnroad/html/road0324200404.gif"><font face="宋体"></font></shape>

Figure 4. The Launch Application tab of the RAPI demo program

OpenNETCF.Desktop.Communication命名空间RAPI类提供CreateProcess方法来启动一个设备文件。你希望启动的设备应用程序作为该方法的第一个参数。你可以传递一个命令行给应用程序,作为第二个参数。

btnLaunchPerform按钮的点击事件演示了CreateProcess方法。

[VC#.NET]

private void btnLaunchPerform_Click(object sender, System.EventArgs e)

{

 

// Perform the launch.

 try

 {

 if (txtLaunchFile.Text == "")

 {

 MessageBox.Show("You must provide a file to launch.",

 "No File Provided");

 }
 else

 {

 myrapi.CreateProcess(txtLaunchFile.Text, txtLaunchCommand.Text);

 MessageBox.Show("Your file has been launched.", "Launch Success");

 }

 }

 

// Handle any errors that might occur.

 catch (Exception ex)

 {

 MessageBox.Show("The following error occurred while launching the 
file -" +

 ex.Message, "Launch Error");

 } 

}

[VB.NET]

Private Sub btnLaunchPerform_Click(ByVal sender As System.Object, ByVal 
e As System.EventArgs) Handles btnLaunchPerform.Click

' Perform the launch.

 Try

 If (txtLaunchFile.Text = "") Then

MessageBox.Show("You must provide a file to launch.", _ "No File Provided");

 }

 else

 "No File Provided");

 }

 else

 {

 myrapi.CreateProcess(txtLaunchFile.Text, txtLaunchCommand.Text);

 MessageBox.Show("Your file has been launched.", "Launch Success");

 }

 }

 

// Handle any errors that might occur.

 catch (Exception ex)

 {

 MessageBox.Show("The following error occurred while launching the 
file -" +

 ex.Message, "Launch Error");

 } 

}

[VB.NET]

Private Sub btnLaunchPerform_Click(ByVal sender As System.Object, ByVal 
e As System.EventArgs) Handles btnLaunchPerform.Click

' Perform the launch.

 Try

 If (txtLaunchFile.Text = "") Then

 MessageBox.Show("You must provide a file to launch.", _

 "No File Provided")

 Exit Sub

 End If

 myrapi.CreateProcess(txtLaunchFile.Text, txtLaunchCommand.Text)

 MessageBox.Show("Your file has been launched.", "Launch Success")

' Handle any errors that might occur.

 Catch ex As Exception

 MessageBox.Show("The following error occurred while launching the file
-" & ex.Message, _

 "Launch Error")

 End Try

End Sub

接下来我们将进入最后一个RAPI有关的主题:获得系统信息。在下面的部分你将看到,RAPI类提供了一些方法用来得到连接设备的详细信息。

Retrieving System Information

得到指定的设备系统信息使你的程序能够在下面几个方面交付内容或改变功能:

· 连接设备上使用的处理器,当应用程序上传一个包含指定处理器的文件的CAB文件到设备上时。

注意 这项技术最常用的环境是当你发布应用程序到早期版本的Pocket PC设备上,例如基于ARM处理器的Windows Mobile设备。

· 运行在连接设备上的操作系统版本,根据处理器类型使用相应文件进行更新。

· 连接设备的电源状态,经常用于在使用者进入区域前,警告他们的设备运行于低电量状态下。

· 连接设备的内存状态,用于检测数据是否可以下载,如果用户下载了未被授权的应用程序或者其他内存相关函数,或者判断你是否有足够的空间安装应用程序的更新。

这部分操作的演示界面见图5

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 292.5pt; HEIGHT: 178.5pt" type="#_x0000_t75" alt=""><img src="/Develop/ArticleImages/27/27155/CSDN_Dev_Image_2004-4-231744520.gif" o:href="http://msdn.microsoft.com/library/en-us/dnroad/html/road0324200405.gif"><font face="宋体"></font></shape>

Figure 5. The Device Information tab of the RAPI demo program

RAPI类提供了四个方法来得到这些信息,GetDeviceSystemInfo (处理器类型), GetDeviceVersion (操作系统版本), GetDeviceSystemPowerStatus (电源状态) GetDeviceMemoryStatus (内存).

BtnInfoRetrieve按钮的点击事件示范了这些方法。

[VC#.NET]

private void btnInfoRetrieve_Click(object sender, System.EventArgs e)

{

 string info;

 MEMORYSTATUS ms;

 SYSTEM_INFO si;

 SYSTEM_POWER_STATUS_EX sps;

 OSVERSIONINFO vi;

// Retrieve the system information.

 myrapi.GetDeviceSystemInfo(out si);

// Retrieve the device OS version number.

 myrapi.GetDeviceVersion(out vi);

// Retrieve the device power status.

 myrapi.GetDeviceSystemPowerStatus(out sps);

// Retrieve the device memory status.

 myrapi.GetDeviceMemoryStatus(out ms);

// Format the retrieved information.

 info = "The connected device has an ";

 switch (si.wProcessorArchitecture)

 {

 case ProcessorArchitecture.Intel:

 info += "Intel processor.\n";

 break;

 case ProcessorArchitecture.MIPS:

 info += "MIPS processor.\n";

 break;

 case ProcessorArchitecture.ARM:

 info += "ARM processor.\n";

 break;

 default:

 info = "unknown processor type.\n";

 break;

 }

 info += "OS version: " + vi.dwMajorVersion + "." + 
vi.dwMinorVersion + "." +

vi.dwBuildNumber + "\n";

 if (sps.ACLineStatus == 1)

 {

 info += "On AC power: YES\n";

 }

 else

 {

 info += "On AC power: NO \n";

 }

 info += "Battery level: " + sps.BatteryLifePercent + "%\n";

 info += "Total memory: " + String.Format("{0:###,###,###}", 
ms.dwTotalPhys) +

 "\n";

// Display the results.

 lblInfo.Text = info; 

}

[VB.NET]

Private Sub btnInfoRetrieve_Click(ByVal sender As System.Object, ByVal 
e As System.EventArgs) Handles btnInfoRetrieve.Click

 Dim info As String

 Dim ms As New MEMORYSTATUS

 Dim si As New SYSTEM_INFO

 Dim sps As New SYSTEM_POWER_STATUS_EX

 Dim vi As New OSVERSIONINFO

' Retrieve the system information.

 myrapi.GetDeviceSystemInfo(si)

' Retrieve the device OS version number.

 myrapi.GetDeviceVersion(vi)

' Retrieve the device power status.

 myrapi.GetDeviceSystemPowerStatus(sps)

' Retrieve the device memory status.

 myrapi.GetDeviceMemoryStatus(ms)

' Format the retrieved information.

 info = "The connected device has an "

 Select Case si.wProcessorArchitecture

 Case ProcessorArchitecture.Intel

 info += "Intel processor." & vbCrLf

 Case ProcessorArchitecture.MIPS

 info += "MIPS processor." & vbCrLf

 Case ProcessorArchitecture.ARM

 info += "ARM processor." & vbCrLf

 Case Else

 info = "unknown processor type." & vbCrLf

 End Select

 info += "OS version: " & vi.dwMajorVersion & "." & vi.dwMinorVersion 
& "." & vi.dwBuildNumber & vbCrLf

 info += "On AC power: " & IIf(sps.ACLineStatus = 1, "YES", "NO") 
& vbCrLf

 info += "Battery level: " & sps.BatteryLifePercent & "%" & vbCrLf

 info += "Total memory: " & String.Format("{0:###,###,###}", 
ms.dwTotalPhys) & vbCrLf

' Display the results.

 lblInfo.Text = info

End Sub

到这里我们如果将桌面应用程序加入到你的移动解决方案和关于Remote API的介绍就要告以段落了。我建议你花一些时间来检验OpenNETCF.Desktop.Communication命名空间提供的其他的功能。记住,那才是所有的操作,OpenNETCF命名空间为你的应用程序提供了多种类的操作。

Back on the Road

又是一个新的月份了。春天已经来到了每个角落,我要带着我的滑水板和Pocket PC前往阳光充足的Florida。在我的下一篇文章里,我们将检验关于移动开发者更多的操作。

分享到:
评论

相关推荐

    java EE 7 & HTML5 应用开发——构建和部署同时支持桌面和移动设备的动态高性能企业级应用.rar

    Java EE 7与HTML5是现代企业级应用开发中的关键技术,它们的结合使得开发者能够构建出既适应桌面环境又能无缝支持移动设备的高性能应用程序。本文将深入探讨这两个技术领域,以及如何利用它们来创建动态且高效的企业...

    基于Java的桌面端GPA计算器.zip

    本项目是一个“基于Java的桌面端GPA计算器”,它专为学生设计,帮助他们计算学术成绩的平均绩点(GPA)。GPA是衡量学生学术表现的重要指标,对于评估学生的学业成就和未来的升学或就业具有关键作用。通过这个计算器...

    aaa.rar_远端桌面

    在IT领域,"远端桌面"是一个非常重要的概念,它允许用户通过网络连接到另一台计算机,以便进行远程控制和管理。"aaa.rar_远端桌面"可能是一个包含相关工具或教程的压缩文件,适用于初学者了解和学习远端桌面技术。 ...

    linux上下传文件及桌面管理端

    "Linux上下传文件及桌面管理端"工具提供了这样的便利性,使得用户能够轻松地在本地和远程Linux系统之间移动文件,同时也方便了对Linux桌面环境的管理。下面我们将详细探讨相关的知识点。 1. **SSH(Secure Shell)*...

    远程桌面监控系统 主程序分服务器端和客户端

    一旦连接建立,客户端可以实时地查看和控制服务器端的桌面,包括键盘输入、鼠标移动和屏幕显示等。这种功能使得远程支持、系统维护和故障排查等工作变得更为便捷。 实现这样的远程桌面监控系统,VC++作为编程语言起...

    基于朴素贝叶斯的文本分类算法的文本分类系统,该系统具有qt桌面端和web端.zip

    - 在本项目中,QT用于构建桌面端用户界面,提供交互式的文本输入、分类结果展示等功能。 - 使用QT Creator进行设计和开发,可以快速创建美观且响应迅速的应用程序。 3. **数据库**: - 文本分类系统通常需要存储...

    县级海域动态监管系统--桌面端和移动端培训考试题

    ### 县级海域动态监管系统--桌面端与移动端培训考试知识点详解 #### 一、桌面端知识点 **1. 浏览器选择** - **知识点:** 本系统的最佳浏览器支持。 - **详解:** 为了确保县级海域动态监管业务系统的正常运行及良好...

    电脑桌面壁纸网站设计计算机专业毕业论文设计.doc

    四、系统分析 * 可行性分析:在开发电脑桌面壁纸网站时,需要对网站的可行性进行分析,包括技术可行性、经济可行性、社会可行性等。 * 需求分析:需求分析是对网站的需求进行分析,包括功能需求、性能需求、安全...

    远程桌面桌面版和安卓版的对比

    本文主要探讨桌面版的RDP(Remote Desktop Protocol)远程桌面软件与安卓版RDP软件的区别,以及为何在电脑上远程连接服务器端虚拟机的视频播放效果优于安卓盒子。 首先,从开发语言的角度来看,桌面版的RDP软件通常...

    winform(C#)远程桌面

    在实现远程桌面时,我们首先要在服务器端创建一个屏幕捕获服务,这个服务能够定时截取远程计算机的屏幕图像并通过Remoting通道发送给客户端。同时,服务器端还需要处理客户端发送过来的控制指令,比如鼠标移动、点击...

    QGIS-3.28-桌面端用户手册.pdf

    ### QGIS 3.28 桌面端用户手册知识点概述 #### 一、导言 - **QGIS 3.28 更新内容:** 介绍了QGIS 3.28版本的主要改进之处,包括新特性、修复的错误以及性能优化等。 #### 二、序言 - **QGIS简介:** 对QGIS...

    C# WinForm 远程控制桌面

    3. **鼠标和键盘事件模拟**:主控端接收到用户的输入操作后,需要将这些事件转化为被控端可以理解的命令,如鼠标的移动、点击和键盘的按键。可以使用Windows消息机制(如SendMessage函数)来模拟这些操作。 4. **...

    桌面背景多个鼠标热区事件

    这个技术允许我们在计算机桌面的特定区域定义“热区”,当鼠标移动到这些区域时,会触发预设的事件或功能。这可以用于快速启动应用程序、打开文件夹、执行宏命令等,极大地提高了工作效率。 实现这一功能通常需要...

    Citrix桌面虚拟化

    - **服务器端计算模式**:适合需要高性能计算的用户,所有的计算都在服务器端完成。 ##### 2. XenDesktop - **托管桌面交付模式**:用户的所有桌面资源都托管在数据中心,通过远程协议如ICA或RDP进行访问。 - **...

    云桌面 源码 界面 窗口

    云桌面技术是现代信息技术中的一个重要领域,它将传统的桌面环境搬到云端,用户通过网络访问远程的计算资源,实现随时随地的工作和娱乐。这个压缩包提供的"云桌面 源码 界面 窗口"正是关于云桌面系统的核心组件——...

    远程桌面源码demodescode.rar

    当连接建立后,服务器端会处理客户端发送的控制指令,如键盘输入、鼠标移动等,并将这些操作实时应用到远程计算机上。同时,服务器也需要不断将桌面的更新信息推送给客户端。 压缩包内的"远程桌面源码"可能包含了...

    手机端与PC段数据同步实现!

    在IT行业中,数据同步是一个重要的概念,特别是在移动设备和桌面计算机之间。本项目"手机端与PC端数据同步实现!"旨在提供一个解决方案,使得用户在手机和PC间可以无缝地共享和更新信息,如同步联系人、日历事件、...

    智慧云桌面系统全套.rar

    2. **智能云桌面**:这里的“云桌面”指的是将计算和存储资源集中在云端,用户通过网络访问虚拟桌面环境。这种模式可以提供灵活的工作空间,减少硬件维护成本,并便于集中管理。智能云桌面可能集成了各种IPTV功能,...

    华为桌面云助力江苏移动迈向云时代.pdf

    SBC(Server-Based Computing)则通过瘦客户端计算模式,将应用程序和数据运行在服务器端,客户端设备仅负责显示和输入,这不仅提高了数据处理的安全性,还有效降低了对客户端硬件的要求。华为的GSLB(Global Server...

    电信设备-一种基于计算机和移动终端上的办公系统.zip

    在当今信息化社会,办公系统已经不再局限于传统的桌面计算机,而是逐渐向移动终端扩展,形成了一种全新的工作模式。本资料包“电信设备-一种基于计算机和移动终端上的办公系统.zip”深入探讨了这种融合了计算机与...

Global site tag (gtag.js) - Google Analytics