cStartInfo = num2dword (68) + ; num2dword (0) + ; num2dword (0) + ; num2dword (0) + ; num2dword (0) + ; num2dword (0) + ; num2dword (0) + ; num2dword (0) + ; num2dword (0) + ; num2dword (0) + ; num2dword (0) + ; num2dword (STARTF_USESHOWWINDOW) + ; && <<<------- num2dword (SW_SHOWNORMAL) + ; && <<<------- num2dword (0) + ; num2dword (0) + ; num2dword (0) + ; num2dword (0) nCreationFlags = NORMAL_PRIORITY_CLASS + ; CREATE_DEFAULT_ERROR_MODE + ; && <<<------- CREATE_NEW_CONSOLE + ; && <<<------- CREATE_NEW_PROCESS_GROUP && <<<-------Where can I obtain the code for num2dword () procedure?
Function Long2Str *-------- -------- LParameters pLongVal Private I, cRetStr, nLongVal cRetStr = "" nLongVal = pLongVal For I = 24 To 0 Step -8 cRetStr = Chr (Int (nLongVal / (2^I))) + cRetStr nLongVal = Mod ( nLongVal, (2^I)) EndFor Return cRetStr EndFuncWhere can I find the values (#Define) for STARTF_USESHOWWINDOW, SW_SHOWNORMAL, CREATE_DEFAULT_ERROR_MODE, CREATE_NEW_CONSOLE, CREATE_NEW_PROCESS_GROUP ?
IF CreateProcessAsUser (nToken , ; && <<<------- cApp , ; && <<<------- " " + ALLTRIM (cCmd), ; && <<<------- 0 , ; 0 , ; 0 , ; nCreationFlags , ; 0 , ; cDir , ; @cStartInfo , ; @cProcInfo ) = 0Is variable 'nToken' the value returned by:
nSuccess = LogonUser (cLoginId , ;
cDomain , ;
cPassword , ;
LOGON32_LOGON_INTERACTIVE, ;
LOGON32_PROVIDER_DEFAULT , ;
@nToken ) && <<<-------
Is variable 'cApp' = Chr (0) in this case?>* ... skipped... > DECLARE INTEGER CreateProcessAsUser IN advapi32; > INTEGER hToken, STRING lpApplicationName, STRING lpCommandLine,; > INTEGER lpProcessAttributes, INTEGER lpThreadAttributes,; > INTEGER bInheritHandles, INTEGER dwCreationFlags,; > INTEGER lpEnvironment, STRING lpCurrentDirectory,; > STRING @lpStartupInfo, STRING @lpProcessInformation >* ... skipped... > cProcInfo = REPLICATE(CHR(0), 16) > cStartInfo = num2dword(68) +; > num2dword(0) +; > num2dword(0) +; > num2dword(0) +; > num2dword(0) +; > num2dword(0) +; > num2dword(0) +; > num2dword(0) +; > num2dword(0) +; > num2dword(0) +; > num2dword(0) +; > num2dword(STARTF_USESHOWWINDOW) +; > num2dword(SW_SHOWNORMAL) +; > num2dword(0) +; > num2dword(0) +; > num2dword(0) +; > num2dword(0) > > nCreationFlags = NORMAL_PRIORITY_CLASS + CREATE_DEFAULT_ERROR_MODE +; > CREATE_NEW_CONSOLE+CREATE_NEW_PROCESS_GROUP > > IF CreateProcessAsUser(nToken, cApp, " " + ALLTRIM(cCmd),; > 0,0,0, nCreationFlags,0, cDir, @cStartInfo, @cProcInfo) = 0 > * 1314 = ERROR_PRIVILEGE_NOT_HELD > ? "Error:", GetLastError() > = CloseHandle(nToken) > RETURN .F. > ENDIF >* ... skipped... >