0

我正在尝试使用c#.

1)打开Firefox浏览器-->工具-->选项-->常规选项卡--->下载--->总是问我在哪里保存文件。

我想在我的应用程序中使用c#. 我希望当下载窗口打开时,"Always ask me where to save file"选项中的单选按钮会自动被选中。

我已经尝试过各种链接,但一切都是徒劳的。

4

2 回答 2

1

这是完整的代码,控制台应用程序。摘要:首选项文件位于应用程序漫游文件夹中,在 Windows 7 上是这样的:

C:\Users\MYNAME\AppData\Roaming\Mozilla\Firefox\Profiles\d9i9jniz.default\prefs.js

我们更改此文件,使其包含“user_pref("browser.download.useDownloadDir", false);"

重启firefox,大功告成。仅在 firefox 未运行时运行此应用程序。

 static void Main(string[] args)
    {
        if (isFireFoxOpen())
        {
            Console.WriteLine("Firefox is open, close it");
        }
        else
        {
            string pathOfPrefsFile = GetPathOfPrefsFile();

            updateSettingsFile(pathOfPrefsFile);
            Console.WriteLine("Done");
        }
        Console.ReadLine();
    }

    private static void updateSettingsFile(string pathOfPrefsFile)
    {
        string[] contentsOfFile = File.ReadAllLines(pathOfPrefsFile);
        // We are looking for "user_pref("browser.download.useDownloadDir", true);"
        // This needs to be set to:
        // "user_pref("browser.download.useDownloadDir", false);"
        List<String> outputLines = new List<string>();
        foreach (string line in contentsOfFile)
        {
            if (line.StartsWith("user_pref(\"browser.download.useDownloadDir\""))
            {
                Console.WriteLine("Found it already in file, replacing");
            }
            else
            {
                outputLines.Add(line);
            }
        }

        // Finally add the value we want to the end
        outputLines.Add("user_pref(\"browser.download.useDownloadDir\", false);");
        // Rename the old file preferences for safety...
        File.Move(pathOfPrefsFile, Path.GetDirectoryName(pathOfPrefsFile) +  @"\" + Path.GetFileName(pathOfPrefsFile) + ".OLD." + Guid.NewGuid().ToString());
        // Write the new file.
        File.WriteAllLines(pathOfPrefsFile, outputLines.ToArray());
    }

    private static string GetPathOfPrefsFile()
    {
        // Get roaming folder, and get the profiles.ini
        string iniFilePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Mozilla\Firefox\profiles.ini";
        // Profiles.ini tells us what folder the preferences file is in.
        string contentsOfIni = File.ReadAllText(iniFilePath);

        int locOfPath = contentsOfIni.IndexOf("Path=Profiles");
        int endOfPath = contentsOfIni.IndexOf(".default", locOfPath);

        int startOfPath = locOfPath + "Path=Profiles".Length + 1;
        int countofCopy = ((endOfPath + ".default".Length) - startOfPath);
        string path = contentsOfIni.Substring(startOfPath, countofCopy);

        string toReturn = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Mozilla\Firefox\Profiles\" + path + @"\prefs.js";
        return toReturn;
    }

    public static bool isFireFoxOpen()
    {
        foreach (Process proc in Process.GetProcesses())
        {
            if (proc.ProcessName == "firefox")
            {
                return true;
            }
        }
        return false;
    }
于 2012-10-10T10:22:09.033 回答
0

你试过什么?

Firefox 设置存储在您的配置文件中,所以我猜您可以更改给定文件的内容。键入about:config以查找您要查找的设置,我猜它在browser.download树中,更改它(在确保浏览器未运行之后),您应该很高兴。

于 2012-10-10T07:25:21.173 回答