01/10/2018, 08:13

Hỏi về Argument khởi động chương trình

Mình muốn viết code để khi kéo một thư mục vào biểu tượng chương trình thì thư mục sẽ được nạp vào chương trình đó:

Bên WinForm mình viết như thế này:

//Program.cs
static class Program
    {
        [System.STAThread]
        static void Main(string[] args)
        {
            if (args.Length > 0)
                System.IO.Directory.SetCurrentDirectory(args[0]);
            new MainForm().ShowDialog();
        }
    }
//MainForm.cs, sự kiện Load của Form
private void MainForm_Load(object sender, System.EventArgs e)
        {
            lbDuongDan.Text = System.IO.Directory.GetCurrentDirectory();
        }

Chạy rất okay, đúng ý mình:

Code bên WPF thì phải dùng Environment.GetCommandLineArgs()[1], còn [0] thì nó lấy giá trị rất lung tung, lúc thì là cái file exe chạy nó, lúc thì lại là file vhost của thư mục debug, lúc thì ra thư mục chứa cái “ahjhj”, cụ thể là Desktop (Cái code kiểm tra tồn tại thư mục là mình viết sau khi tìm được arg[1] thay vì [0])

//Sự kiện Loaded của Window
private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            lbDuongDan.Content = Directory.GetCurrentDirectory();
            if (Directory.Exists(Environment.GetCommandLineArgs()[1]))
                Directory.SetCurrentDirectory(Environment.GetCommandLineArgs()[1]);
            lbDuongDan.Content = Directory.GetCurrentDirectory();
        }

Có ai thạo C# cho mình hỏi là GetCommandLineArgs() nó lấy index như thế nào vậy ạ?

Đỗ Trung Quân viết 10:19 ngày 01/10/2018

Bạn thử in hết tất giá trị ra xem.

Bài liên quan
0