python打开Windows的"打开"对话框
用ctypes模块是可以的。但是也可以去system("getopenfilename.exe"):
tdm-gcc-10.3.0.exe 61,647KB. 自带了Windows的头文件和库。
#define WIN32_LEAN_AND_MEAN #define VC_EXTRALEAN #define _WIN32_WINNT _WIN32_WINNT_WIN7 #include <windows.h> #include <commdlg.h> #include <stdio.h> #include <string.h> #define OFN_FORCESHOWHIDDEN 0x10000000 int main() { WCHAR* s = wcsdup(GetCommandLineW()); wprintf(L"%s\n", s); // https://docs.microsoft.com/en-us/windows/win32/api/commdlg/nf-commdlg-getopenfilenamew // https://docs.microsoft.com/en-us/windows/win32/api/commdlg/ns-commdlg-openfilenamea // g++ getopenfilename.cpp -lcomdlg32 // strip a.exe 24,078 bytes OPENFILENAMEW ofn; ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.lpstrFilter = L"Text Files\0*.txt\0All Files\0*.*\0"; WCHAR strFile[MAX_PATH] = L""; ofn.lpstrFile = strFile; ofn.nMaxFile = MAX_PATH; ofn.Flags = OFN_EXPLORER | OFN_ENABLESIZING | OFN_FILEMUSTEXIST | OFN_FORCESHOWHIDDEN | OFN_LONGNAMES; GetOpenFileNameW(&ofn); if (FILE* f = fopen("getopenfilename-out.txt", "wb")){ char s[MAX_PATH * 3]; WideCharToMultiByte(CP_UTF8, 0, strFile, -1, s, sizeof(s), NULL, NULL); puts(s); //fwprintf(f, L"%s\n", strFile), fclose(f); fprintf(f, "%s\n", s), fclose(f); } }
pywin32也是可以的:
int = GetOpenFileName(OPENFILENAME)
Creates an Open dialog box that lets the user specify the drive, directory, and the name of a file or set of files to open.
OPENFILENAME : string/bytes
A string packed into an OPENFILENAME structure, probably via the struct module.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?