Он не будет идти в цикле for, если в коллекции «строк» есть ноль строк. Поэтому вы должны проверить количество строк в коллекции.
Вы можете определенно перебрать WinTable
, взяв его детей. UitestcontrolCollection rows = WinTable.GetChildren()
, а затем вставьте это в цикл.
Но если между таблицей и строками есть другой элемент управления, вам нужно проверить иерархию.
Я нашел статью KB, Как Получить IP-адрес Удаленного Однорангового узла PPP, который использует хост "PPP_Peer". Таким образом, я попробовал:
Dns.GetHostEntry("PPP_Peer").AddressList[0]
И это действительно дает мне, что я ищу (169.254.2.2 на ПК, который я использую в данный момент).
Получение адреса не отличается чем тогда, когда Вы подключены к любому другому сетевому адаптеру (обычно, ActiveSync работает на основе RNDIS в наше время).
Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
Тем не менее ActiveSync всегда создает локальную сеть, таким образом, устройство всегда собирается добраться 192.168.55.101 (и 192.168.55.100 для хоста ПК). В теории это могло быть что-то другое, но в десятилетие я работал с CE, я никогда не видел, что он дает любой другой адрес (кроме под WMDC Vista, который имеет тенденцию использовать другую, но довольно предсказуемую, схему адресации).
Править: Кажется, что Вы не пытаетесь получить свой собственный IP, но это подключенного ПК. ActiveSync не является полноценным сетевым соединением. Это фильтрует некоторые типы пакетов, и Вы не получаете определение имен, таким образом, Вы не можете получить IP-адрес ПК из кода устройства путем выполнения DNS. Твердость на названии ПК. Необходимо предоставить IP непосредственно приложению для устройства.