Форум: "Начинающим";
Текущий архив: 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.073 c