Как я могу получить UNC-путь значение из текстового поля
Всем привет,
Я работаю над приложением, которое подключается к unc-пути с учетными данными. Мое приложение сканирует сеть на наличие общих компьютеров, затем пользователь выбирает компьютер из списка, а из списка IP-адрес переходит в текстовое поле.
В этом текстовом поле находится IP-адрес, который я хотел бы знать, как открыть unc-путь из текстового поля при нажатии кнопки у меня есть некоторый код ниже, чтобы показать, что у меня есть до сих пор. Кнопка button1 должна просматривать UNC-путь от IPtxt (который представляет собой текстовое поле).
Если кто-то может указать мне правильное направление или пример того, как я могу это сделать, это будет очень ценно. Спасибо, что уделили мне время.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Net; using System.Diagnostics; using System.Net.NetworkInformation; using System.Net.Sockets; using System.Net.Configuration; using System.Runtime.InteropServices; namespace ListNetworkComputers { /// <summary> /// A simply test form that creates a new NetworkBrowser /// object, and displays a list of the network computers /// found by the NetworkBrowser /// </summary> public partial class frmMain : Form { /// <summary> /// Constructor /// </summary> public frmMain() { InitializeComponent(); } private void frmMain_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { } private void Scanbtn_Click(object sender, EventArgs e) { Process netUtility = new Process(); netUtility.StartInfo.FileName = "net.exe"; netUtility.StartInfo.CreateNoWindow = true; netUtility.StartInfo.Arguments = "view"; netUtility.StartInfo.RedirectStandardOutput = true; netUtility.StartInfo.UseShellExecute = false; netUtility.StartInfo.RedirectStandardError = true; netUtility.Start(); StreamReader streamReader = new StreamReader(netUtility.StandardOutput.BaseStream, netUtility.StandardOutput.CurrentEncoding); string line = ""; while ((line = streamReader.ReadLine()) != null) { if (line.StartsWith("\\")) { string pcname = line.Substring(2).Substring(0, line.Substring(2).IndexOf(" ")).ToUpper(); string myIP = Convert.ToString(System.Net.Dns.GetHostByName(line.Substring(2).Substring(0, line.Substring(2).IndexOf(" ")).ToUpper()).AddressList[0].ToString()); string fullname = "PC Name : " + pcname + " IP Address : " + myIP; listBox1.Items.Add(pcname); listBox2.Items.Add(myIP); } } streamReader.Close(); netUtility.WaitForExit(1000); } private void button1_Click_1(object sender, EventArgs e) { Application.Exit(); } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { } private void listBox2_SelectedIndexChanged(object sender, EventArgs e) { string ipaddress = listBox2.GetItemText(listBox2.SelectedItem); System.Net.IPAddress ip = System.Net.IPAddress.Parse(ipaddress); IPtxt.Text = listBox2.SelectedItem.ToString(); // string text = listBox2.GetItemText(listBox2.SelectedItem); // label1.Text = listBox2.SelectedItem.ToString(); } private void cTextBox1_TextChanged(object sender, EventArgs e) { } } }
Что я уже пробовал:
Я код, приложенный к моему вопросу. Спасибо, что нашли время просмотреть мой код и помочь мне с наилучшими пожеланиями.
Richard MacCutchan
Там много кода, но нет реального объяснения того, в чем заключается проблема. Вы хотите сказать, что не знаете, как получить доступ к данным из текстового поля, или что вы не знаете, как создать UNC-путь из строки IP-адреса?
Donald jeffers
Мне нужна помощь в создании unc-пути из строки IP-адреса, которая есть в моем коде. а это как раз здесь. System.Net.IP-адрес-IP-адрес = System.Net.IP-адрес.Parse(ipaddress); он идет в текстовое поле, но я не знаю, как создать unc-путь из значения текстового поля.
Richard MacCutchan
Используйте струнный бульдер.
StringBuilder uncPath = new StringBuilder("\\\\");
uncPath.Append(IPTextBox.Text);
uncPath.Append("\\directory");
... etc.
Donald jeffers
ладно, большое вам спасибо. мой единственный вопрос, который у меня остался, - как заставить его открыть окно, такое как проводник windows?
Richard MacCutchan
К сожалению, я не уверен в ответе на этот вопрос. Может быть, у Google есть какие-то идеи.
Donald jeffers
строки = "";
в то время как ((строка = что streamreader.С readline()) != нуль)
{
если (строка.Как startswith("\\"))
{
строка pcname = строка.Подстрока(2).подстрока(0, строка.Подстрока(2).Метод indexOf(" ")).Таппер();
строки полный путь = конвертировать.ToString(System.Net.Dns.GetHostByName(line.Подстрока(2).подстрока(0, строка.Подстрока(2).Метод indexOf(" ")).Топпер()).AddressList[0].Метод toString());
строка fullname = "имя ПК :" + pcname + "IP-адрес :" + fullPath;
Процесс process = новый процесс();
// string fullPath = IPtxt.Метод toString();
процесс.свойство StartInfo.FileName = "\ \ \ \ " + fullPath + "\\";
процесс.Информацию.Значение свойства useshellexecute = истина;
процесс.Информацию.ErrorDialog = истина;
процесс.Начать();
Я смог понять это с помощью приведенного выше кода. Спасибо за вашу помощь, ценю это. :Д
Richard MacCutchan
string fullPath = Convert.ToString(System.Net.Dns.GetHostByName(line.Substring(2).Substring(0, line.Substring(2).IndexOf(" ")).ToUpper()).AddressList[0].ToString());
Такие строки кода чрезвычайно трудно отлаживать, если какая-либо часть выходит из строя.