Главная страница
    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
14-90375
Det
2001-12-04 19:51
2002.01.28
IP


4-90435
wHammer
2001-11-30 11:50
2002.01.28
Звук


3-90201
victor
2001-12-21 13:09
2002.01.28
поле со счетчиком в ОРАКЛЕ


6-90348
evgen_2001
2001-11-05 16:10
2002.01.28
Передача структуры по сокету


14-90374
asafr
2001-12-04 18:28
2002.01.28
Появился lel и всё оживилось... О женщинах опять заговорили...





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