Главная страница
    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.45 MB
Время: 0.003 c
1-90257
ЛамерОК
2002-01-09 14:01
2002.01.28
Как сделать так чтобы edit не реагировал бипом на нажатие заперщенных клавиш?


6-90346
ddd-numerical TV
2001-11-05 15:12
2002.01.28
Webserver написать...


4-90407
YUS
2001-11-24 06:47
2002.01.28
CreateDialog ( R )


1-90314
Teapot
2002-01-08 14:30
2002.01.28
Печать на матричный принтер


3-90203
Andrey196
2001-12-23 19:49
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский