下载并选择一个 powercfg 文件以使用 c# 导入它,并且在下载后不会失去对应用程序的关注

Downloading and selecting a powercfg file to import it with c# and not losing focus on the application after the download

所以目前我正在尝试从浏览器下载文件;

Process.Start("explorer.exe", "link");

因为它是 cdn.discordapp link 它会立即下载文件。以下代码在下载文件夹和桌面搜索下载文件。

var cmdA = new Process { StartInfo = { FileName = "powercfg" } };
    using (cmdA) //This is here because Process implements IDisposable
    {

        var inputPathA = Path.Combine(Environment.CurrentDirectory, "C:\Users\god\Desktop\1.pow");

其余代码通过 cmd 导入 powerplan 并将 powerplan 设置为活动。

//This hides the resulting popup window
cmdA.StartInfo.CreateNoWindow = true;
cmdA.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

//Prepare a guid for this new import
var guidStringA = Guid.NewGuid().ToString("d"); //Guid without braces

//Import the new power plan
cmdA.StartInfo.Arguments = $"-import \"{inputPathA}\" {guidStringA}";
cmdA.Start();

//Set the new power plan as active
cmdA.StartInfo.Arguments = $"/setactive {guidStringA}";
cmdA.Start();

问题:

我想下载文件而不让应用程序失去焦点。我也想让浏览器在下载完成后自动关闭

我建议 不要 使用 Process.Start 命令来启动浏览器,而是在 C# 代码中创建一个 HttpClient 来为您下载文件并保存在本地。这使您可以最终控制文件。下载文件后,您可以调用 Process.Start 并对下载的文件执行任何需要的操作。

有多个关于如何使用 C# 下载文件的示例,但这里有一个简单的要点:

async Task DownloadFile(string url, string localFileName)
{
    using (var client = new HttpClient())
    using (var response = await client.GetAsync(url))
    using (var fs = new FileStream(localFileName, FileMode.CreateNew))
    {
        await response.Content.CopyToAsync(fs);
    }

    // Do something with the file you just downloaded
}

这对我有用。

using (WebClient wc = new WebClient())
{
    wc.DownloadFileAsync(
      // Link
      new System.Uri("https://cdn.discordapp.com/attachments/link.pow"),
      // Path to save
      "C:\link.pow"
 );