如何在Windows Mobile上设置网络管理设置或使对话框显示在C#中?

如何在Windows Mobile上设置网络管理设置或使对话框显示在C#中?,c#,.net,windows-mobile,compact-framework,C#,.net,Windows Mobile,Compact Framework,在Windows Mobile中,当您打开Internet Explorer并键入设备无法连接的URL时,系统会通知您这一点,并提示您(手动)导航到屏幕,在该屏幕上,您可以作为用户对此进行操作(网络管理),如下所示: 但是,如果.NET Compact Framework应用程序尝试连接到Web服务,但无法访问Web服务URL,则不会出现“无法连接”气泡,相反,对Web服务的调用将失败。有时,我们在电话中通过以下过程与客户交谈: 然后他们还有两步要走 问题1:是否可以编程控制(用C#)网络管

在Windows Mobile中,当您打开Internet Explorer并键入设备无法连接的URL时,系统会通知您这一点,并提示您(手动)导航到屏幕,在该屏幕上,您可以作为用户对此进行操作(网络管理),如下所示:

但是,如果.NET Compact Framework应用程序尝试连接到Web服务,但无法访问Web服务URL,则不会出现“无法连接”气泡,相反,对Web服务的调用将失败。有时,我们在电话中通过以下过程与客户交谈:

然后他们还有两步要走

