从安装的应用程序C#后面的代码打开浏览器中的链接

时间:2016-03-04 09:20:32

标签: c# winforms

我做了一个winform应用程序。当我在visual studio中运行应用程序时,以下代码可以打开来自function get_user () { $result = (array)$this->db->get('users_table')->result(); } 链接列的链接。

DataGridView

但是当我安装构建并尝试做同样的事情时,没有任何反应。我还需要做任何其他设置。

请帮忙。

3 个答案:

答案 0 :(得分:4)

如果您想从DataGridView打开链接链接,您实际上应该传递网址而不是网络浏览器,即:

System.Diagnostics.Process.Start(grdRelLinks.Rows[e.RowIndex].Cells[2].Value.ToString());

最终会尝试使用默认的操作系统浏览器打开给定的URL。 Ofc确保来自url的url链接格式正确。

如果chrome.exe无法启动,可以尝试缩短一个:chrome? 您是否还可以确认Win+R(a.k.a。Run...)然后chrome.exe实际打开 Chrome ? 如果没有,你能检查一下吗? HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\包含chrome.exe条目?

如果是这样,也许网址格式错误?

答案 1 :(得分:0)

您可以使用以下代码段在浏览器中打开网址:

Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = "http://google.com";
process.Start();

System.Diagnostics.Process.Start("http://google.com");

在您的示例中,要允许用户从DataGridView启动它,您应该只需定义一个这样的点击事件:

private void grdRelLinks_CellContentClick(object pSender, DataGridViewCellEventArgs pArgs)
{
    if (pArgs.RowIndex > -1 && pArgs.ColumnIndex == 2)
    {
        string url = grdRelLinks.Rows[pArgs.RowIndex].Cells[pArgs.ColumnIndex].Value.ToString();

        if(!string.IsNullOrWhiteSpace(url))
            System.Diagnostics.Process.Start(url);
    }
}

答案 2 :(得分:0)

这对我有用。

    private void OnGridViewContentClick(object sender, EventArgs e)
    {
        string chromeExePath = CheckIfChromeIsInstalled();
        if (!string.IsNullOrEmpty(chromeExePath))
        {
            MessageBox.Show("Yayy Chrome.exe was found !");
            //Path is not null:
            Process.Start(chromeExePath, "http://www.google.de");//Here you can also enter the URL you get from your GridView
            string url = grdRelLinks.Rows[e.RowIndex].Cells[2].Value.ToString();
            if(!url.StartsWith("http")
            {
               url = $"http://{url}";
            }
            Process.Start(chromeExePath, url);
        }
        else
        {
            MessageBox.Show("Chrome.exe not found");
        }
    }

    private string CheckIfChromeIsInstalled()
    {
        DirectoryInfo programFiles = new DirectoryInfo(Environment.GetEnvironmentVariable("PROGRAMFILES"));//Find your Programs folder
        DirectoryInfo[] dirs = programFiles.GetDirectories();
        List<FileInfo> files = new List<FileInfo>();
        Parallel.ForEach(dirs, (dir) =>
        {
            files.AddRange(dir.GetFiles("chrome.exe", SearchOption.AllDirectories)); //Search for Chrome.exe
        });
        //files should only contain 1 entry
        //Return path of chrom.exe or null
        return (files.Count > 0) ? files[0].FullName : null;
    }

注意:在额外的线程中启动它可能很有用!

编辑: 您能否检查cmd.exe是否适用于chrome.exe "your URL"