Windows下打开指定目录并定位到具体文件

这篇具有很好参考价值的文章主要介绍了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;
}

 文章来源地址https://www.toymoban.com/news/detail-540376.html

到了这里,关于Windows下打开指定目录并定位到具体文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • cp命令 复制多个目录/文件夹下文件到指定目录

    可以使用cp命令的通配符和递归选项来复制多个目录下多个文件夹下的文件到指定目录。 如果目标目录不存在,可以使用 mkdir -p命令来创建目录。 -p 选项表示递归创建目录,如果目录已经存在,则不会报错。 例如,以下命令会复制 /path/to/dir1和 /path/to/dir2 下的所有子目录中的

    2024年02月12日
    浏览(73)
  • git 拉取项目指定目录或者指定文件

    因为要做数据库自动更新,需要拉取Gitlab项目中/bm-server-biz/docs目录下的表更新sql文件,其他的都不需要,这时候可以利用git的“sparse checkout”方法(设置稀疏检出)来实现。 1、在项目目录下git 初始化  2、修改.git文件夹里面的 config 文件  .git/config  ,启用 sparse checkout(稀

    2024年02月11日
    浏览(51)
  • Linux定时删除指定目录下文件

    1,例如删除root/tmp下的所有缓存文件,tmp 及下面的所有文件与文件夹都删除后,再重新建立tmp文件夹 /root/tmp 2,给文件赋予执行权限 3,添加Linux中的定时任务, 查看crontab 任务 https://www.cnblogs.com/mr-wuxiansheng/p/14433304.html?ivk_sa=1024320u

    2024年02月16日
    浏览(54)
  • python遍历文件夹下的所有子文件夹,并将指定的文件复制到指定目录

    在1文件夹中有1,2两个文件夹 将这两个文件夹中的文件复制到 after_copy中 源文件 复制后: 参考1 源文件 复制后 参考2 如果复制bmp文件就将 suffix = \\\".json\\\" 改为 suffix = \\\".bmp\\\"

    2024年02月11日
    浏览(92)
  • 目录打开显示提示文件或目录损坏且无法读取、文件或目录损坏且无法读取的破解之道

        咱们在平日工作时,通常都会将资料放进不同的目录中,方便咱们找到,随着时间的推移就会产生有越来越多目录。最近有位用户了这样一个问题,就是目录无论怎么都无法打开,这样就无法浏览、使用里面的资料了,影响到了咱们的正常使用,那目录文件或目录损坏且

    2024年02月02日
    浏览(95)
  • 【Python】获取指定目录下的文件夹和文件

    我们经常会有对文件做批量处理的需求,获取指定目录下的文件夹和文件(有时需要获取所有文件,即子目录下的文件也需要获取)。Python 中扫描目录有两种方法: os.listdir() os.walk() 建立项目框架如下: 其中, test:项目文件夹名称,含有 aa子文件夹 和 main.py aa:文件夹,含

    2024年02月17日
    浏览(71)
  • python 解压指定目录的所有zip文件

    ========================================================== 修改了一下!!!递归所有文件夹里面的zip 附件为,打包好的exe,可以直接执行。(https://download.csdn.net/download/li13148023/88492399)

    2024年02月06日
    浏览(40)
  • shell 脚本统计 http 文件服务器下指定目录及其子目录下所有文件的大小

    shell脚本如下: 首先 vi calculate_size.sh 写入下入内容 执行 sh calculate_size.sh http://example.com/some/dir/ 即可统计 http 文件服务器http://example.com/some/dir/ 中 dir 目录及其子目录下所有文件的大小。

    2024年02月15日
    浏览(59)
  • Linux 解压tar.gz文件到指定目录

     如上例,/usr/local/src/下有一个tar包redis-6.2.5.tar.gz,要把它解压到 /tmp/redis/目录下。用-C选项参数就可以。注意,目标文件夹一定是要存在的,它不会自己创建不存在的文件夹。

    2024年02月12日
    浏览(62)
  • git commit指定要提交的特定目录、文件

    在 Git 中, git commit 命令用于将更改保存到本地仓库。默认情况下,它会将所有已修改的文件添加到提交中。然而,你可以使用不同的选项来指定要提交的目录或文件。 要指定要提交的特定目录,可以在 git commit 命令后面加上路径。例如,假设你有一个名为 my_directory 的目录

    2024年02月14日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包