Главная страница
    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.004 c
1-90317
Val
2002-01-11 17:28
2002.01.28
видимость в секции private


1-90269
ctapik-net
2002-01-09 21:11
2002.01.28
Помогите пожалуйста.


1-90291
Ig
2002-01-10 19:17
2002.01.28
Как сделать COM DLL?


4-90428
Alex870
2001-11-26 21:27
2002.01.28
Подскажите пожалуйста!


3-90199
RealyGrey
2001-12-22 14:15
2002.01.28
Как в IB с помощью SQL запроса получить метаданные определенной таблицы?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский