Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Как запустить 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.074 c
15-1352200214
Стратокастер
2012-11-06 15:10
2013.03.22
Небольшой вопрос по C++


15-1339139460
Дмитрий С
2012-06-08 11:11
2013.03.22
Что это слили?


15-1340213921
Kerk
2012-06-20 21:38
2013.03.22
30 лет спустя


2-1331910674
leklerk
2012-03-16 19:11
2013.03.22
Доступ к данным через TDBGrid и TADODataSet


15-1333892049
xayam
2012-04-08 17:34
2013.03.22
mono ttf utf-8





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