问题1:是否可以编程控制(用C#)网络管理屏幕上的两个组合框设置为什么?

通常,解决客户的连接问题需要摆弄这两个盒子,直到它们能够连接。问题是,由于客户可以自由地在这里更改他们的网络内容,我常常不知道该告诉他们将其设置为什么(“它说什么?”这是我经常说的)。从我到目前为止的搜索来看,这看起来像是DMProcessConfigXML实现的方式,但到目前为止我所知道的是,您调用此方法并向其传递一些XML

问题2:是否可以通过编程(C#)触发“无法连接”气泡,或者更好的是,是否可以通过编程立即显示网络管理屏幕?

据推测,如果我的代码看不到webservice URL,可能会触发气泡或直接进入屏幕。

您需要使用API建立连接。事实上,您可以设置一个标志来停止错误通知

是一篇关于如何在wininet中使用连接管理器的文章。我假设您必须P/调用API

我的一个建议是,尽可能多地抽象使用连接管理器,而尽可能少地使用连接管理器。连接管理器使用起来不是很好,我想Windows Mobile的未来版本中会删除当前的接口

更新:

从本机代码调用非常容易。我再次假设将此函数的P/Invoke转换为C#应该不会太糟糕。下面的链接将看到一个简单的示例,该示例将其称为DMProcessConfigXML。had部分正在从microsoft文档中找出要发送的xml

基本上,您需要在任何可以配置的区域浏览MSDN文档。如果您正在研究网络设置,我个人不会打扰您。这是一个巨大的混乱局面,实际上只适用于为特定移动运营商和/或公司网络WIFI设置代理设置。如果您想设置通用GPRS/Wifi连接,就没那么容易了

更新2: 我应该更仔细地阅读这个问题,我认为答案是否定的“修改网络选项”,但“是”创建全新的网络设置。如果我正确理解规范的话。我只是玩弄建立网络


希望有帮助。

在回答问题2时,此代码将显示连接控制面板:

Process.Start(@"\windows\ctlpnl.exe", "cplmain.cpl,19");
许多内置设置小程序通过ctlpnl.exe显示。我从列表中得到了这个神奇的数字,不确定它是否有用,因为您仍然需要引导用户完成其余的通信设置

关于您的问题1,我使用了DMSPoCuthCopyXML和CONFIG管理器安装CAB来配置COMS设置(当然是从C++中,但看看API,它应该是简单的,如尚恩·斯蒂芬·菲南所建议的那样调用/调用)。这是一段时间以前的事了,所以我现在手头没有任何例子,但我们确实有了它来创建新的网络设置并切换这些下拉列表以选择新的设置。稍后我将看看是否能找到一个XML示例

似乎不需要p/Invoke,它是Microsoft.WindowsMobile命名空间中调用DMProcessConfigXML的托管包装器

我仍然在寻找合适的xml发送给它,很可能是CM_网络、CM_Planner和其他一些的组合。。。细节都很详细,但文档有点棘手,无法确定什么是什么,我记不起来了,因为那是很久以前的事了:(

好的,经过一点实验(因为我没有找到xml),这里有一些xml可以传递给ConfigurationManager.ProcessConfiguration,它将更改两个设置:

<wap-provisioningdoc>
  <characteristic type="CM_ProxyEntries">
    <characteristic type="HTTP-{ADB0B001-10B5-3F39-27C6-9742E785FCD4}">
      <parm name="SrcId" value="{ADB0B001-10B5-3F39-27C6-9742E785FCD4}" options="My Work Network{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}My ISP{ADB0B001-10B5-3F39-27C6-9742E785FCD4}Work{A1182988-0D73-439E-87AD-2A5B369F808B}Secure WAP Network{F28D1F74-72BE-4394-A4A7-4E296219390C}The WAP Network{7022E968-5A97-4051-BC1C-C578E2FBA5D9}The Internet{436EF144-B4FB-4863-A041-8F905A62C572}" />
      <parm name="DestId" value="{436EF144-B4FB-4863-A041-8F905A62C572}" options="My Work Network{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}My ISP{ADB0B001-10B5-3F39-27C6-9742E785FCD4}Work{A1182988-0D73-439E-87AD-2A5B369F808B}Secure WAP Network{F28D1F74-72BE-4394-A4A7-4E296219390C}The WAP Network{7022E968-5A97-4051-BC1C-C578E2FBA5D9}The Internet{436EF144-B4FB-4863-A041-8F905A62C572}" />
      <parm name="Proxy" value="new-inet:1159" />
      <parm name="Override" value="" />
      <parm name="Enable" value="1" />
      <parm name="Type" value="0" />
      <parm name="Username" value="" />
      <parm name="Password" value="" />
      <parm name="ExtraInfo" value="" />
    </characteristic>
    <characteristic type="null-corp-{ADB0B001-10B5-3F39-27C6-9742E785FCD4}">
      <parm name="SrcId" value="{ADB0B001-10B5-3F39-27C6-9742E785FCD4}" options="My Work Network{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}My ISP{ADB0B001-10B5-3F39-27C6-9742E785FCD4}Work{A1182988-0D73-439E-87AD-2A5B369F808B}Secure WAP Network{F28D1F74-72BE-4394-A4A7-4E296219390C}The WAP Network{7022E968-5A97-4051-BC1C-C578E2FBA5D9}The Internet{436EF144-B4FB-4863-A041-8F905A62C572}" />
      <parm name="DestId" value="{A1182988-0D73-439E-87AD-2A5B369F808B}" options="My Work Network{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}My ISP{ADB0B001-10B5-3F39-27C6-9742E785FCD4}Work{A1182988-0D73-439E-87AD-2A5B369F808B}Secure WAP Network{F28D1F74-72BE-4394-A4A7-4E296219390C}The WAP Network{7022E968-5A97-4051-BC1C-C578E2FBA5D9}The Internet{436EF144-B4FB-4863-A041-8F905A62C572}" />
      <parm name="Proxy" value="" />
      <parm name="Override" value="" />
      <parm name="Enable" value="1" />
      <parm name="Type" value="0" />
      <parm name="Username" value="" />
      <parm name="Password" value="" />
      <parm name="ExtraInfo" value="" />
    </characteristic>
  </characteristic>
  </wap-provisioningdoc>

这是从我的wm 6 pro emulator中获取的,因此您可能需要稍微调整一下设置。它将两个下拉列表设置为我的ISP(ADB0B001-10B5-3F39-27C6-9742E785FCD4 guid),只需更改type=“HTTP xxxx”和type=“null corp xxxx”中的guid,并确保它与srcId parm中的guid匹配

我用这个xml(元数据设置为true)调用了ProcessConfiguration,以获得配置的所有条目的列表,它在xml文档中返回这些条目

<wap-provisioningdoc>
  <characteristic-query type="CM_Mappings" recursive="true"/>
  <characteristic-query type="CM_Planner" recursive="true"/>
  <characteristic-query type="CM_Networks" recursive="true"/>
  <characteristic-query type="CM_ProxyEntries" recursive="true"/>
  <characteristic-query type="Wi-Fi" recursive="true"/>
  <characteristic-query type="CM_PPPEntries" recursive="true"/>
  <characteristic-query type="CM_VPNEntries" recursive="true"/>
  <characteristic-query type="CM_NetEntries" recursive="true"/>
  <characteristic-query type="CM_GPRSEntries" recursive="true"/>
</wap-provisioningdoc>

您可以使用它来查看guid和设置是什么,也可以查看wmsdk中的include文件,因为它们在那里列出,用于连接管理器api


一个警告是,在弄乱这些连接之后,我还没有尝试使用它们,但是当您处理configs时,UI确实会改变。Shane:这允许访问我在问题1中提到的DMProcessConfigXML函数。我还没有找到一个示例来演示如何在C中使用它(我将更新我的问题,以提及C)@Shane:这也是一个很好的建议。我通常尽可能少地使用任何东西,尤其是我喜欢的任何东西。我知道DMProcessConfigXML是最基本的