首页 > 编程语言 >c# 获取用户桌面选择的文件

c# 获取用户桌面选择的文件

时间:2023-12-18 12:59:09浏览次数:29  
标签:桌面 c# list filename 获取 window Shell32 new Path

 

引用COM组件 Shell32

 

 Shell32.ShellFolderView desktopFolderView;
 int hwnd;
 Shell32.Shell iShell = new Shell32.Shell();
 SHDocVw.ShellWindows iWindows = iShell.Windows();
 SHDocVw.InternetExplorer iDesktop = iWindows.FindWindowSW(0, null, 8, out hwnd, 1);
 desktopFolderView = (Shell32.ShellFolderView)iDesktop.Document;
 List<string> list = new List<string>();

 Shell32.FolderItems selItems = desktopFolderView.SelectedItems();
 foreach (Shell32.FolderItem fitem in selItems)
 {

     // if (fitem.IsFileSystem)
     //  listBox1.Items.Add(fitem.Path);

     list.Add(fitem.Name);
 }
 Title =""+ list.Count +"="+ list[0];

  

获取资源管理器里选择的文件 :

引用COM组件Microsoft Internet Controls 和 microsoft shell controls and automation 就是 shell32.dll

 

            string filename;
            string ok = "";
            ArrayList selected = new ArrayList();
            foreach (SHDocVw.InternetExplorer window in new SHDocVw.ShellWindows())
            {
                Debug.Print(window.LocationURL);
                filename = Path.GetFileNameWithoutExtension(window.FullName).ToLower();

                if (filename.ToLowerInvariant().Contains("desk"))
                {
                    Debug.Print(window.LocationURL);
                }
                 if (filename.ToLowerInvariant() == "explorer" || filename.ToLowerInvariant() == "资源管理器")
                {
                    Shell32.FolderItems items = ((Shell32.IShellFolderViewDual2)window.Document).SelectedItems();
                    var count = items.Count;
                    foreach (Shell32.FolderItem item in items)
                    {
                        //selected.Add(item.Path);
                        //MessageBox.Show(item.Path);

                        ok= item.Path;   

                    }
                }
            }

  

 

标签:桌面,c#,list,filename,获取,window,Shell32,new,Path
From: https://www.cnblogs.com/wgscd/p/17910908.html

相关文章

  • python openstacksdk
     参考:openstackregionlist获取yaml配置的域信息ragion_name,也可以通过配置less/etc/neutron/neutron.conf获取region_name  openstacksdk旨在与任何OpenStack云对话。为此,需要一个配置文件。openstacksdk支持 clouds.yaml 文件,但也可以使用环境变量。......
  • GCGP:Global Context and Geometric Priors for Effective Non-Local Self-Attention加
    GlobalContextandGeometricPriorsforEffectiveNon-LocalSelf-Attention*Authors:[[WooS]]初读印象comment::(GCGP)提出了一个新的关系推理模块,它包含了一个上下文化的对角矩阵和二维相对位置表示。动机普通注意力的缺点:单独处理输入图像中的每个特征,并在整个输......
  • spirng、springboot、jdk、maven、tomcat版本问题
    引入springboot依赖时会自动安装spring对应依赖,版本由springboot决定。springboot2.x.x及以下使用jdk11、jdk8都可以,springboot3.x.x最低要求jdk17maven与jdk版本关系,参照链接:https://maven.apache.org/docs/history.htmlApacheTomcat是JakartaEE(JavaEE)技术子集的开源......
  • -bash: mpstat: command not found
    linux下检测CPU性能的mpstat命令安装与用法1、安装命令[root@host-192-168-1-165~]# yuminstallsysstat-y 2、检测CPU命令语法$mpstat--h//查看mpstat的语法Usage:mpstat[options][<interval>[<count>]]Optionsare:[-A][-n][-u][-V][-I{S......
  • Linux命令(138)之xzcat
    linux命令之xzcat1.xzcat介绍linux命令xzcat是用来查看xz结尾的压缩文件2.xzcat用法xzcat[参数]filenamexzcat参数参数说明-c将文件内容写到标准输出-f强制覆盖输出文件和压缩链接-t测试文件的完整性-l列出xz文件的信息-V查看xzcat版本3.实例3.1.将文件内容写到标准输出命......
  • Java | 多线程并发编程CountDownLatch实践
    关注:CodingTechWork引言  在一次数据割接需求中,数据需要通过编程的方式进行转移割接到新平台,此时若串行化方式,无疑会拉锯此次战斗,所以首当其冲要使用并发编程来降低割接时长。  本次主要考虑使用CountDownLatch工具类进行并发编程的控制。CountDownLatch概述  在并发编程过程......
  • Docker自建个人网盘 FileBrowser
    项目地址:https://github.com/filebrowser/filebrowser系统Demo:Demo地址:https://demo.filebrowser.org/账号密码:demo/demo前言:Filebrowser:轻量级文件服务器,一个开源的基于go的web文件管理器,支持Windows,Linux,docker以及安卓termux。开源地址: https://github.com/filebrowser/fileb......
  • Docker部署Node.js应用简单实践
    前言本文将从零至一,介绍如何在云服务器上通过Docker容器运行一个简单的Node应用。本文假设读者已经掌握基本的Linux,Docker,Node,Express知识。基本步骤本地写好nodejs应用,放到github。云服务器安装docker,配置国内镜像加速。拉取一个node镜像。从github拉取项目代码。编写Dockerfil......
  • MySQL 8.0 OCP 36
    Choosethebestanswer.YouwishtostoretheusernameandpasswordforaclientconnectiontoMySQLserverinafileonalocalfilesystem.您希望将MySQL服务器的用户名和密码存储在本地文件系统的文件中。Whichisthebestwaytoencryptthefile?加密文件的......
  • 无涯教程-Java's Built-in Exceptions函数
    Java在标准包java.lang中定义了几个异常类。这些异常中最通用的是标准类型RuntimeException的子类。由于java.lang被隐式导入所有Java程序中,因此从RuntimeException派生的大多数异常都是自动可用的。Java定义了与其他各种类库相关的几种其他类型的异常。以下是JavaUnchecke......