216e1a9f71
Commit the original Caesium 1.7.0 codebase with some adjustment. You can also get the original source at: https://sourceforge.net/projects/caesium/files/1.7.0/ Since the file names listed in the Qt resource file have encoding issue which can cause compile failure, these files get removed. Adjustments: + .gitignore M icons.qrc - *.pro.user(.*) - icons/language/*.png
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
"""
|
|
win32_unicode_argv.py
|
|
|
|
Importing this will replace sys.argv with a full Unicode form.
|
|
Windows only.
|
|
|
|
From this site, with adaptations:
|
|
http://code.activestate.com/recipes/572200/
|
|
|
|
Usage: simply import this module into a script. sys.argv is changed to
|
|
be a list of Unicode strings.
|
|
"""
|
|
|
|
|
|
import sys
|
|
|
|
def win32_unicode_argv():
|
|
"""Uses shell32.GetCommandLineArgvW to get sys.argv as a list of Unicode
|
|
strings.
|
|
|
|
Versions 2.x of Python don't support Unicode in sys.argv on
|
|
Windows, with the underlying Windows API instead replacing multi-byte
|
|
characters with '?'.
|
|
"""
|
|
|
|
from ctypes import POINTER, byref, cdll, c_int, windll
|
|
from ctypes.wintypes import LPCWSTR, LPWSTR
|
|
|
|
GetCommandLineW = cdll.kernel32.GetCommandLineW
|
|
GetCommandLineW.argtypes = []
|
|
GetCommandLineW.restype = LPCWSTR
|
|
|
|
CommandLineToArgvW = windll.shell32.CommandLineToArgvW
|
|
CommandLineToArgvW.argtypes = [LPCWSTR, POINTER(c_int)]
|
|
CommandLineToArgvW.restype = POINTER(LPWSTR)
|
|
|
|
cmd = GetCommandLineW()
|
|
argc = c_int(0)
|
|
argv = CommandLineToArgvW(cmd, byref(argc))
|
|
if argc.value > 0:
|
|
# Remove Python executable and commands if present
|
|
start = argc.value - len(sys.argv)
|
|
return [argv[i] for i in
|
|
xrange(start, argc.value)]
|
|
|
|
sys.argv = win32_unicode_argv()
|