C++ 控制檯程式選擇檔案/資料夾
阿新 • • 發佈:2021-01-15
選擇檔案
#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; }