PDA

View Full Version : سوال: چرا نمیتوان سایتی که دارای دو نقطه است را باز کرد ؟



dele_ghamgin_2008
سه شنبه 25 فروردین 1394, 17:11 عصر
سلام . من یک لیست باکس دارم که توش کلی سایت تعریف شده . وقتی می خواهم وقتی روی هر کدام کلیک کردم ، با استفاده از دستور زیر وارد پنل مدیریت سایت خودم بشم ولی ان اتفاق نمی افتد . مشکل از اینجاست که اون علامت : (دو نقطه) را اجرا نمی کند . لطفا راهنمایی کنید :


System.Diagnostics.Process.Start(LstSites.Text.ToS tring() +":9001");


برای مثال بهتر :

private void LstSites_SelectedIndexChanged(object sender, EventArgs e)
{
System.Diagnostics.Process.Start(LstSites.Text.ToS tring() +":9001");
}

dele_ghamgin_2008
جمعه 28 فروردین 1394, 10:02 صبح
دوستان سوال واضح نبود یا کسی دلیلش را نمیداند ؟
وقتی این دستور رو مینویسم اتفاقی رخ نمی دهد :


System.Diagnostics.Process.Start("www.google.com" +":9001");


چون :9001 را می گذارم دستور اجرا نمی شود و اگر اون دو نقطه رو بردارم اجرا می شود. لطفا راهنمایی کنید.

hoseinharami
جمعه 28 فروردین 1394, 12:05 عصر
سلام
از این استفاده کنید
http://www.google.com" + ':' +"9001/"

hoseinharami
جمعه 28 فروردین 1394, 12:06 عصر
System.Diagnostics.Process.Start("http://www.google.com" + ':' + "9001/");

Vahid2016
جمعه 28 فروردین 1394, 13:29 عصر
دوستان سوال واضح نبود یا کسی دلیلش را نمیداند ؟
وقتی این دستور رو مینویسم اتفاقی رخ نمی دهد :


System.Diagnostics.Process.Start("www.google.com" +":9001");


چون :9001 را می گذارم دستور اجرا نمی شود و اگر اون دو نقطه رو بردارم اجرا می شود. لطفا راهنمایی کنید.

سلام ، جواب کوتاهش اگه بخوام بگم فکر میکنم به این خاطر که //:Http رو اضافه نکردین ، درواقع کدی که نوشتین زیاد قابل اتکا نیست چون این متدی که استفاده می کنین برای اجرای پروسز هست ، و وقتی آدرس وب رو بهش میدین ، موقع اجرا این دیگه از دست Csharp در میره ، و به سیستم عامل سپرده میشه که با این آدرسی که باید آدرس یک فایل اجرایی می بود ولی به اشتباه آدرس یک صفحه وب بهش داده شده چیکار باید بکنه. وقتی پورت رو با اضافه کردن 9001: به آدرستون اضافه می کنید چون آخرش شبیه Url های معمول نیست سیستم نمی تونه اون رو تشخیص بده و نمی فهمه که از چه برنامه ای باید استفاده بکنه ، ولی با اضافه شدن //:Http اوضاع تغییر میکنه ، حالت درسترش این هست که از کدی مشابه کد زیر استفاده بکنین:



System.Diagnostics.Process.Start("C:\\Program Files\\Mozilla Firefox\\firefox.exe","http://"+LstSites.Text.ToString() +":9001");


در این حالت حتی اگر عبارت //:HTTP رو هم بردارین کد باید کار بکنه چون پارامتر دوم مخصوص ارسال آرگومنت به فایل اجرایی (در اینجا فایر فاکس) هست ، و به این ترتیب تابع main فایرفاکس که انتظار داره یک آدرس اینترنتی یا آدرس یک فایل HTML بهش ارسال بشه اون رو بعد از دریافت بررسی میکنه و درصورت لزوم اصلاحش میکنه..

Vahid2016
جمعه 28 فروردین 1394, 13:45 عصر
اضافه کنم از اونجا که معلوم نیست مرورگر کجای سیستم نصب شده و اصلا آیا نصب هست یا نه ، ممکنه کدتون با مشکل مواجه بشه ، به همین خاطر پیشنهاد میکنم از متد زیر استفاده بکنید :

private static string GetStandardBrowserPath()

{
string browserPath = string.Empty;
RegistryKey browserKey = null;

try
{
//Read default browser path from Win XP registry key
browserKey = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command", false);

//If browser path wasn't found, try Win Vista (and newer) registry key
if (browserKey == null)
{
browserKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\Shell\Associations\UrlA ssociations\http", false); ;
}

//If browser path was found, clean it
if (browserKey != null)
{

//Remove quotation marks
browserPath = (browserKey.GetValue(null) as string).ToLower().Replace("\"", "");

//Cut off optional parameters
if (!browserPath.EndsWith("exe"))
{
browserPath = browserPath.Substring(0, browserPath.LastIndexOf(".exe") + 4);
}

//Close registry key
browserKey.Close();
}
}
catch
{
//Return empty string, if no path was found
return string.Empty;
}
//Return default browsers path
return browserPath;
}




