- function RunUserProcess(lpFileName,lpCommand:string;swFlags:DWORD):DWord;
- var
- dwProcessId: DWord;
- hToken, hProcess: THandle;
- si: STARTUPINFO;
- pi: PROCESS_INFORMATION;
- begin
- Result := 0;
- GetWindowThreadProcessId(FindWindow('Shell_TrayWnd', nil), @dwProcessId);
- hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, dwProcessId);
- if hProcess <> 0 then
- begin
- OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, hToken);
- try
- ZeroMemory(@si, SizeOf(STARTUPINFO));
- si.cb := SizeOf(STARTUPINFO);
- Si.lpDesktop := PChar('Winsta0\Default');
- si.wShowWindow := swFlags;
- si.dwFlags := STARTF_USESHOWWINDOW;
- CreateProcessAsUser(hToken, PChar(lpFileName), PChar(' '+lpCommand), nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, si, pi);
- Result := Pi.dwProcessId;
- finally
- CloseHandle(hProcess);
- end;
- end;
- end;
摘自:http://bbs.bearcome.com/viewthread.php?tid=56965&page=1
没有评论:
发表评论