Windows下打开指定目录并定位到具体文件
一.在Windows上,网上流传的几种方法可以打开目录并定位到指定文件:
1.使用系统调用:
- 使用
system()函数执行操作系统的命令行命令。 - 在命令行命令中,使用
explorer /select, 文件路径来打开目录并选中指定文件。例如:
#include <cstdlib>
int main() {
std::string filePath = "C:\\路径\\到\\目标\\文件.txt";
std::string command = "explorer /select," + filePath;
system(command.c_str());
return 0;
}
2.使用ShellExecute函数:
- 使用Windows API的
ShellExecute()函数来打开目录并选中指定文件。 - 使用
ShellExecute(NULL, "open", "explorer.exe", "/select, 文件路径", NULL, SW_SHOW);来打开资源管理器并选中指定文件。例如:#include <windows.h> int main() {
const char* filePath = "C:\\路径\\到\\目标\\文件.txt";
ShellExecute(NULL, "open", "explorer.exe", ("/select," + std::string(filePath)).c_str(), NULL, SW_SHOW);
return 0;
}
上面两种方式都可以打开并且定位,但是会存在一些问题,使用系统调用会出现一闪而过的黑窗口,还需要实现后台cmd执行,隐藏窗口;ShellExecute这个函数倒是很好用,但是你懂的这是个做什么的函数,基本各大杀毒都会重点监测的东西,带着ShellCode的函数在静态编译下能运行起来都已经是奇迹....
在这种情况下,还有别的骚操作可以实现打开目录,定位指定文件。
二.调用Windows中shlobj_core.h的API函数
1.使用SHOpenFolderAndSelectItems函数:
- 使用PathFileExistsW() 先判断文件存在不存在
- 使用ILCreateFromPathW() 获取指定文件路径关联的 ITEMIDLIST 结构
- 使用SHOpenFolderAndSelectItems() 打开一个 Windows 资源管理器窗口,其中选定了特定文件夹中的指定项目。
- 遵循SHOpenFolderAndSelectItems()使用规范,Com接口的初始化以及释放
#include <iostream>
#include <Windows.h>
#include <shlwapi.h>
#include <shlobj_core.h>
#pragma comment(lib, "Shlwapi.lib")
/// <summary>
/// 成功则打开文件所在目录并选中文件
/// </summary>
/// <param name="unicode_filename">需提供文件的绝对路径</param>
/// <param name="is_edit">重命名编辑模式</param>
/// <returns></returns>
bool open_file_location(const WCHAR* unicode_filename, bool is_edit = false)
{
if (!PathFileExistsW(unicode_filename))
{
return false;
} PIDLIST_ABSOLUTE pidl = ILCreateFromPathW(unicode_filename); if (pidl == NULL)
{
return false;
} CoInitialize(NULL); HRESULT hr = SHOpenFolderAndSelectItems(pidl, 0, 0, is_edit == true ? OFASI_EDIT : 0); CoUninitialize(); ILFree(pidl); return hr == S_OK;
} int main()
{
open_file_location(L"C:\\Users\\FengTeng\\Desktop\\1.txt");
return 0;
}
Windows下打开指定目录并定位到具体文件的更多相关文章
- .pages怎么在windows上打开?Windows下打开在Mac中编辑的.pages文件方法
.pages怎么在windows上打开?Windows下打开在Mac中编辑的.pages文件方法 1.最简单的方法是修改后缀名为.zip然后解压,解压后就可以看到一张图片,这个就是文档内容了. 2.更 ...
- C# 打开指定目录并定位到文件
private void OpenFolderAndSelectFile(String fileFullName) { System.Diagnostics.ProcessStartInfo psi ...
- windows下在指定目录下打开命令行
直接用cd的话比较麻烦,可以先进入制定目录后,按住shift键,鼠标右键可以选择“在此处打开命令窗口”
- Nginx技巧——Nginx/Apache下禁止指定目录运行PHP脚本(转自运维之美)
网站程序的上传目录通常是不需要PHP执行解释权限,通过限制目录的PHP执行权限可以提网站的安全性,减少被攻击的机率. 下面和大家一起分享下如何在Apache和Nginx禁止上传目录里PHP的执行权限. ...
- Windows下打开某些软件时显示显卡驱动不是最新的问题
在Windows下打开某些对显卡要求比较高的软件时,会出现某些显卡驱动不是最新,要求更新到最新的提示,但是当你真的去更新显卡驱动的时候,却发现现在的显卡驱动已经是最新了,那么为什么还会有这样的提示呢, ...
- windows下打开.ipynb文件
windows下打开.ipynb文件1.首先要下载python,设置环境变量2.下载pip,设置环境变量3.打开命令行,进入到python的Scripts文件中,按顺序执行下面三个命令pip inst ...
- 在windows下使用cmd命令全速下载百度云文件
在windows下使用cmd命令全速下载百度云文件 需要的工具BaiduPCS-GO(链接:https://pan.baidu.com/s/19Sn8gmNi_GZHJwUPu79DPg 密码:gqi ...
- windows 批处理删除指定目录下 指定类型 指定天数之前文件
删除D:\test下5天前所有文件,如下: @echo offset SrcDir=D:\testset DaysAgo=5forfiles /p %SrcDir% /s /m *.* /d -%Da ...
- Window Linux下实现指定目录内文件变更的监控方法
转自:http://qbaok.blog.163.com/blog/static/10129265201112302014782/ 对于监控指定目录内文件变更,window 系统提供了两个未公开API ...
- MAC下快速打开指定目录(转)
使用了这么长时间MAC,打开文件查找目录总是感觉还是不如windows来的爽快 1.通过快捷键搜索 command + 空格,输入关键词 2.通过控制台打开 1) 跳转到指定路径 cd ...
随机推荐
- SQL优化(二)-- 慢查询
1.慢查询日志 MYSQL的慢查询日志是Mysql提供的一种日志记录方式,它主要是用来记录mysql执行语句过程中,响应时间超过阀值的语句,这个阀值可以通过long_query_time去指定,比如说 ...
- Redis分布式锁这样用,有坑?
背景 在微服务项目中,大家都会去使用到分布式锁,一般也是使用Redis去实现,使用RedisTemplate.Redisson.RedisLockRegistry都行,公司的项目中,使用的是Redis ...
- CSS3-页面布局基础二——Box Model、边距折叠、内联与块标签
一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...
- react中super()的理解
首先 super() 是在 es6的class(类)的方法创建组件出现 下面是分别是构造函数创建组件和class(类)创建组件 构造函数方法创建组件 在构造函数方法中,在组件接收参数的时候,props ...
- [C++核心编程] 5 文件操作
文章目录 5 文件操作 5.1文本文件 5.1.1写文件 5.1.2读文件 5.2 二进制文件 5.2.1 写文件 5.2.2 读文件 5 文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结 ...
- 【问题排查篇】一次业务问题对 ES 的 cardinality 原理探究
作者:京东科技 王长春 业务问题 小编工作中负责业务的一个服务端系统,使用了 Elasticsearch 服务做数据存储,业务运营人员反馈,用户在使用该产品时发现,用户后台统计的订单笔数和导出的订单笔 ...
- Prism Sample 5 View Injection
这里稍微复杂了点,定义视图A的过程是一样的: <UserControl x:Class="ViewInjection.Views.ViewA" xmlns="htt ...
- 【笔记】跟吴恩达和IsaFulford学提示词工程(初级开发者入门课程)
标签: #Prompt #LLM 创建时间:2023-04-28 17:05:45 链接:课程(含JupyterNotebook) ,中文版 讲师:Andrew Ng,Isa Fulford 发表在: ...
- 【Ubuntu】2. 安装Ubuntu操作系统+VMware Tools
接上一篇,这一部分介绍了操作系统的安装 开启虚拟机,首先由四个选项,选第一个正常安装即可,这里稍等片刻就可以进入安装选项 到了这一步的话可以在左侧设置系统语言,我的英语比较垃圾就选中文了,选择完之后点 ...
- ad-hoc实战
ad-hoc实战 要求:利用Ansible搭建一个简易的作业网站,web端文件上传目录共享至nfs端,nfs的数据同步至backup 环境准备 主机名 主机角色 外网IP 内网IP m01 ansib ...