و بعد هم که به این شکل عمل می کنید:


string url = "http://"+LstSites.Text.ToString() +":9001";
string browserPath = GetStandardBrowserPath();
if (string.IsNullOrEmpty(browserPath))
{
MessageBox.Show("No default browser found!");
}
else
{
Process.Start(browserPath, url);
}

MehdiElexal
جمعه 28 فروردین 1394, 14:19 عصر
به اینصورت اصلاح کنید


System.Diagnostics.Process.Start(@"www.google.com:9001");

dele_ghamgin_2008
جمعه 28 فروردین 1394, 18:13 عصر
System.Diagnostics.Process.Start("http://www.google.com" + ':' + "9001/");

باز هم نشد

dele_ghamgin_2008
جمعه 28 فروردین 1394, 18:14 عصر
اضافه کنم از اونجا که معلوم نیست مرورگر کجای سیستم نصب شده و اصلا آیا نصب هست یا نه ، ممکنه کدتون با مشکل مواجه بشه ، به همین خاطر پیشنهاد میکنم از متد زیر استفاده بکنید :

private static string GetStandardBrowserPath()

{
string browserPath = string.Empty;
RegistryKey browserKey = null;

try
{
//Read default browser path from Win XP registry key
browserKey = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command", false);

//If browser path wasn't found, try Win Vista (and newer) registry key
if (browserKey == null)
{
browserKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\Shell\Associations\UrlA ssociations\http", false); ;
}

//If browser path was found, clean it
if (browserKey != null)
{

//Remove quotation marks
browserPath = (browserKey.GetValue(null) as string).ToLower().Replace("\"", "");

//Cut off optional parameters
if (!browserPath.EndsWith("exe"))
{
browserPath = browserPath.Substring(0, browserPath.LastIndexOf(".exe") + 4);
}

//Close registry key
browserKey.Close();
}
}
catch
{
//Return empty string, if no path was found
return string.Empty;
}
//Return default browsers path
return browserPath;
}




و بعد هم که به این شکل عمل می کنید:


string url = "http://"+LstSites.Text.ToString() +":9001";
string browserPath = GetStandardBrowserPath();
if (string.IsNullOrEmpty(browserPath))
{
MessageBox.Show("No default browser found!");
}
else
{
Process.Start(browserPath, url);
}


بصورت پیشفرض مرورگر گوگل کروم تعریف شده و زمانی که دستور زیر رو میزنم به درستی سایت رو باز میکنه . ولی با :9001 مشکل داره و سایت ها باز نمیشن.


System.Diagnostics.Process.Start(LstSites.Text.ToS tring()+"/apanel");

dele_ghamgin_2008
جمعه 28 فروردین 1394, 18:16 عصر
به اینصورت اصلاح کنید


System.Diagnostics.Process.Start(@"www.google.com:9001");


اینکار رو هم کردم ولی باز هم باز نکرد که نکرد

dele_ghamgin_2008
جمعه 28 فروردین 1394, 18:18 عصر
جواب رو یافتم . مشکل از نذاشتن http:// بود و با گذاشتن این عبارت به درستی عمل کرد . از همه دوستان کمال تشکل را دارم .
System.Diagnostics.Process.Start("http://"+LstSites.Text.ToString() + ":9001");

dele_ghamgin_2008
جمعه 28 فروردین 1394, 18:22 عصر
سلام ، جواب کوتاهش اگه بخوام بگم فکر میکنم به این خاطر که //:Http رو اضافه نکردین ، درواقع کدی که نوشتین زیاد قابل اتکا نیست چون این متدی که استفاده می کنین برای اجرای پروسز هست ، و وقتی آدرس وب رو بهش میدین ، موقع اجرا این دیگه از دست Csharp در میره ، و به سیستم عامل سپرده میشه که با این آدرسی که باید آدرس یک فایل اجرایی می بود ولی به اشتباه آدرس یک صفحه وب بهش داده شده چیکار باید بکنه. وقتی پورت رو با اضافه کردن 9001: به آدرستون اضافه می کنید چون آخرش شبیه Url های معمول نیست سیستم نمی تونه اون رو تشخیص بده و نمی فهمه که از چه برنامه ای باید استفاده بکنه ، ولی با اضافه شدن //:Http اوضاع تغییر میکنه ، حالت درسترش این هست که از کدی مشابه کد زیر استفاده بکنین:



System.Diagnostics.Process.Start("C:\\Program Files\\Mozilla Firefox\\firefox.exe","http://"+LstSites.Text.ToString() +":9001");


در این حالت حتی اگر عبارت //:HTTP رو هم بردارین کد باید کار بکنه چون پارامتر دوم مخصوص ارسال آرگومنت به فایل اجرایی (در اینجا فایر فاکس) هست ، و به این ترتیب تابع main فایرفاکس که انتظار داره یک آدرس اینترنتی یا آدرس یک فایل HTML بهش ارسال بشه اون رو بعد از دریافت بررسی میکنه و درصورت لزوم اصلاحش میکنه..

پاسخ شما کاملا صحیح بود . از شما بیشتر از همه متشکرم . خیلی لطف کردید