1. 程式人生 > 其它 >C++ 控制檯程式選擇檔案/資料夾

C++ 控制檯程式選擇檔案/資料夾

技術標籤:C++c++

選擇檔案

#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_ALLOWMULTISELECT
	BOOL bSel = GetOpenFileName(&file);
	cout << file.lpstrFile << endl;

	return (0);
}

選擇資料夾

#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;
}