选择文件

#undef UNICODE#include "windows.h"
#include <stdlib.h>
#include <iostream>using namespace std;int main(int argc, char *argv[])
{TCHAR szBuffer[MAX_PATH] = { 0 };OPENFILENAME file = { 0 };file.hwndOwner = NULL;file.lStructSize = sizeof(file);file.lpstrFilter = "所有文件(*.*)\0*.*\0Exe文件(*.exe)\0*.exe\0";//要选择的文件后缀 file.lpstrInitialDir = "";//默认的文件路径 file.lpstrFile = szBuffer;//存放文件的缓冲区 file.nMaxFile = sizeof(szBuffer) / sizeof(*szBuffer);file.nFilterIndex = 0;file.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;//标志如果是多选要加上OFN_ALLOWMULTISELECTBOOL bSel = GetOpenFileName(&file);cout << file.lpstrFile << endl;return (0);
}

选择文件并需要获取其路径/文件名/扩展名

#undef UNICODE#include "windows.h"#include <stdio.h>
#include <cstring>
#include <stdlib.h>
#include <string>using namespace std;int main(int argc, char *argv[])
{TCHAR szBuffer[MAX_PATH] = { 0 };OPENFILENAME file = { 0 };file.hwndOwner = NULL;file.lStructSize = sizeof(file);file.lpstrFilter = "所有文件(*.*)\0*.*\0Exe文件(*.exe)\0*.exe\0";//要选择的文件后缀 file.lpstrInitialDir = "";//默认的文件路径 file.lpstrFile = szBuffer;//存放文件的缓冲区 file.nMaxFile = sizeof(szBuffer) / sizeof(*szBuffer);file.nFilterIndex = 0;file.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;//标志如果是多选要加上OFN_ALLOWMULTISELECTBOOL bSel = GetOpenFileName(&file);printf("file: %s", file.lpstrFile);string filePath = file.lpstrFile; //控制台需要用string,需要包含<string>头文件,并使用using namespace std;int start = filePath.find_last_of('\\'); //获取最后一个\\的索引int end = filePath.find_last_of('.'); //获取最后一个.的索引string filepath = filePath.substr(0, start+1);string fileName = filePath.substr(start + 1, end - start - 1);string exten = filePath.substr(end, filePath.length() - end);
}

选择文件夹

#undef UNICODE#include "windows.h"
#include <ShlObj.h>
#include <stdio.h>
#include <stdlib.h>using namespace std;int main(int argc, char *argv[])
{TCHAR szPathName[MAX_PATH];BROWSEINFO bInfo = { 0 };bInfo.hwndOwner = GetForegroundWindow();//父窗口    bInfo.lpszTitle = TEXT("浏览文件夹");bInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI/*包含一个编辑框 用户可以手动填写路径 对话框可以调整大小之类的..*/ |BIF_UAHINT/*带TIPS提示*/ | BIF_NONEWFOLDERBUTTON /*不带新建文件夹按钮*/;LPITEMIDLIST lpDlist;lpDlist = SHBrowseForFolder(&bInfo);if (lpDlist != NULL)//if (SHBrowseForFolder(&bInfo)){SHGetPathFromIDList(lpDlist, szPathName);//AfxMessageBox(NULL, szPathName, L"Dir Name", MB_OK);cout << szPathName << endl;}else{printf("user cancle\n");}return 0;
}

C++ 控制台程序选择文件/文件夹相关推荐

  1. uniapp微信小程序 选择聊天记录文件上传

    目录 精简版总结 示例 容易踩的坑 1.页面刷新问题 2.extension问题 精简版总结 单文件 wx.chooseMessageFile({count: 1,//限制选择的文件数量type: ' ...

  2. Qt创建控制台程序选择构建套件问题“No suitable kits found”

    一,问题现象 QT 选择构建套件时出现问题: 二,问题原因 "No suitable kits found" = 没有找到合适的kits套件,在安装Qt Creator时没有安装M ...

  3. C# 控制台程序的开发和打包为一个exe文件

    目录 前言 一.我的第一个C#控制台程序 二.发布为一个exe文件 前言 本文通过C#编写一个简单的示例计算器,来演示C#的使用和使用 Visual Studio 打包为一个 exe 文件. 一.我的 ...

  4. C#编写程序监测某个文件夹内是否有文件进行了增,删,改的动作?

    新建一个Console应用程序,项目名称为"FileSystemWatcher",Copy代码进,编译后就可以用了.代码如下: using System; using System ...

  5. 海康威视SDK控制台程序consoleDemo将实时码流保存为视频文件mp4

    陈拓 2021/08/28-2020/08/29 1. 概述 在<海康威视SDK控制台程序consoleDemo> https://zhuanlan.zhihu.com/p/4039038 ...

  6. vs2010打不开vs2017的.sln文件,出现错误提示 “选择的文件是解决方案文件 但是用此应用程序的较新版本创建的,无法打开”

    vs2010打不开vs2017的.sln文件,出现错误提示 "选择的文件是解决方案文件 但是用此应用程序的较新版本创建的,无法打开" 参考文章: (1)vs2010打不开vs201 ...

  7. VMware Workstation提示:另一个程序已锁定文件的一部分,进程无法访问,删除.lck文件夹和文件

    一.现象 VMware Workstation提示:另一个程序已锁定文件的一部分,进程无法访问,截图如下: 二.原因 因为虚拟机在运行的时候,会锁定文件,防止被修改,而如果系统突然崩溃,虚拟机就来不急 ...

  8. VC的Win32控制台程序中使用MFC库文件

    如果想要在VC中的Win32控制台程序中使用CString类,应注意下列情况: 1.必须包含头文件#include <afx.h> 2.Project ----settings... -- ...

  9. Windows下,文件(夹)选择/打开对话框的三种创建方式

    Windows编程时,常用到打开文件(夹)对话框,选择文件或者多个文件的功能.Windows提供了好几种方式,现在做个总结,也好方便以后的使用. 常用的方式有三种: 1.1 使用OPENFILENAM ...

最新文章

  1. WebRTC框架中的硬件加速
  2. 37_04_awk入门进阶
  3. android6.0 主题,Android 6.0 DatePickerDialog主题
  4. html中的框架frameset和frame及iframe
  5. javascript设计模式--javascript的数据类型
  6. 3.集--LinkedTransferQueue得知
  7. 这几张图告诉你程序员的变化,最后一张图扎心了
  8. (12)Verilog HDL变量:reg型
  9. Python debug —— invalid literal for int() with base 10
  10. 在线开启mysql慢查询
  11. 2017年北京共享单车数据(订单数据)
  12. 自动化领域(控制领域)主要期刊汇总整理(SCI和EI)
  13. hololens 播放video
  14. 通过Web界面统一管理AD和Exchange的工具
  15. 网页怎么算切屏_电脑怎么切屏
  16. mysql5.7 离线安装_Linux离线安装MySQL5.7
  17. P1053 篝火晚会
  18. Vue Mixin 与小程序 Mixins 应用
  19. [学习笔记]使用GNU Toolchain在STM32上跑起一个最小OS
  20. ARM Linux异常处理之data abort(一)

热门文章

  1. 《数据结构》实验二:线性表的实验(实验报告)
  2. ZeroClipboard2跨浏览器复制粘贴
  3. 数组截取方法-Arrays.copyOfRange()详解
  4. 解决win10系统CPU占用过高【亲测非常有效】
  5. Win10 串口编程
  6. vMotion迁移报错提示目标主机不支持虚拟机的当前硬件要求
  7. 神经网络怎么学,怎么学神经网络
  8. Linux【shell】 shell编程
  9. java流的试题_Java练习题 - Stream流
  10. Spring @Autowired 用法