Re[16]: иконки интерактивных служб под Windows 7
От: Maclaud  
Дата: 29.06.11 19:06
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, Maclaud, Вы писали:


M>>
M>>function RunProcessInSession(SessionID:dword; AExeName,AParamStr:string):boolean;
M>>...
M>>

O>Это ведь код на Delphi, так ?
O>Вот тут не может быть ошибки:
O>
O>lpDesktop := PChar('winsta0\default');
O>


O>В том смысле, что не может ли обратный слэш восприниматься как escape-последовательность ?

O>P.S. Я в Delphi не смыслю ничего...

Нет, в делфи нет экранирования.
Вот такое создание из из сервиса, нормально создает видимый процесс, но только на консоли.
function RunProcess(AExeName,AParamStr:string):boolean;
var
  StartUpInfo: TStartUpInfo;
  ProcessInfo: TProcessInformation;
begin
  {$IFDEF dm}_log('RunProcess start '+AExeName+' '+AParamStr,false,1);{$ENDIF}

  FillChar(ProcessInfo, SizeOf(TProcessInformation), 0);

  FillChar(StartUpInfo, SizeOf(TStartUpInfo), 0);
  with StartUpInfo do
  begin
    cb := SizeOf(TStartUpInfo);
    dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
    wShowWindow := SW_SHOWNORMAL;
    lpDesktop := PChar('winsta0\default');
  end;

  result := func_CreateProcessA(PChar(AExeName), PChar(AExeName+' '+AParamStr), nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);

  if not WindowsError(result) then
  begin
    //func_WaitForInputIdle(ProcessInfo.hProcess, 60000);
    func_CloseHandle(ProcessInfo.hThread);
    func_CloseHandle(ProcessInfo.hProcess);
  end;

  {$IFDEF dm}_log('RunProcess end',false,-1);{$ENDIF}
end;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.