Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Как запустить cmd.exe как в TotalCommander?   Найти похожие ветки 

 
Wadimka   (2012-09-09 20:18) [0]

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

Если запускаю я его из строки 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 которая лежит в каталоге вместе с этим файлом, именно в ней что-то не инициализируется.


 
Inovet ©   (2012-09-09 20:33) [1]

> [0] Wadimka   (09.09.12 20:18)
> cmd.exe /C

А это зачем?


 
Wadimka   (2012-09-09 20:37) [2]

пробовал запустить сначала cmd.exe а он по команде /C запустит уже g:\00MYPRG\ssc.exe 192.168.1.2

понту 0


 
brother ©   (2012-09-09 20:46) [3]

> но чего-то там не может инициализировать

надо чего-то понять...


 
Inovet ©   (2012-09-09 20:52) [4]

Может Тотал Командер под админом запущен, а твое приложение с ограниченными правами?


 
DVM ©   (2012-09-09 21:05) [5]


> Wadimka   (09.09.12 20:18) 

директорию текущую при запуске задай


 
Inovet ©   (2012-09-09 21:11) [6]

> [5] DVM ©   (09.09.12 21:05)
> директорию текущую при запуске задай

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


 
DVM ©   (2012-09-09 21:16) [7]


> Inovet ©   (09.09.12 21:11) [6]


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

Откуда ты знаешь?
Я про параметр в CreateProcess:


BOOL WINAPI CreateProcess(
 _In_opt_     LPCTSTR lpApplicationName,
 _Inout_opt_  LPTSTR lpCommandLine,
 _In_opt_     LPSECURITY_ATTRIBUTES lpProcessAttributes,
 _In_opt_     LPSECURITY_ATTRIBUTES lpThreadAttributes,
 _In_         BOOL bInheritHandles,
 _In_         DWORD dwCreationFlags,
 _In_opt_     LPVOID lpEnvironment,
 _In_opt_     LPCTSTR lpCurrentDirectory,
 _In_         LPSTARTUPINFO lpStartupInfo,
 _Out_        LPPROCESS_INFORMATION lpProcessInformation
);


 
DVM ©   (2012-09-09 21:27) [8]


> Wadimka   (09.09.12 20:18) 

а за каким лешим запускать программу через cmd.exe? ее что сразу нельзя запустить?


 
Dennis I. Komarov ©   (2012-09-09 21:44) [9]

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


 
Wadimka   (2012-09-09 21:44) [10]

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

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


 
Dennis I. Komarov ©   (2012-09-09 21:46) [11]

у тебя ошибка


 
Wadimka   (2012-09-09 21:46) [12]


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

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


 
Inovet ©   (2012-09-09 21:53) [13]

> [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 пашет

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


 
Dennis I. Komarov ©   (2012-09-09 21:58) [14]


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

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


 
Wadimka   (2012-09-09 22:16) [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); -болт


Как еще то?


 
DVM ©   (2012-09-09 22:45) [16]


> Wadimka   (09.09.12 22:16) [15]


> filename


> params

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


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


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

Задаëт.


 
Inovet ©   (2012-09-09 23:04) [18]

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

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

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


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


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

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

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


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

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

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


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


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

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


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


>> 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)
в чем проблема ума не приложу, почему из потока не запускается


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

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


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

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


 
cobalt ©   (2012-09-10 18:08) [25]

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


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


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


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


 
Dennis I. Komarov ©   (2012-09-10 20:06) [27]


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

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


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


> 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-17 19:55) [29]


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

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



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

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.049 c
2-1330577950
теркин
2012-03-01 08:59
2013.03.22
Фильтрация дочернего набора данных


4-1259213007
Alex_C
2009-11-26 08:23
2013.03.22
Работа с LPT-портом


15-1328409323
Псарь
2012-02-05 06:35
2013.03.22
Восстановить .txt.


15-1339739244
Demo
2012-06-15 09:47
2013.03.22
Купить интернет магазин


2-1337283963
TStas
2012-05-17 23:46
2013.03.22
Правая клавиша в ричЭдит