-2

我需要在 Windows 资源管理器中获取当前选择的文件或文件夹的路径来放置ListView. 我不知道怎么办希望你能帮忙。谢谢

更新源

public void GetListFileAndFolderOfWindowsExploer()
{
    try
    {
        string fileName;

        ArrayList selected = new ArrayList();
        Shell32.Shell shell = new Shell32.Shell();

        foreach (SHDocVw.InternetExplorer windows in new SHDocVw.ShellWindows())
        {
            fileName = Path.GetFileNameWithoutExtension(windows.FullName).ToLower();

            if (fileName.ToLowerInvariant() == "explorer")
            {
                Shell32.FolderItems items = ((Shell32.IShellFolderViewDual2)windows.Document).SelectedItems();

                foreach (Shell32.FolderItem item in items)
                {
                    lift = new string[] { item.Name, item.Path };

                    ListViewItem list = new ListViewItem();
                    list.Text = item.Name;
                    list.SubItems.Add(item.Path);
                    list.UseItemStyleForSubItems = true;
                    listView1.Items.Add(list);
                }
            }
        }
    }
    catch (Exception ex)
    {
        writelog(ex.Message);
    }
}
4

3 回答 3

2

您可以使用OpenFileDialogHome 并学习 OpenFileDialog)。

希望这个链接有帮助。

OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Title = "C# Help";
fdlg.InitialDirectory = @"c:\";
fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
fdlg.FilterIndex = 2;
fdlg.RestoreDirectory = true;
if (fdlg.ShowDialog() == DialogResult.OK)
{
     string dirName =
     System.IO.Path.GetDirectoryName(fdlg.FileName);
     string drive =
     dirName.Split(System.IO.Path.VolumeSeparatorChar)[0];
     MessageBox.Show(dirName);
     MessageBox.Show(drive);
}
于 2013-01-29T06:57:37.747 回答
1

您的问题似乎不清楚,希望您OpenFileDialog用于选择文件,

如果您正在寻找文件路径:

string path = OpenFileDialog1.FileName; //output = c:\folder\file.txt

如果您正在寻找目录路径:

string path = Path.GetDirectoryName(OpenFileDialog1.FileName); //output = c:\folder

通常,System.IO.Path该类具有许多用于检索和操作路径信息的有用功能。

于 2013-01-29T06:55:10.303 回答
1

为了获得选定的项目,您必须使用以下接口:

IServiceProvider
IShellBrowser
IFolderView
IShellFolder2
IPersistFolder2 

或直接

(IEnumIDList and LPITEMIDLIST) foreach all selected items

这在 Windows 10 中运行良好。

于 2017-04-12T07:29:09.753 回答