1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| #!env python
import ctypes
from ctypes import wintypes
result = ctypes.create_string_buffer(1024)
class OPENFILENAME(ctypes.Structure):
_fields_ = [
("lStructSize", ctypes.wintypes.DWORD),
("hwndOwner", ctypes.wintypes.HWND),
("hInstance", ctypes.wintypes.HINSTANCE),
("lpstrFilter", ctypes.c_char_p),
("lpstrCustomFilter", ctypes.c_char_p),
("nMaxCustFilter", ctypes.wintypes.DWORD),
("nFilterIndex", ctypes.wintypes.DWORD),
("lpstrFile", ctypes.c_char_p),
("nMaxFile", ctypes.wintypes.DWORD),
("lpstrFileTitle", ctypes.c_char_p),
("nMaxFileTitle", ctypes.wintypes.DWORD),
("lpstrInitialDir", ctypes.c_char_p),
("lpstrTitle", ctypes.c_char_p),
("Flags", ctypes.wintypes.DWORD),
("nFileOffset", ctypes.wintypes.WORD),
("nFileExtension", ctypes.wintypes.WORD),
("lpstrDefExt", ctypes.c_char_p),
("lCustData", ctypes.wintypes.LPARAM),
("lpfnHook", ctypes.c_void_p),
("lpTemplateName", ctypes.c_char_p),
("pvReserved", ctypes.c_void_p),
("dwReserved", ctypes.wintypes.DWORD),
("FlagsEx", ctypes.wintypes.DWORD),
]
filename = OPENFILENAME(
ctypes.sizeof(OPENFILENAME),
0,
0,
bytes('*.txt', 'utf-8'),
0,
0,
0,
ctypes.cast(ctypes.addressof(result), ctypes.c_char_p),
1024,
0,
0,
bytes('C:\\', 'utf-8'),
bytes('Open a file from Python', 'utf-8'),
0,
0,
0,
bytes('txt', 'utf-8'),
0,
0,
0,
0,
0,
0
)
ctypes.windll.comdlg32.GetSaveFileNameA(ctypes.byref(filename))
print (str(result.value)) |
Partager