【问题标题】:Will this work on windows xp? C# [duplicate]这可以在windows xp上工作吗? C# [重复]
【发布时间】:2015-08-14 23:37:40
【问题描述】:

我正在制作这个程序,但我不确定它是否可以在 windows xp 上运行。我已经使用 net framework 3.5 完成了它,因此它是兼容的,但如果使用 windows xp 的人可以测试它,它会有所帮助。

到目前为止,此程序每 30 秒(计时器滴答声)截取一次屏幕截图并将其保存到隐藏文件夹中,这就是我需要帮助的原因,因为 XP 上的文档路径不同。它有点像一个截图记录器,不得不说我不打算在任何人身上使用,我只是喜欢编写不同的东西。

在任何人指出之前的最后一件事,我知道“当前文件夹”变量似乎是多余的,但我计划每 20 个屏幕截图左右创建一个新文件夹。

public partial class Form1 : Form
{
    public static Int32 ScreenshotNumber = 1;
    public static Int32 CurrentFolder = 1;

    public Form1()
    {
        InitializeComponent();
    }

    private void ImageTimer_Tick(object sender, EventArgs e)
    { //checking if primary folder exists, if not, make it
        if (!Directory.Exists(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\SystemEX"))
        {
            try
            {
                Directory.CreateDirectory(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\" + "SystemEX");
                Directory.CreateDirectory(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\SystemEX\" + "01I28SJ3");
                try { File.SetAttributes(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\SystemEX\" + "01I28SJ3", FileAttributes.Hidden); }
                catch { }
                Directory.CreateDirectory(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\SystemEX\01I28SJ3\" + "1");
            }
            catch { }

        } //checking if secondary folder exists, if not, make it
        else if (!Directory.Exists(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\SystemEX\01I28SJ3"))
        {
            try
            {
                Directory.CreateDirectory(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\SystemEX\" + "01I28SJ3");
                try { File.SetAttributes(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\SystemEX\" + "01I28SJ3", FileAttributes.Hidden); }
                catch { }
                Directory.CreateDirectory(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\SystemEX\01I28SJ3\" + "1");
            }
            catch { }
        }

        try
        { //take a screenshot

            Bitmap Printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
            Graphics graphics = Graphics.FromImage(Printscreen as Image);
            graphics.CopyFromScreen(0, 0, 0, 0, Printscreen.Size);
            //save it
            if (Directory.Exists(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\SystemEX\01I28SJ3\"))
            {
                Printscreen.Save(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\SystemEX\01I28SJ3\" + CurrentFolder + @"\" + "Screenshot" + Convert.ToString(ScreenshotNumber) + ".jpg", ImageFormat.Jpeg);
                ScreenshotNumber += 1;
            }
        }
        catch { }
    }
}

【问题讨论】:

  • 旁注:Directory.CreateDirectory 能够递归地创建目录。假设您要创建目录 X:\1\2\3\4,但只存在 X:\1\2。调用Directory.CreateDirectory(@"X:\1\2\3\4")将创建子目录3和4。无需为每个子目录分别调用Directory.CreateDirectory...
  • 谢谢我试试看

标签: c# windows windows-xp


【解决方案1】:

没有。 Windows XP 不使用C:\Users,并且不能保证未来版本的Windows 也可以。您应该使用Environment.SpecialFolder 来查找用户的个人资料目录,而不是自己猜测位置。

【讨论】:

  • 那么这会起作用吗? Directory.CreateDirectory(Environment.SpecialFolder.ApplicationData + @"\Roaming\ ... 然后是我要创建的文件夹名称?
  • @Will,请查看 MSDN 文档以了解 Environment.SpecialFolder 枚举。 Environment.SpecialFolder.ApplicationData 是 漫游 ApplicationData 文件夹。 (Environment.SpecialFolder.LocalApplicationData 将是 local ApplicationData 文件夹)
  • @Will 不会。SpecialFolder.ApplicationData 无论如何都会为您提供漫游应用程序数据目录的路径,因此将Roaming 附加到末尾将不起作用。您还应该使用Path.Combine 而不是字符串连接来访问子目录。正如 elgonzo 所说,如果您想要本地配置文件(即仅在此机器上的配置文件,而不是将与域上的用户一起移动的配置文件),那么您应该使用 SpecialFolder.LocalApplicationData
  • 啊,我明白了,我再看看,谢谢
猜你喜欢
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多