На первый взгляд мне не повезло с
uses ShellApi;
...
ShellExecute(Handle, pchar('open'), pchar('emf2pdf.exe'),
pchar(s), pchar(root), SW_SHOWNORMAL);
, где s - строка параметра, а root - каталог, в котором находится команда.
Ошибка, которую я получаю,«отсутствует оператор или точка с запятой», а также «слишком много фактических параметров».
Вероятно, что-то легкое, что я упустил из виду, немного подчеркнул.Даже не уверен, где взять дескриптор.
Будьте рады альтернативным способам выполнения командной строки, которые вы можете предложить!По сути, служба ищет файлы для преобразования через равные промежутки времени, поэтому я просто ищу способ сформировать командную строку, такую как в DOS, и выполнить ее, желательно, чтобы окно не появлялось на короткое время и не закрывалось, но я возьму то, чтоЯ могу получить.:)
Моя правильная установка Delphi может подсказать мне параметры кода, но не вызвать всплывающую страницу справки при нажатии клавиши F1 (не найдено в индексе).
Обновление: использовалась эта функция CreateProcessиз DelphiPages:
Function ExecuteAndWait(sExecutableFile : String; wWindowState : Word = SW_SHOWNORMAL) : Boolean;
var
siInfo : TStartUpInfo;
piInfo : TProcessInformation;
begin
FillChar(siInfo, SizeOf(siInfo), #0);
with siInfo do begin
cb := SizeOf(siInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := wWindowState;
end;
Result := CreateProcess(NIL, pChar(sExecutableFile), NIL, NIL, FALSE, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, NIL, pchar(ExtractFilePath(sExecutableFile)),siInfo, piInfo);
if Result then
WaitForSingleObject(piInfo.hprocess,INFINITE);
end;
И затем вызвал его с помощью этой командной строки, которая работает при вставке в 'cmd', но не с этим кодом:
ExecuteAndWait('D:\EMF2PDF\emf2pdf.exe -append 0 -margin 36x36x36x36 -width 595 -height 420 "D:\EMF2PDF\EMF\example.emf" "D:\EMF2PDF\PDF\example.pdf"');
Я был бы рад, если выможет предоставить (ссылку на) рабочий пример вызова (в службе) командной строки консольного приложения выше.
ОБНОВЛЕНИЕ: рассматриваемая команда не открывает окно, а набирает статистику преобразования в консоли.Я использую загружаемое здесь программное обеспечение: http://www.verydoc.com/emf-to-pdf.html
Кроме того, до сих пор мне не сообщали, что рассматриваемый сервер является виртуальным сервером, если это имеет значение.
Проверено только сейчас,и когда я опробую свой сервис, я вошел в систему как удаленный пользователь сеанса.Разве служба не сможет хотя бы создать процесс, который вызывает emf2pdf, когда Windows работает с вошедшим в систему пользователем?
Если вы можете подумать об альтернативных решениях для использования программного обеспечения Verydoc, любое вообще, в разделеэти условия или другие, на этом сервере (например, пакетный пользователь) я хотел бы попробовать их!