Как настроить параметры управления сетью или открыть диалоговое окно в C # на Windows Mobile? - PullRequest
4 голосов
/ 19 ноября 2008

В Windows Mobile, когда вы открываете Internet Explorer и вводите URL-адрес, к которому ваше устройство не может подключиться, вы получаете уведомление об этом и получаете подсказку (вручную) перейти к экрану, где вы можете что-то сделать, как пользователь (Управление сетью), вот так:

альтернативный текст http://www.freeimagehosting.net/uploads/d3d95e00d2.gif

Однако, если приложение .NET Compact Framework пытается подключиться к веб-службе, а URL-адрес веб-службы недоступен, всплывающее окно «Не удается подключиться» не отображается, и вместо этого вызов веб-службы просто завершается неудачей. Иногда мы говорим с клиентами через этот процесс по телефону:

альтернативный текст http://www.freeimagehosting.net/uploads/e74a0d4230.gif

и тогда им еще предстоит пройти еще 2 шага.

Вопрос 1: Можно ли программно контролировать (в C #), какие два ComboBox на экране Network Management установлены?

Обычно для устранения проблем с подключением клиента приходится возиться с этими двумя блоками, пока они не смогут подключиться. Проблема в том, что, поскольку клиенты сами могут свободно изменять свои сетевые функции, я часто не знаю, что им сказать, чтобы установить его («что говорит?» - это то, что я часто говорю). Из моих поисков до сих пор выглядит, что DMProcessConfigXML - это способ, которым это будет сделано, но все, что я знаю до сих пор, это то, что вы вызываете этот метод и передаете ему некоторый XML.

Вопрос 2: Можно ли программно (C #) вызвать пузырь «Не удается подключиться», или, что еще лучше, можно программно заставить экран управления сетью сразу же появиться?

Предположительно, если мой код не видит URL-адрес веб-службы, он может вызвать всплывающее окно или перейти непосредственно к экрану.

Ответы [ 2 ]

3 голосов
/ 11 марта 2010

В ответе на ваш вопрос 2 этот код покажет панель управления соединениями:

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

Многие встроенные апплеты настроек отображаются через ctlpnl.exe. Я получил магическое число из списка здесь , не уверен, поможет ли это, потому что вам все еще нужно провести пользователя по остальной части настройки связи.

Что касается вашего вопроса 1, я использовал DMProcessConfigXML, а также кабины настройки диспетчера конфигурации для настройки параметров связи (по общему признанию из c ++, но, глядя на API, должно быть просто выполнить p / invoke, как предложил Шейн). Это было некоторое время назад, поэтому сейчас у меня нет примеров для подбора, но мы определенно получили его для создания новых настроек сети и переключения этих выпадающих меню для выбора новых настроек. Я посмотрю, смогу ли я выкопать пример XML позже.

Кажется, что нет необходимости в P / Invoke, ConfigurationManager.ProcessConfiguration - это управляемая оболочка в пространстве имен Microsoft.WindowsMobile, которая вызывает DMProcessConfigXML.

Я все еще ищу нужный XML для отправки, скорее всего, некоторая комбинация CM_Networks, 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, поэтому вам, возможно, придется немного поиграть с настройками. Он устанавливает оба раскрывающихся списка на Мой провайдер (ADB0B001-10B5-3F39-27C6-9742E785FCD4 guid). Просто измените guid в type = "HTTP-xxxx" и type = "null-corp-xxxx" и убедитесь, что он совпадает в srcId parm тоже.

Я вызвал ProcessConfiguration с этим xml (и метаданными, установленными в true), чтобы получить список всех настроенных записей, он возвращает их в документе 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>

Вы можете использовать это, чтобы увидеть, что такое руководства и настройки, или посмотреть во включаемых файлах из WM SDK, поскольку они перечислены там для использования с диспетчером соединений apis.

Одно предостережение: я не пытался использовать эти соединения после того, как связался с ними, но пользовательский интерфейс меняется, когда вы обрабатываете конфиги

2 голосов
/ 19 ноября 2008

Для установления соединения необходимо использовать API диспетчера соединений . На самом деле, есть флаг, который вы можете установить, чтобы остановить уведомление об ошибке!

Здесь - статья о том, как использовать диспетчер соединений с wininet. Я предполагаю, что вам придется P / Invoke API.

Одно из предложений, которое я хотел бы сделать, - абстрагироваться от использования менеджера соединений как можно больше и использовать его как можно меньше. Диспетчер подключений не очень удобен в использовании, и я полагаю, что текущий интерфейс не поддерживается в следующих версиях Windows Mobile.

Обновление:

Вызов DMProcessConfigXML действительно прост из собственного кода. Снова я предполагаю, что P / Invoke этой функции в C # не должен быть плохим. Перейдите по ссылке, чтобы увидеть простой пример вызова этого DMProcessConfigXML. Часть из них - это выяснение из документации Microsoft, какой XML-файл вы хотите отправить.

В основном вам необходимо пройти через документацию Поставщики услуг конфигурации MSDN в любой области, которую вы можете настроить. Если вы смотрите в настройке сети, я лично не стал бы беспокоиться. Это большой волосатый беспорядок, и он действительно полезен только для настройки прокси для определенных операторов мобильной связи и / или настроек WIFI для корпоративной сети. Если вы хотите настроить обычные соединения GPRS / Wifi, это не так просто.

Update2: Я должен прочитать вопрос более внимательно, я полагаю, что ответ «НЕТ» на «изменение параметров сети», но «Да» на создание совершенно новых сетевых настроек. Вот если я правильно понял спецификацию. Я только играл с настройкой сетей.

Надеюсь, это поможет.

...