Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];

Вниз

Вызов консольного приложения   Найти похожие ветки 

 
Vasilii   (2002-01-08 10:19) [0]

Народ! Help! Не получается вызвать из программы консольное приложение.
Пробую так
ShellExecute(handle, nil, PChar("programname.exe"),PChar("-parametr"), nil, SW_SHOWNORMAL);
а в ответ - тишина.
То-же самое, но с "форточным" приложением получается. Почему?


 
Андрей Сенченко   (2002-01-08 10:47) [1]

Совсем тишина ? Пути проверь в первую очередь ...


 
McSimm   (2002-01-08 11:06) [2]

А какой результат выполнения функции?

Попробуйте пробел в строке параметров:
ShellExecute(handle, nil, "programname.exe", " -parametr", nil, SW_SHOWNORMAL);

Для констант не обязательно преобразование PChar(), компилятор сам разберется.


 
swr   (2002-01-08 11:12) [3]

Посмотри вот это:

procedure TfmMain.SendAlertMessage(text: string; user: string);
var
si:STARTUPINFO;
pi:PROCESS_INFORMATION;
AppName: string;
cmdline:string;
s: string;
k: integer;
begin
s:= StringReplace(MsgParamStr, "%PI%", text, [rfReplaceAll, rfIgnoreCase]);
if s = ""#34#34 then
s:= text;

ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
si.dwFlags:= STARTF_USESHOWWINDOW;
si.wShowWindow:= SW_HIDE;
AppName:= "SendAlert";
if Win32Platform = VER_PLATFORM_WIN32_NT then
cmdline:="cmd.exe /C net send " + user + " "" + s + "" !!!"
else
cmdline:="command.com /C net send " + user + " "" + s + "" !!!";

if not CreateProcess( nil, // No module name (use command line).
PChar(cmdline), // Command line.
nil, // Process handle not inheritable.
nil, // Thread handle not inheritable.
False, // Set handle inheritance to FALSE.
0, // No creation flags.
nil, // Use parent"s environment block.
nil, // Use parent"s starting directory.
si, // Pointer to STARTUPINFO structure.
pi ) // Pointer to PROCESS_INFORMATION structure.
then
begin
mLog.Lines.Add( "Shepherd: Send alert message CreateProcess failed." );
Exit;
end;
{WaitForSingleObject( pi.hProcess, 10000 );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );}
mLog.Lines.Add("message send to: " + user);
end;


 
Vasilii   (2002-01-08 12:14) [4]

Спасибо всем! Нашел подобный вопрос в форуме по БД. Посмотрите, неплохое решение. (Вопрос про gbak.exe)


 
Керик   (2002-01-11 05:52) [5]

Попробуй вот так, возможно, поможет, но параметр передать не удастся... Вот готовая функция, которая не только запустит консольное приложение, но ещё и возвратит его ID.

function CreateConsoleProcess(ApplicationPath: string): Cardinal;
var
IpStartupInfo: TStartupInfo;
IpProcessInformation: TProcessInformation;
begin
FillChar(IpStartupInfo, SizeOf(IpStartupInfo), #0);
IpStartupInfo.cb := SizeOf(IpStartupInfo);
IpStartupInfo.dwFlags := STARTF_USESHOWWINDOW;
IpStartupInfo.wShowWindow := SW_SHOWNORMAL;
CreateProcess(PChar(ApplicationPath),
nil,
nil,
nil,
False,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil,
nil,
IpStartupInfo,
IpProcessInformation);
Result := IpProcessInformation.hProcess;
end;



Данная процедура убивает процесс, в параметре узазывай полученный функцией CreateConsoleProcess идентификатор.

procedure TerminateConsoleProcess(ProcessHandle: Cardinal);
begin
TerminateProcess(ProcessHandle, 4);
CloseHandle(ProcessHandle);
end;


P.S. Если честно, то сам не пробовал...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
4-90431
Andrey Mihaylov
2001-11-30 01:38
2002.01.28
Несколько вопросов о сервисах..... (((


1-90268
Zuvom
2002-01-09 03:40
2002.01.28
Ошибка Delphi 6


3-90225
DiggerAbstract
2001-12-24 11:28
2002.01.28
Кэширование изменений


1-90322
Konsul
2002-01-03 13:32
2002.01.28
Зажигание клавиш


14-90371
evgeg
2001-12-01 11:40
2002.01.28
Про конференцию





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский