Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как запустить cmd.exe как в TotalCommander?


Страницы:   1 2

Wadimka ©   (2012-09-09 20:18:00) 

вопрос по сути ерундовый, но у меня проблема.
есть мое консольное приложение, работает с сетевым интерфейсом.

Если запускаю я его из строки Totalcommander, ssc.exe 192.168.1.3 то отрабатывает отлично
запускаю его из своей программы
пробовал через ShellExecute, ShellExecuteEx, CreateProcess
побоку, не работает, вернее запускается но чего-то там не может инициализировать, как запустить из своей программы, как это делает TotalCommander?

пробовал так:
cmd.exe /C  g:\00MYPRG\ssc.exe 192.168.1.2 - ИЗ totalcommander пашет

из своей программы вышеописанными методами, нивкакую!
для ssc.exe нужна dll которая лежит в каталоге вместе с этим файлом, именно в ней что-то не инициализируется.


Dennis I. Komarov   (2012-09-17 19:55:00) [1]


> и чего я там не дочитал?

что-то... я же не знаю что. или TC писали не люди?
"admin admin" это к чему?


Wadimka   (2012-09-13 19:31:00) [2]


> Dennis I. Komarov ©   (10.09.12 20:06) [27]
>
>
> > filename:=g:\00MYPRG\ssc.exe
> > params:='192.168.1.2 admin admin retparams.txt'
>
> Читай справку дальше...


и чего я там не дочитал?


Dennis I. Komarov   (2012-09-10 20:06:00) [3]


> filename:=g:\00MYPRG\ssc.exe
> params:='192.168.1.2 admin admin retparams.txt'

Читай справку дальше...


Wadimka   (2012-09-10 18:39:00) [4]


> cobalt ©   (10.09.12 18:08) [25]
>
> Учись отлаживать - начни с простейшего
> begin
> OutputDebugString('программа загрузилась, отладка начата');
>
> <какой-то код>
> OutputDebugString(PWideChar(TimeToStr(Time) + ' Сейчас вызову
> процедуру такую-то'));
> Процедура1(параметр1);
> ...
> end;


Ну да очень умно для этого
яж писал выше ответ об ошибке приходит из DLL criptlib (CL32.DLL)


cobalt   (2012-09-10 18:08:00) [5]

Учись отлаживать - начни с простейшего
begin
OutputDebugString('программа загрузилась, отладка начата');
<какой-то код>
OutputDebugString(PWideChar(TimeToStr(Time) + ' Сейчас вызову процедуру такую-то'));
Процедура1(параметр1);
...
end;


Wadimka   (2012-09-10 14:16:00) [6]

все равно не въеду, почему из Totala пашет, а у меня нет


Wadimka   (2012-09-10 13:48:00) [7]

Сорри последне описанное тоже не работает!
это я предположил, что должно работать, но таже самая ошибка!


Wadimka   (2012-09-10 06:23:00) [8]


>> DVM
> > Wadimka   (09.09.12 22:16) [15]
>
>
> > filename
>
>
> > params
>
> что за значения имеют?

filename:=g:\00MYPRG\ssc.exe
params:='192.168.1.2 admin admin retparams.txt'

где retparams.txt это файл вывода результата, в ssc.exe находится SSH клиент, пока только коннектится (т.к. дальше нет смысла все писать пока не заработает) если указываю retparams.txt без пути сохранения то сохранятеся нормально в g:\00MYPRG\ вроде как в рабочий каталог

кароче я понял что в чем дело но не пойму причину (я уже спрашивал тут в другой ветке, почему не работает)

Если я делаю любым выше описанныйм мною способом из [0], т.е. ShellExecute, ShellExecuteEx, CreateProcess с основной формы, т.е. кинул на форму баттон1 а там любой код с запуском g:\00MYPRG\ssc.exe то все отрабатывает на ура, как и из тотала

а если я это-же делаю из потока TTHread то ssc.exe ругается в данном случае, что cryptSetAttribute: Data has not been initialised
Конкретно ошибка приходит из DLL (для SSH использую cryptlib)
в чем проблема ума не приложу, почему из потока не запускается


Германн   (2012-09-10 04:39:00) [9]


> Inovet ©   (10.09.12 03:06) [20]
>
> > [19] Германн ©   (10.09.12 02:10)
> > Почему подлый? Его командная строка по определению «работает»
> > в том каталоге, который в данный момент активен в одной
> > из его панелей.
>
> Это как раз нормально. Подлость была бы, если бы он устанавливал
> текущим каталог запускаемой программы
> g:\00MYPRG\ssc.exe
> когда на панели другой каталог.
>

На это он не пойдёт. :)


Inovet   (2012-09-10 03:06:00) [10]

> [19] Германн ©   (10.09.12 02:10)
> Почему подлый? Его командная строка по определению «работает»
> в том каталоге, который в данный момент активен в одной
> из его панелей.

Это как раз нормально. Подлость была бы, если бы он устанавливал текущим каталог запускаемой программы
g:\00MYPRG\ssc.exe
когда на панели другой каталог.


Германн   (2012-09-10 02:10:00) [11]


> Или сам Тотал задаёт? Неужели он такой подлый.

Почему подлый? Его командная строка по определению "работает" в том каталоге, который в данный момент активен в одной из его панелей. Т.е. он всегда при выполнении любой команды из этой строки всегда устанавливает CurrentDir. А как прикажешь ему поступать иначе? Это ведь не пункт меню Windows - Run. Вот пусть Вадимка попробует запустить своё консольное приложение через этот Run(В русифицированной Windows это - "Выполнить").

P.S.
Не представляю себе как бы я работал с Windows/Total Commander, если бы он не устанавливал CurrentDir.


Inovet   (2012-09-09 23:04:00) [12]

> [17] Плохиш ©   (09.09.12 22:54)
> > Так в Тотале не задаёт.
>
> Задаeт.

> [7] DVM ©   (09.09.12 21:16)
> Откуда ты знаешь?

Или сам Тотал задаёт? Неужели он такой подлый.


Плохиш   (2012-09-09 22:54:00) [13]


> Так в Тотале не задаёт.

Задаëт.


DVM   (2012-09-09 22:45:00) [14]


> Wadimka   (09.09.12 22:16) [15]


> filename


> params

что за значения имеют?


Wadimka   (2012-09-09 22:16:00) [15]


>
> > Пробовал я и ShellExecute итог как и выше
> >
> >
>
> Значит не правильно пробовал...



ShellExecute(0,nil,pchar(filename),pchar(params),pchar(extractfilepath(filename) ),sw_normal); - болт

ShellExecute(form1.handle,nil,pchar(filename),pchar(params),pchar(extractfilepat h(filename)),sw_normal); -болт

ShellExecute(form1.handle,'open',pchar(filename),pchar(params),pchar(extractfile path(filename)),sw_normal); -болт

ShellExecute(Application.handle,nil,pchar(filename),pchar(params),pchar(extractf ilepath(filename)),sw_normal); -болт

ShellExecute(Application.handle,'open',pchar(filename),pchar(params),pchar(extra ctfilepath(filename)),sw_normal); -болт


Как еще то?


Dennis I. Komarov   (2012-09-09 21:58:00) [16]


> Пробовал я и ShellExecute итог как и выше
>
>

Значит не правильно пробовал...


Inovet   (2012-09-09 21:53:00) [17]

> [7] DVM ©   (09.09.12 21:16)
> > Так в Тотале не задаёт.
>
> Откуда ты знаешь?

Предпологаю по наличию пути к exe

> [0] Wadimka   (09.09.12 20:18)
> cmd.exe /C  g:\00MYPRG\ssc.exe 192.168.1.2 — ИЗ totalcommander пашет

но кто его знает, где там автор находится в Тотале.


Wadimka   (2012-09-09 21:46:00) [18]


> А может справку по ShellExecute почитать?
> function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
>
> Directory: PChar; ShowCmd: Integer): HINST;

Пробовал я и ShellExecute итог как и выше


Dennis I. Komarov   (2012-09-09 21:46:00) [19]

у тебя ошибка


Wadimka   (2012-09-09 21:44:00) [20]

В createProcess пробовал указывать, понту тоже 0

cmd.exe это я уже мудрить начал, потому-что сразу тоже не работает
а вот с тотала работает, не могу понять в чем дело


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо