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

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

alt text http://sofzh.miximages.com/c%23/www.freeimagehosting.net

但是,如果.NET Compact Framework应用程序尝试连接到Web服务并且无法访问Web服务URL,则不会出现“无法连接”气泡,而是对Web服务的调用失败。 有时我们最终通过电话与客户通过流程进行沟通:

alt text http://sofzh.miximages.com/c%23/www.freeimagehosting.net

然后他们还有两个步骤要去。

问题1:是否可以以编程方式控制(在C#中)网络管理屏幕上的两个combobox设置为什么?

通常修复客户的连接问题涉及摆弄这两个框,直到他们可以连接。 问题是因为客户可以自己在这里自由改变他们的网络内容,我常常不知道该告诉他们什么设置它(“它说什么?”是我说的很多)。 从我到目前为止的搜索来看,看起来DMProcessConfigXML就是这样做的方式,但到目前为止我所知道的是你调用这个方法并传递一些XML。

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

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

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

Process.Start(@"\windows\ctlpnl.exe", "cplmain.cpl,19"); 

很多内置的设置applet都是通过ctlpnl.exe显示的。 我从列表中获得了神奇的数字,不确定它是否有帮助,因为您仍然需要引导用户完成其余的通信设置。

关于你的问题1,我使用了DMProcessConfigXML以及配置管理器设置cab来配置通信设置(诚然来自c ++,但是看看api应该像Shane所建议的那样直接进行p / invoke)。 这是一段时间以前所以我现在没有任何示例,但我们肯定得到它来进行新的网络设置并切换这些下拉菜单来选择新的设置。 我将看看我是否可以在以后挖掘XML的示例。

似乎不需要P / Invoke, ConfigurationManager.ProcessConfiguration是调用DMProcessConfigXML的Microsoft.WindowsMo​​bile命名空间中的托管包装器。

我仍然在寻找合适的xml发送给它,很可能是CM_Networks,CM_Planner和其他一些组合的一些组合……细节都在这里,但文档有点棘手,弄清楚什么做了什么,我可以不记得很久以前:(

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

                           

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

我使用此xml调用ProcessConfiguration(并将元数据设置为true)以获取已配置的所有条目的列表,并在xml doc中返回它们。

            

您可以使用它来查看guid和设置是什么,或者查看来自WM sdk的包含文件,因为它们列在那里用于连接管理器apis。

有一点需要注意的是,在弄乱它们之后我还没有尝试使用这些连接,但是当你处理配置时UI确实会改变

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

这是一篇关于如何将连接管理器与wininet一起使用的文章。 我假设你必须P / Invoke API。

我要提出的一个建议是尽可能抽象地使用连接管理器,并尽可能少地使用它。 连接管理器不是很好用,我认为当前的界面正在Windows Mobile的未来版本中被删除。

更新:

从本机代码调用DMProcessConfigXML非常简单。 我再次假设这个函数的P / Invoke进入C#应该不会坏。 按照链接查看调用此DMProcessConfigXML的简单示例。 有一部分是从microsoft文档中找出你想要发送的xml。

您基本上需要在可以配置的任何区域中查看配置服务提供程序 MSDN文档。 如果您正在研究网络设置,我个人不会打扰。 这是一个很大的混乱,实际上只对特定移动运营商和/或企业网络WIFI设置的代理设置有用。 如果你想设置一般的GPRS / Wifi连接,那就不那么容易了。

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

希望有所帮助。