本文整理汇总了C++中CommandLineToArgvW函数的典型用法代码示例。如果您正苦于以下问题:C++ CommandLineToArgvW函数的具体用法?C++ CommandLineToArgvW怎么用?C++ CommandLineToArgvW使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CommandLineToArgvW函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
/* main - open file system, list inode info */
int
main(int argc, char **argv1)
{
TSK_IMG_TYPE_ENUM imgtype = TSK_IMG_TYPE_DETECT;
TSK_IMG_INFO *img;
TSK_OFF_T imgaddr = 0;
TSK_FS_TYPE_ENUM fstype = TSK_FS_TYPE_DETECT;
TSK_FS_INFO *fs;
TSK_TCHAR *cp, *dash;
TSK_INUM_T istart = 0, ilast = 0;
int ch;
int flags = TSK_FS_META_FLAG_UNALLOC | TSK_FS_META_FLAG_USED;
int ils_flags = 0;
int set_range = 1;
TSK_TCHAR *image = NULL;
int32_t sec_skew = 0;
TSK_TCHAR **argv;
unsigned int ssize = 0;
#ifdef TSK_WIN32
// On Windows, get the wide arguments (mingw doesn't support wmain)
argv = CommandLineToArgvW(GetCommandLineW(), &argc);
if (argv == NULL) {
fprintf(stderr, "Error getting wide arguments\n");
exit(1);
}
#else
argv = (TSK_TCHAR **) argv1;
#endif
progname = argv[0];
setlocale(LC_ALL, "");
/*
* Provide convenience options for the most commonly selected feature
* combinations.
*/
while ((ch =
GETOPT(argc, argv, _TSK_T("aAb:ef:i:lLmo:Oprs:vVzZ"))) > 0) {
switch (ch) {
case _TSK_T('?'):
default:
TFPRINTF(stderr, _TSK_T("Invalid argument: %s\n"),
argv[OPTIND]);
usage();
case _TSK_T('b'):
ssize = (unsigned int) TSTRTOUL(OPTARG, &cp, 0);
if (*cp || *cp == *OPTARG || ssize < 1) {
TFPRINTF(stderr,
_TSK_T
("invalid argument: sector size must be positive: %s\n"),
OPTARG);
usage();
}
break;
case _TSK_T('f'):
if (TSTRCMP(OPTARG, _TSK_T("list")) == 0) {
tsk_fs_type_print(stderr);
exit(1);
}
fstype = tsk_fs_type_toid(OPTARG);
if (fstype == TSK_FS_TYPE_UNSUPP) {
TFPRINTF(stderr,
_TSK_T("Unsupported file system type: %s\n"), OPTARG);
usage();
}
break;
case _TSK_T('i'):
if (TSTRCMP(OPTARG, _TSK_T("list")) == 0) {
tsk_img_type_print(stderr);
exit(1);
}
imgtype = tsk_img_type_toid(OPTARG);
if (imgtype == TSK_IMG_TYPE_UNSUPP) {
TFPRINTF(stderr, _TSK_T("Unsupported image type: %s\n"),
OPTARG);
usage();
}
break;
case _TSK_T('e'):
flags |= (TSK_FS_META_FLAG_ALLOC | TSK_FS_META_FLAG_UNALLOC);
flags &= ~TSK_FS_META_FLAG_USED;
break;
case _TSK_T('m'):
ils_flags |= TSK_FS_ILS_MAC;
break;
case _TSK_T('o'):
if ((imgaddr = tsk_parse_offset(OPTARG)) == -1) {
tsk_error_print(stderr);
exit(1);
}
break;
case _TSK_T('O'):
flags |= TSK_FS_META_FLAG_UNALLOC;
flags &= ~TSK_FS_META_FLAG_ALLOC;
ils_flags |= TSK_FS_ILS_OPEN;
break;
//.........这里部分代码省略.........
示例2: WinMain
//-----------------------------------------------------------------------------
// Name: WinMain()
// Desc: The application's entry point
//-----------------------------------------------------------------------------
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR commandLine, INT )
{
//this can't be set from CAdvancedSettings::Initialize() because it will overwrite
//the loglevel set with the --debug flag
#ifdef _DEBUG
g_advancedSettings.m_logLevel = LOG_LEVEL_DEBUG;
g_advancedSettings.m_logLevelHint = LOG_LEVEL_DEBUG;
#else
g_advancedSettings.m_logLevel = LOG_LEVEL_NORMAL;
g_advancedSettings.m_logLevelHint = LOG_LEVEL_NORMAL;
#endif
// Initializes CreateMiniDump to handle exceptions.
SetUnhandledExceptionFilter( CreateMiniDump );
// check if XBMC is already running
CreateMutex(NULL, FALSE, "XBMC Media Center");
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
HWND m_hwnd = FindWindow("XBMC","XBMC");
if(m_hwnd != NULL)
{
// switch to the running instance
ShowWindow(m_hwnd,SW_RESTORE);
SetForegroundWindow(m_hwnd);
}
return 0;
}
#ifndef HAS_DX
if(CWIN32Util::GetDesktopColorDepth() < 32)
{
//FIXME: replace it by a SDL window for all ports
MessageBox(NULL, "Desktop Color Depth isn't 32Bit", "XBMC: Fatal Error", MB_OK|MB_ICONERROR);
return 0;
}
#endif
//Initialize COM
CoInitializeEx(NULL, COINIT_MULTITHREADED);
// parse the command line
CStdStringW strcl(commandLine);
LPWSTR *szArglist;
int nArgs;
setlocale(LC_NUMERIC, "C");
g_advancedSettings.Initialize();
szArglist = CommandLineToArgvW(strcl.c_str(), &nArgs);
if(szArglist != NULL)
{
for(int i=0;i<nArgs;i++)
{
CStdStringW strArgW(szArglist[i]);
if(strArgW.Equals(L"-fs"))
g_advancedSettings.m_startFullScreen = true;
else if(strArgW.Equals(L"-p") || strArgW.Equals(L"--portable"))
g_application.EnablePlatformDirectories(false);
else if(strArgW.Equals(L"-d"))
{
if(++i < nArgs)
{
int iSleep = _wtoi(szArglist[i]);
if(iSleep > 0 && iSleep < 360)
Sleep(iSleep*1000);
else
--i;
}
}
else if(strArgW.Equals(L"--debug"))
{
g_advancedSettings.m_logLevel = LOG_LEVEL_DEBUG;
g_advancedSettings.m_logLevelHint = LOG_LEVEL_DEBUG;
}
}
LocalFree(szArglist);
}
WSADATA wd;
WSAStartup(MAKEWORD(2,2), &wd);
// Create and run the app
if(!g_application.Create())
{
CStdString errorMsg;
errorMsg.Format("CApplication::Create() failed - check log file and that it is writable");
MessageBox(NULL, errorMsg.c_str(), "XBMC: Error", MB_OK|MB_ICONERROR);
return 0;
}
#ifndef _DEBUG
// we don't want to see the "no disc in drive" windows message box
SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX);
#endif
g_application.Run();
//.........这里部分代码省略.........
示例3: defined
#ifndef WITH_PYTHON_MODULE
bArgs *ba;
#endif
#ifdef WIN32
/* FMA3 support in the 2013 CRT is broken on Vista and Windows 7 RTM (fixed in SP1). Just disable it. */
# if defined(_MSC_VER) && _MSC_VER >= 1800 && defined(_M_X64)
_set_FMA3_enable(0);
# endif
/* Win32 Unicode Args */
/* NOTE: cannot use guardedalloc malloc here, as it's not yet initialized
* (it depends on the args passed in, which is what we're getting here!)
*/
wchar_t **argv_16 = CommandLineToArgvW(GetCommandLineW(), &argc);
char **argv = malloc(argc * sizeof(char *));
int argci = 0;
for (argci = 0; argci < argc; argci++) {
argv[argci] = alloc_utf_8_from_16(argv_16[argci], 0);
}
LocalFree(argv_16);
#endif
/* NOTE: Special exception for guarded allocator type switch:
* we need to perform switch from lock-free to fully
* guarded allocator before any allocation happened.
*/
{
示例4: WinMain
int WINAPI
WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
int argc;
WCHAR** argv;
DWORD dwSize;
HWND hMainWnd;
MSG msg;
WNDCLASSEXW wincl;
HINSTANCE hDLL;
PGFRI GetFontResourceInfoW;
LPCWSTR fileName;
switch (GetUserDefaultUILanguage())
{
case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT):
SetProcessDefaultLayout(LAYOUT_RTL);
break;
default:
break;
}
g_hInstance = hThisInstance;
/* Get unicode command line */
argv = CommandLineToArgvW(GetCommandLineW(), &argc);
if (argc < 2)
{
OPENFILENAMEW fontOpen;
WCHAR szFileName[MAX_PATH] = L"";
HLOCAL dialogTitle = NULL;
/* Gets the title for the dialog box ready */
FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL, IDS_OPEN, 0, (LPWSTR)&dialogTitle, 0, NULL);
/* Clears out any values of fontOpen before we use it */
ZeroMemory(&fontOpen, sizeof(fontOpen));
/* Sets up the open dialog box */
fontOpen.lStructSize = sizeof(fontOpen);
fontOpen.hwndOwner = NULL;
fontOpen.lpstrFilter = L"TrueType Font (*.ttf)\0*.ttf\0"
L"All Files (*.*)\0*.*\0";
fontOpen.lpstrFile = szFileName;
fontOpen.lpstrTitle = dialogTitle;
fontOpen.nMaxFile = MAX_PATH;
fontOpen.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
fontOpen.lpstrDefExt = L"ttf";
/* Opens up the Open File dialog box in order to chose a font file. */
if(GetOpenFileNameW(&fontOpen))
{
fileName = fontOpen.lpstrFile;
g_fileName = fileName;
} else {
/* If the user decides to close out of the open dialog effectively
exiting the program altogether */
return 0;
}
LocalFree(dialogTitle);
}
else
{
/* Try to add the font resource from command line */
fileName = argv[1];
g_fileName = fileName;
}
if (!AddFontResourceW(fileName))
{
ErrorMsgBox(0, IDS_ERROR, IDS_ERROR_NOFONT, fileName);
return -1;
}
/* Load the GetFontResourceInfo function from gdi32.dll */
hDLL = LoadLibraryW(L"GDI32.DLL");
GetFontResourceInfoW = (PGFRI)GetProcAddress(hDLL, "GetFontResourceInfoW");
/* Get the font name */
dwSize = sizeof(g_ExtLogFontW.elfFullName);
if (!GetFontResourceInfoW(fileName, &dwSize, g_ExtLogFontW.elfFullName, 1))
{
ErrorMsgBox(0, IDS_ERROR, IDS_ERROR_NOFONT, fileName);
return -1;
}
dwSize = sizeof(LOGFONTW);
if (!GetFontResourceInfoW(fileName, &dwSize, &g_ExtLogFontW.elfLogFont, 2))
{
ErrorMsgBox(0, IDS_ERROR, IDS_ERROR_NOFONT, fileName);
return -1;
}
if (!Display_InitClass(hThisInstance))
//.........这里部分代码省略.........
示例5: parse_cmdline_options
/**
* Parse command line arguments.
*
* @param cmd_line structure to store parsed options data
*/
static void parse_cmdline_options(struct parsed_cmd_line_t* cmd_line)
{
int argc;
int n_files = 0, b_opt_end = 0;
rsh_tchar** files;
rsh_tchar **parg, **end_arg;
parsed_option_t *next_opt;
#ifdef _WIN32
parg = cmd_line->warg = CommandLineToArgvW(GetCommandLineW(), &argc);
if( NULL == parg || argc < 1) {
die(_("CommandLineToArgvW failed\n"));
}
#else
argc = cmd_line->argc;
parg = cmd_line->argv;
#endif
/* allocate array for files */
files = (rsh_tchar**)rsh_malloc(argc * sizeof(rsh_tchar*));
end_arg = parg + argc;
/* loop by program arguments */
for(parg++; parg < end_arg; parg++)
{
/* if argument is not an option */
if((*parg)[0] != RSH_T('-') || (*parg)[1] == 0 || b_opt_end) {
/* it's a file, note that '-' is interpreted as stdin */
files[n_files++] = *parg;
continue;
}
assert((*parg)[0] == RSH_T('-') && (*parg)[1] != 0);
if((*parg)[1] == L'-' && (*parg)[2] == 0) {
b_opt_end = 1; /* string "--" means end of options */
continue;
}
/* check for "--" */
if((*parg)[1] == RSH_T('-')) {
cmdline_opt_t *t;
/* allocate parsed_option */
rsh_blocks_vector_add_empty(&cmd_line->options, 16, sizeof(parsed_option_t));
next_opt = rsh_blocks_vector_get_item(&cmd_line->options, cmd_line->options.size - 1, 16, parsed_option_t);
/* find the long option */
parse_long_option(next_opt, &parg);
t = next_opt->o;
/* process encoding and -o/-l options early */
if(is_output_modifier(t->type)) {
apply_option(&opt, next_opt);
}
} else if((*parg)[1] != 0) {
/* found '-'<some string> */
rsh_tchar* ptr;
/* parse short options. A string of several characters is interpreted
* as separate short options */
for(ptr = *parg + 1; *ptr; ptr++) {
cmdline_opt_t *t;
char ch = (char)*ptr;
#ifdef _WIN32
if(((unsigned)*ptr) >= 128) {
ptr[1] = 0;
fail_on_unknow_option(w2c(ptr));
}
#endif
/* allocate parsed_option */
rsh_blocks_vector_add_empty(&cmd_line->options, 16, sizeof(parsed_option_t));
next_opt = rsh_blocks_vector_get_item(&cmd_line->options, cmd_line->options.size - 1, 16, parsed_option_t);
next_opt->buf[0] = '-', next_opt->buf[1] = ch, next_opt->buf[2] = '\0';
next_opt->name = next_opt->buf;
next_opt->parameter = NULL;
/* search for the short option */
for(t = cmdline_opt; t->type && ch != t->short1 && ch != t->short2; t++);
if(!t->type) fail_on_unknow_option(next_opt->buf);
next_opt->o = t;
if(is_param_required(t->type)) {
next_opt->parameter = (ptr[1] ? ptr + 1 : *(++parg));
if(!next_opt->parameter) {
/* note: need to check for parameter here, for early -o/-l options processing */
log_error(_("argument is required for option %s\n"), next_opt->name);
rsh_exit(2);
}
}
/* process encoding and -o/-l options early */
if(is_output_modifier(t->type)) {
apply_option(&opt, next_opt);
//.........这里部分代码省略.........
示例6: WinMain
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nShowCmd)
{
LPWSTR pCommandLineW = GetCommandLineW();
int retVal = 0;
DWORD id = 0;
int numArgs = 0;
bool safe = false;
#ifdef _WIN64
const wchar_t pDLLName[] = L"GraphicsCaptureHook64.dll";
#else
const wchar_t pDLLName[] = L"GraphicsCaptureHook.dll";
#endif
/* -------------------------- */
LPWSTR *pCommandLineArgs = CommandLineToArgvW(pCommandLineW, &numArgs);
LoadSeDebugPrivilege();
if (numArgs > 2)
{
safe = *pCommandLineArgs[2] == '1';
id = wcstoul(pCommandLineArgs[1], NULL, 10);
if (id != 0)
{
if (!safe)
{
OPPROC pOpenProcess;
HANDLE hProcess;
char pOPStr[12];
int i;
memcpy(pOPStr, "NpflUvhel{x", 12); //OpenProcess obfuscated
for (i = 0; i<11; i++) pOPStr[i] ^= i ^ 1;
pOpenProcess = (OPPROC)GetProcAddress(GetModuleHandle(TEXT("KERNEL32")), pOPStr);
hProcess = (*pOpenProcess)(PROCESS_ALL_ACCESS, FALSE, id);
if (hProcess)
{
UINT dirLen = GetCurrentDirectory(0, 0); /* includes null terminator */
const UINT fileNameLen = (sizeof(pDLLName) / sizeof(wchar_t)) - 1;
UINT len = dirLen + fileNameLen + 1; /* 1 for '/' */
wchar_t *pPath;
/* -------------------------- */
if (dirLen)
{
pPath = (wchar_t*)malloc(len * sizeof(wchar_t));
memset(pPath, 0, len * sizeof(wchar_t));
GetCurrentDirectoryW(dirLen, pPath);
pPath[dirLen - 1] = '\\';
wcsncpy_s(pPath + dirLen, len - dirLen, pDLLName, fileNameLen);
if (!InjectLibrary(hProcess, pPath, len - 1))
{
retVal = GetLastError();
if (!retVal)
retVal = -5;
}
free(pPath);
}
else
retVal = -4;
CloseHandle(hProcess);
}
else
retVal = -3;
}
else
{
UINT dirLen = GetCurrentDirectory(0, 0); /* includes null terminator */
const UINT fileNameLen = (sizeof(pDLLName) / sizeof(wchar_t)) - 1;
UINT len = dirLen + fileNameLen + 1; /* 1 for '/' */
wchar_t *pPath;
/* -------------------------- */
if (dirLen)
{
pPath = (wchar_t*)malloc(len * sizeof(wchar_t));
memset(pPath, 0, len * sizeof(wchar_t));
GetCurrentDirectoryW(dirLen, pPath);
pPath[dirLen - 1] = '\\';
wcsncpy_s(pPath + dirLen, len - dirLen, pDLLName, fileNameLen);
if (!InjectLibrarySafe(id, pPath, len - 1))
{
retVal = GetLastError();
if (!retVal)
retVal = -7;
}
free(pPath);
//.........这里部分代码省略.........
示例7: wWinMain
int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE prevInstance, LPWSTR cmdParamarg, int cmdShow) {
openLog();
_oldWndExceptionFilter = SetUnhandledExceptionFilter(_exceptionFilter);
// CAPIHook apiHook("kernel32.dll", "SetUnhandledExceptionFilter", (PROC)RedirectedSetUnhandledExceptionFilter);
writeLog(L"Updaters started..");
LPWSTR *args;
int argsCount;
bool needupdate = false, autostart = false, debug = false, writeprotected = false, startintray = false, testmode = false, externalupdater = false;
args = CommandLineToArgvW(GetCommandLine(), &argsCount);
if (args) {
for (int i = 1; i < argsCount; ++i) {
writeLog(std::wstring(L"Argument: ") + args[i]);
if (equal(args[i], L"-update")) {
needupdate = true;
} else if (equal(args[i], L"-autostart")) {
autostart = true;
} else if (equal(args[i], L"-debug")) {
debug = _debug = true;
openLog();
} else if (equal(args[i], L"-startintray")) {
startintray = true;
} else if (equal(args[i], L"-testmode")) {
testmode = true;
} else if (equal(args[i], L"-externalupdater")) {
externalupdater = true;
} else if (equal(args[i], L"-writeprotected") && ++i < argsCount) {
writeLog(std::wstring(L"Argument: ") + args[i]);
writeprotected = true;
updateTo = args[i];
for (int j = 0, l = updateTo.size(); j < l; ++j) {
if (updateTo[j] == L'/') {
updateTo[j] = L'\\';
}
}
} else if (equal(args[i], L"-workdir") && ++i < argsCount) {
writeLog(std::wstring(L"Argument: ") + args[i]);
customWorkingDir = args[i];
} else if (equal(args[i], L"-key") && ++i < argsCount) {
writeLog(std::wstring(L"Argument: ") + args[i]);
customKeyFile = args[i];
} else if (equal(args[i], L"-exename") && ++i < argsCount) {
writeLog(std::wstring(L"Argument: ") + args[i]);
exeName = args[i];
for (int j = 0, l = exeName.size(); j < l; ++j) {
if (exeName[j] == L'/' || exeName[j] == L'\\') {
exeName = L"Telegram.exe";
break;
}
}
}
}
if (exeName.empty()) {
exeName = L"Telegram.exe";
}
if (needupdate) writeLog(L"Need to update!");
if (autostart) writeLog(L"From autostart!");
if (writeprotected) writeLog(L"Write Protected folder!");
if (!customWorkingDir.empty()) writeLog(L"Will pass custom working dir: " + customWorkingDir);
updaterName = args[0];
writeLog(L"Updater name is: " + updaterName);
if (updaterName.size() > 11) {
if (equal(updaterName.substr(updaterName.size() - 11), L"Updater.exe")) {
updaterDir = updaterName.substr(0, updaterName.size() - 11);
writeLog(L"Updater dir is: " + updaterDir);
if (!writeprotected) {
updateTo = updaterDir;
}
writeLog(L"Update to: " + updateTo);
if (needupdate && update()) {
updateRegistry();
}
if (writeprotected) { // if we can't clear all tupdates\ready (Updater.exe is there) - clear only version
if (DeleteFile(L"tupdates\\temp\\tdata\\version") || DeleteFile(L"tupdates\\ready\\tdata\\version")) {
writeLog(L"Version file deleted!");
} else {
writeLog(L"Error: could not delete version file");
}
}
} else {
writeLog(L"Error: bad exe name!");
}
} else {
writeLog(L"Error: short exe name!");
}
LocalFree(args);
} else {
writeLog(L"Error: No command line arguments!");
}
wstring targs;
if (autostart) targs += L" -autostart";
if (debug) targs += L" -debug";
if (startintray) targs += L" -startintray";
if (testmode) targs += L" -testmode";
if (externalupdater) targs += L" -externalupdater";
//.........这里部分代码省略.........
示例8: ParseCommandLine
//--------------------------------------------------------------------------------------
// Parses the command line for parameters. See DXUTInit() for list
//--------------------------------------------------------------------------------------
bool ParseCommandLine( SETTINGS* pSettings )
{
bool bDisplayError = false;
bool bDisplayHelp = false;
WCHAR* strCmdLine;
WCHAR* strArg;
int nNumArgs;
WCHAR** pstrArgList = CommandLineToArgvW( GetCommandLine(), &nNumArgs );
for( int iArg=1; iArg<nNumArgs; iArg++ )
{
strCmdLine = pstrArgList[iArg];
// Handle flag args
if( *strCmdLine == L'/' || *strCmdLine == L'-' )
{
strCmdLine++;
if( IsNextArg( strCmdLine, L"y" ) )
{
pSettings->bOverwrite = true;
continue;
}
if( IsNextArg( strCmdLine, L"t" ) )
{
pSettings->bGenTangents = true;
continue;
}
if( IsNextArg( strCmdLine, L"tb" ) )
{
pSettings->bGenTangents = true;
pSettings->bGenBinormals = true;
continue;
}
if( IsNextArg( strCmdLine, L"a" ) )
{
pSettings->bRetainAnimation = true;
continue;
}
if( IsNextArg( strCmdLine, L"v" ) )
{
pSettings->bVerbose = true;
continue;
}
if( IsNextArg( strCmdLine, L"xt" ) )
{
pSettings->outputType = MESH_TYPE_X_TEXT;
continue;
}
if( IsNextArg( strCmdLine, L"x" ) )
{
pSettings->outputType = MESH_TYPE_X_BINARY;
continue;
}
if( IsNextArg( strCmdLine, L"sdkmesh" ) )
{
pSettings->outputType = MESH_TYPE_SDKMESH;
continue;
}
if( IsNextArg( strCmdLine, L"o" ) )
{
if( iArg+1 < nNumArgs )
{
strArg = pstrArgList[++iArg];
pSettings->bOutputFileProvided = true;
StringCchCopy( pSettings->strOutputFile, 256, strArg );
continue;
}
wprintf( L"Incorrect flag usage: /o\n" );
bDisplayError = true;
continue;
}
if( IsNextArg( strCmdLine, L"?" ) )
{
DisplayUsage();
return false;
}
// Unrecognized flag
wprintf( L"Unrecognized or incorrect flag usage: %s\n", strCmdLine );
bDisplayError = true;
}
else
{
// Handle non-flag args as seperate input file
if( pSettings->bInputFileProvided )
{
//.........这里部分代码省略.........
示例9: main
int main(void)
{
int argc;
TCHAR** argv = CommandLineToArgvW(GetCommandLineW(), &argc);
return _tmain(argc, argv);
}
示例10: os_initialize
bool os_initialize( application_t* app )
{
//
// We only need to set the resource path on Windows. There are no
// system events to install handlers for, etc. We say that the
// resource path is the folder with the executable inside.
//
LPWSTR *szArglist;
int nArgs;
szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
if( NULL == szArglist )
throw std::runtime_error("CommandLineToArgvW failed");
std::string directory_string;
if (!hackery::LPCWSTR_to_string(szArglist[0], directory_string))
throw std::runtime_error("Path character conversion failed.");
std::string file1;
if (nArgs >= 2 && !hackery::LPCWSTR_to_string(szArglist[1], file1))
throw std::runtime_error("Path character conversion failed.");
std::string file2;
if (nArgs >= 3 && !hackery::LPCWSTR_to_string(szArglist[2], file2))
throw std::runtime_error("Path character conversion failed.");
clip_quotes(directory_string);
//
// Now we need to get a directory from the command line name.
//
boost::filesystem::path directory( directory_string, boost::filesystem::native );
//
// Tell the application...
//
app->set_resource_directory( directory.branch_path() );
setup_main_window( app );
if (!file1.empty())
{
clip_quotes(file1);
open_document(app, file1);
}
if (!file2.empty())
{
clip_quotes(file2);
open_document(app, file2);
}
LocalFree(szArglist);
return true;
}
示例11: psutil_get_arg_list
/*
* returns a Python list representing the arguments for the process
* with given pid or NULL on error.
*/
PyObject*
psutil_get_arg_list(long pid)
{
int nArgs, i;
LPWSTR *szArglist = NULL;
HANDLE hProcess = NULL;
PVOID pebAddress;
PVOID rtlUserProcParamsAddress;
UNICODE_STRING commandLine;
WCHAR *commandLineContents = NULL;
PyObject *arg = NULL;
PyObject *arg_from_wchar = NULL;
PyObject *argList = NULL;
hProcess = psutil_handle_from_pid(pid);
if(hProcess == NULL) {
return NULL;
}
pebAddress = psutil_get_peb_address(hProcess);
/* get the address of ProcessParameters */
#ifdef _WIN64
if (!ReadProcessMemory(hProcess, (PCHAR)pebAddress + 32,
&rtlUserProcParamsAddress, sizeof(PVOID), NULL))
#else
if (!ReadProcessMemory(hProcess, (PCHAR)pebAddress + 0x10,
&rtlUserProcParamsAddress, sizeof(PVOID), NULL))
#endif
{
////printf("Could not read the address of ProcessParameters!\n");
PyErr_SetFromWindowsErr(0);
goto error;
}
/* read the CommandLine UNICODE_STRING structure */
#ifdef _WIN64
if (!ReadProcessMemory(hProcess, (PCHAR)rtlUserProcParamsAddress + 112,
&commandLine, sizeof(commandLine), NULL))
#else
if (!ReadProcessMemory(hProcess, (PCHAR)rtlUserProcParamsAddress + 0x40,
&commandLine, sizeof(commandLine), NULL))
#endif
{
////printf("Could not read CommandLine!\n");
PyErr_SetFromWindowsErr(0);
goto error;
}
/* allocate memory to hold the command line */
commandLineContents = (WCHAR *)malloc(commandLine.Length+1);
if (commandLineContents == NULL) {
PyErr_NoMemory();
goto error;
}
/* read the command line */
if (!ReadProcessMemory(hProcess, commandLine.Buffer,
commandLineContents, commandLine.Length, NULL))
{
////printf("Could not read the command line string!\n");
PyErr_SetFromWindowsErr(0);
goto error;
}
/* print the commandline */
////printf("%.*S\n", commandLine.Length / 2, commandLineContents);
// null-terminate the string to prevent wcslen from returning incorrect length
// the length specifier is in characters, but commandLine.Length is in bytes
commandLineContents[(commandLine.Length/sizeof(WCHAR))] = '\0';
// attemempt tp parse the command line using Win32 API, fall back on string
// cmdline version otherwise
szArglist = CommandLineToArgvW(commandLineContents, &nArgs);
if (NULL == szArglist) {
// failed to parse arglist
// encode as a UTF8 Python string object from WCHAR string
arg_from_wchar = PyUnicode_FromWideChar(commandLineContents,
commandLine.Length / 2);
if (arg_from_wchar == NULL)
goto error;
#if PY_MAJOR_VERSION >= 3
argList = Py_BuildValue("N", PyUnicode_AsUTF8String(arg_from_wchar));
#else
argList = Py_BuildValue("N", PyUnicode_FromObject(arg_from_wchar));
#endif
if (!argList)
goto error;
}
else {
// arglist parsed as array of UNICODE_STRING, so convert each to Python
// string object and add to arg list
argList = Py_BuildValue("[]");
if (argList == NULL)
//.........这里部分代码省略.........
示例12: WinMain
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int iCmdShow)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
WCHAR combinedOptions[2048];
HWND hWnd;
HDC hDC;
HGLRC hRC;
MSG msg;
BOOL quit = FALSE;
LPWSTR *szArgList;
int argCount;
LPWSTR pathToEmulator = NULL;
LPWSTR pathToRom = NULL;
LPWSTR cmdLineOptions = NULL;
bool splitScreen = false;
GLuint texID;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
szArgList = CommandLineToArgvW(GetCommandLine(), &argCount);
for(int i = 0; i < argCount; i++)
{
LPWSTR s = szArgList[i];
if(wcsstr( s, TEXT("--emupath=")) > 0)
{
pathToEmulator = wcsstr( s, TEXT("="))+1;
continue;
}
if(wcsstr( s, TEXT("--rompath=")) > 0)
{
pathToRom = wcsstr( s, TEXT("="))+1;
continue;
}
if(wcsstr( s, TEXT("--options=")) > 0)
{
cmdLineOptions = wcsstr( s, TEXT("="))+1;
continue;
}
}
if(pathToEmulator == NULL)
{
exit(1);
}
wsprintf(combinedOptions, TEXT("\"%s\" \"%s\" %s"), pathToEmulator, pathToRom, cmdLineOptions);
RegisterWindowClass(hInstance);
hWnd = CreateWindowEx(
WS_EX_TOPMOST|WS_EX_TOOLWINDOW ,
TEXT("GLSample"),
TEXT("OpenGL Sample"),
WS_POPUP|WS_VISIBLE|WS_SYSMENU,
0, 0, 512, 512,
NULL, NULL, hInstance, NULL );
SetWindowLong(hWnd, GWL_EXSTYLE,
GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED | WS_EX_TRANSPARENT);
// enable OpenGL for the window
EnableOpenGL( hWnd, &hDC, &hRC );
SetLayeredWindowAttributes(hWnd, 0,255, LWA_ALPHA);
// init openGL
glEnable(GL_TEXTURE_2D);
//.........这里部分代码省略.........
示例13: _tWinMain
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE /*hPrevInstance*/,
LPTSTR lpCmdLine,
int /*nCmdShow*/)
{
SetDllDirectory(L"");
SetTaskIDPerUUID();
CRegStdDWORD loc = CRegStdDWORD(_T("Software\\TortoiseGit\\LanguageID"), 1033);
long langId = loc;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
CLangDll langDLL;
hResource = langDLL.Init(_T("TortoiseIDiff"), langId);
if (hResource == NULL)
hResource = hInstance;
git_libgit2_init();
CCmdLineParser parser(lpCmdLine);
if (parser.HasKey(_T("?")) || parser.HasKey(_T("help")))
{
TCHAR buf[1024] = { 0 };
LoadString(hResource, IDS_COMMANDLINEHELP, buf, _countof(buf));
MessageBox(NULL, buf, _T("TortoiseIDiff"), MB_ICONINFORMATION);
langDLL.Close();
return 0;
}
MSG msg;
hInst = hInstance;
INITCOMMONCONTROLSEX used = {
sizeof(INITCOMMONCONTROLSEX),
ICC_STANDARD_CLASSES | ICC_BAR_CLASSES | ICC_WIN95_CLASSES
};
InitCommonControlsEx(&used);
// load the cursors we need
curHand = (HCURSOR)LoadImage(hInst, MAKEINTRESOURCE(IDC_PANCUR), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE);
curHandDown = (HCURSOR)LoadImage(hInst, MAKEINTRESOURCE(IDC_PANDOWNCUR), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE);
std::unique_ptr<CMainWindow> mainWindow(new CMainWindow(hResource));
mainWindow->SetRegistryPath(_T("Software\\TortoiseGit\\TortoiseIDiffWindowPos"));
std::wstring leftfile = parser.HasVal(_T("left")) ? parser.GetVal(_T("left")) : _T("");
std::wstring rightfile = parser.HasVal(_T("right")) ? parser.GetVal(_T("right")) : _T("");
if ((leftfile.empty()) && (lpCmdLine[0] != 0))
{
int nArgs;
LPWSTR * szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
if (szArglist)
{
if (nArgs == 3)
{
// Four parameters:
// [0]: Program name
// [1]: left file
// [2]: right file
if (PathFileExists(szArglist[1]) && PathFileExists(szArglist[2]))
{
leftfile = szArglist[1];
rightfile = szArglist[2];
}
}
}
// Free memory allocated for CommandLineToArgvW arguments.
LocalFree(szArglist);
}
mainWindow->SetLeft(leftfile.c_str(), parser.HasVal(_T("lefttitle")) ? parser.GetVal(_T("lefttitle")) : _T(""));
mainWindow->SetRight(rightfile.c_str(), parser.HasVal(_T("righttitle")) ? parser.GetVal(_T("righttitle")) : _T(""));
if (parser.HasVal(L"base"))
mainWindow->SetSelectionImage(FileTypeBase, parser.GetVal(L"base"), parser.HasVal(L"basetitle") ? parser.GetVal(L"basetitle") : L"");
if (parser.HasVal(L"mine"))
mainWindow->SetSelectionImage(FileTypeMine, parser.GetVal(L"mine"), parser.HasVal(L"minetitle") ? parser.GetVal(L"minetitle") : L"");
if (parser.HasVal(L"theirs"))
mainWindow->SetSelectionImage(FileTypeTheirs, parser.GetVal(L"theirs"), parser.HasVal(L"theirstitle") ? parser.GetVal(L"theirstitle") : L"");
if (parser.HasVal(L"result"))
mainWindow->SetSelectionResult(parser.GetVal(L"result"));
mainWindow->resolveMsgWnd = parser.HasVal(L"resolvemsghwnd") ? (HWND)parser.GetLongLongVal(L"resolvemsghwnd") : 0;
mainWindow->resolveMsgWParam = parser.HasVal(L"resolvemsgwparam") ? (WPARAM)parser.GetLongLongVal(L"resolvemsgwparam") : 0;
mainWindow->resolveMsgLParam = parser.HasVal(L"resolvemsglparam") ? (LPARAM)parser.GetLongLongVal(L"resolvemsglparam") : 0;
if (mainWindow->RegisterAndCreateWindow())
{
HACCEL hAccelTable = LoadAccelerators(hResource, MAKEINTRESOURCE(IDR_TORTOISEIDIFF));
if (!parser.HasVal(L"left") && parser.HasVal(L"base") && !parser.HasVal(L"mine") && !parser.HasVal(L"theirs"))
{
PostMessage(*mainWindow, WM_COMMAND, ID_FILE_OPEN, 0);
}
if (parser.HasKey(_T("overlay")))
{
PostMessage(*mainWindow, WM_COMMAND, ID_VIEW_OVERLAPIMAGES, 0);
}
if (parser.HasKey(_T("fit")))
{
PostMessage(*mainWindow, WM_COMMAND, ID_VIEW_FITIMAGEHEIGHTS, 0);
PostMessage(*mainWindow, WM_COMMAND, ID_VIEW_FITIMAGEWIDTHS, 0);
}
if (parser.HasKey(_T("fitwidth")))
//.........这里部分代码省略.........
示例14: psutil_get_cmdline
/*
* returns a Python list representing the arguments for the process
* with given pid or NULL on error.
*/
PyObject *
psutil_get_cmdline(long pid) {
int nArgs, i;
LPWSTR *szArglist = NULL;
HANDLE hProcess = NULL;
PVOID pebAddress;
PVOID rtlUserProcParamsAddress;
UNICODE_STRING commandLine;
WCHAR *commandLineContents = NULL;
PyObject *py_unicode = NULL;
PyObject *py_retlist = NULL;
hProcess = psutil_handle_from_pid(pid);
if (hProcess == NULL)
return NULL;
pebAddress = psutil_get_peb_address(hProcess);
// get the address of ProcessParameters
#ifdef _WIN64
if (!ReadProcessMemory(hProcess, (PCHAR)pebAddress + 32,
&rtlUserProcParamsAddress, sizeof(PVOID), NULL))
#else
if (!ReadProcessMemory(hProcess, (PCHAR)pebAddress + 0x10,
&rtlUserProcParamsAddress, sizeof(PVOID), NULL))
#endif
{
////printf("Could not read the address of ProcessParameters!\n");
PyErr_SetFromWindowsErr(0);
goto error;
}
// read the CommandLine UNICODE_STRING structure
#ifdef _WIN64
if (!ReadProcessMemory(hProcess, (PCHAR)rtlUserProcParamsAddress + 112,
&commandLine, sizeof(commandLine), NULL))
#else
if (!ReadProcessMemory(hProcess, (PCHAR)rtlUserProcParamsAddress + 0x40,
&commandLine, sizeof(commandLine), NULL))
#endif
{
PyErr_SetFromWindowsErr(0);
goto error;
}
// allocate memory to hold the command line
commandLineContents = (WCHAR *)malloc(commandLine.Length + 1);
if (commandLineContents == NULL) {
PyErr_NoMemory();
goto error;
}
// read the command line
if (!ReadProcessMemory(hProcess, commandLine.Buffer,
commandLineContents, commandLine.Length, NULL))
{
PyErr_SetFromWindowsErr(0);
goto error;
}
// Null-terminate the string to prevent wcslen from returning
// incorrect length the length specifier is in characters, but
// commandLine.Length is in bytes.
commandLineContents[(commandLine.Length / sizeof(WCHAR))] = '\0';
// attempt to parse the command line using Win32 API, fall back
// on string cmdline version otherwise
szArglist = CommandLineToArgvW(commandLineContents, &nArgs);
if (szArglist == NULL) {
PyErr_SetFromWindowsErr(0);
goto error;
}
else {
// arglist parsed as array of UNICODE_STRING, so convert each to
// Python string object and add to arg list
py_retlist = Py_BuildValue("[]");
if (py_retlist == NULL)
goto error;
for (i = 0; i < nArgs; i++) {
py_unicode = PyUnicode_FromWideChar(
szArglist[i], wcslen(szArglist[i]));
if (py_unicode == NULL)
goto error;
if (PyList_Append(py_retlist, py_unicode))
goto error;
Py_XDECREF(py_unicode);
}
}
if (szArglist != NULL)
LocalFree(szArglist);
free(commandLineContents);
CloseHandle(hProcess);
return py_retlist;
error:
//.........这里部分代码省略.........
示例15: CommandLineToArgvW
// xxx.exe -enc dst.path src.path xxxxx 1 rc4 0
HRESULT CZConvertCmd::TransferCmdLine()
{
LPWSTR *szArglist;
int nArgs;
szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
if (nArgs == 3&& NULL != szArglist)
{
if (0==_tcscmp(szArglist[1],CONVERT_CMD_OPTION_ENCRPT_BYMEM))
{
LPTSTR memName = szArglist[2];
ZDbgPrint(DBG_INFO,_T("ZDATABACK memName = %s"),memName);
return TransferByMem(memName);
}
else
{
return ERROR_INVALID_PARAMETER;
}
}
else if( szArglist == NULL || nArgs < 5)
{
return ERROR_INVALID_PARAMETER;
}
TCHAR dstPath[MAX_PATH] = {NULL};
TCHAR srcPath[MAX_PATH] = {NULL};
ULONG optionType = 0;
ULONG encyptType = ENCRYPT_RC4;
BOOL showProcDialog = FALSE;
UCHAR passWord[MAX_PATH];
ULONG passWorfLen = 0;
if (0==_tcscmp(szArglist[1],CONVERT_CMD_OPTION_ENCRPT_TOFILE))
{
optionType = CONVERT_OPTIONCODE_ENCRPT_TOFILE;
}
else if (0==_tcscmp(szArglist[1],CONVERT_CMD_OPTION_DECRPT_FROMFILE))
{
optionType = CONVERT_OPTIONCODE_DECRPT_FROMFILE;
}
else if (0==_tcscmp(szArglist[1],CONVERT_CMD_OPTION_ENCRPT_TOZIP))
{
optionType = CONVERT_OPTIONCODE_ENCRPT_TOZIP;
}
else if (0==_tcscmp(szArglist[1],CONVERT_CMD_OPTION_DECRPT_FROMZIP))
{
optionType = CONVERT_OPTIONCODE_DECRPT_FROMZIP;
}
_tcscpy_s(dstPath,_countof(dstPath),szArglist[2]);
_tcscpy_s(srcPath,_countof(srcPath),szArglist[3]);
memcpy(passWord,szArglist[4],_tcslen(szArglist[4]) * sizeof(TCHAR));
passWorfLen = _tcslen(szArglist[4]) * sizeof(TCHAR);
if (nArgs > 5)
{
if (0==_tcscmp(szArglist[5],CONVERT_CMD_SHOWPROCDIALOG))
{
showProcDialog = TRUE;
}
else if (0==_tcscmp(szArglist[5],CONVERT_CMD_NOTSHOWPROCDIALOG))
{
showProcDialog = FALSE;
}
}
if (nArgs > 6)
{
if (0==_tcscmp(szArglist[6],CONVERT_CMD_ENCRPTTYPE_RC4))
{
encyptType = ENCRYPT_RC4;
}
}
ZDbgPrint(DBG_INFO,_T("ZDATABACK srcpath = %s"),srcPath);
return ConvertFileBase(dstPath,srcPath,optionType,encyptType,showProcDialog,passWord,passWorfLen,NULL,0,NULL);
}