Was ich beim Schreiben von Code und beim Schreiben einer Funktion gelernt habe, die einen speziellen Windows-Ordner mit ctypes in Python3 öffnet.
Öffnen Sie den Schriftartenordner
import os
import ctypes
from ctypes import oledll, wintypes
def getshellfolderpath(csidl: int) -> str:
if not isinstance(csidl, int):
raise TypeError
SHGetFolderPathW = oledll.shell32.SHGetFolderPathW
SHGetFolderPathW.argtypes = [
wintypes.HWND, ctypes.c_int, wintypes.HANDLE,
wintypes.DWORD, wintypes.LPWSTR]
path = ctypes.create_unicode_buffer(wintypes.MAX_PATH)
SHGetFolderPathW(0, csidl, 0, 0, path)
return path.value
CSIDL_FONTS = 0x0014
os.startfile(getshellfolderpath(CSIDL_FONTS))
ctypes
exportiert cdll
, pydll
, windll
, oledll
zum Laden der Dynamic Link Library. cdll
und pydll
sind cdecl-Aufrufkonventionen, und windll
und ctypes.oledll
sind stdcall-Aufrufkonventionen. ctypes.oledll
nimmt einen Rückgabewert von HRESULT
an und sendet bei einem Fehler einen OSError
. Offizielle Dokumentation.
--Erstellen Sie einen Puffer vom Typ "WCHAR" mit der Funktion "ctypes.create_unicode_buffer". Sie können den String mit dem Rückgabewert value
erhalten. Offizielle Dokumentation.os.startfile
verwenden, um Dateien / Ordner in Verbindung zu öffnen.Recommended Posts