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 ...
随机推荐
- Mysql简明语法
show databases ; use mybatis; show tables ; select * from user; select * from user where id=1; updat ...
- 【SpringCloud】(一)分布式理论
分布式架构理论 方法远程调用 各个模块运行于不同的tomcat,模块之间通过网络进行调用. 远程调用的技术演进 1 WebService 解决应用程序之间的跨平台访问问题,基于SOAP/WSDL协议, ...
- 深度学习-08(PaddlePaddle文本分类)
深度学习-08(PaddlePaddle文本分类) 文章目录 深度学习-08(PaddlePaddle文本分类) NLP概述 NLP基本概念 什么是NLP NLP的主要任务 传统NLP方法 传统NLP ...
- 2021牛客OI赛前集训营-提高组(第三场) 第二题 交替 题解与结论证明
题目描述 一个长度为 \(n\) 的数组\(A\),每秒都会变成一个长度为 \(n − 1\) 新数组 \(A'\),其变化规 则如下: 若当前数组 \(A\) 的长度 \(n\) 为偶数,则对于新数 ...
- 在 CentOS 上搭建 Mumble 服务器
Mumble 服务器搭建 前言 Mumble 是一个开源.低延迟.高质量的语音通话平台.可以在多个平台搭建,并且有多个开源的客户端(Windows.Linux.Android.MacOS).这是 官网 ...
- 2020-12-15:mysql的回滚机制是怎么实现的?
福哥答案2020-12-15:[答案来自此链接:](https://www.cnblogs.com/ld-swust/p/5607983.html)在 MySQL 中,恢复机制是通过回滚日志(undo ...
- 2021-01-07:cdn加速是什么原理?
福哥答案2021-01-07:[答案来自此链接:](https://www.zhihu.com/question/438234873)CDN(Content Delivery Network):内容分 ...
- 2021-04-18:给定一个二维数组matrix,里面的值不是1就是0,上、下、左、右相邻的1认为是一片岛,返回matrix中岛的数量。
2021-04-18:给定一个二维数组matrix,里面的值不是1就是0,上.下.左.右相邻的1认为是一片岛,返回matrix中岛的数量. 福大大 答案2021-04-18: 并查集. 代码用gola ...
- 2021-05-25:给定一个矩阵matrix,值有正、负、
2021-05-25:给定一个矩阵matrix,值有正.负.0,蛇可以空降到最左列的任何一个位置,初始增长值是0,蛇每一步可以选择右上.右.右下三个方向的任何一个前进,沿途的数字累加起来,作为增长值: ...
- 2021-08-31:去除重复字母。给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。力扣316。
2021-08-31:去除重复字母.给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次.需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置).力扣316. 福大大 答案 ...