Як запустити як у TotalCommander
питання по суті нісенітний, але у мене проблема. Є мій консольний додаток, працює з мережевим інтерфейсом.
Якщо я запускаю його з рядка 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 яка лежить в каталозі разом з цим файлом, саме в ній щось не ініціалізується.
пробував запустити спочатку cmd.exe, а він за командою /C запустить вже g:\00MYPRG\ssc.exe 192.168.1.2
> але чогось там не може ініціалізуватитреба чогось зрозуміти.
Може Тотал Командер під адміном запущений, а твоя програма з обмеженими правами?
> Wadimka (09.09.12 20:18)директорію поточну при запуску задай
BOOL WINAPI CreateProcess( _In_opt_ LPCTSTR lpApplicationName, _Inout_opt_ LPTSTR lpCommandLine, _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpThread>_In_ DWORD dwCreationFlags, _In_opt_ LPVOID lpEnvironment, _In_opt_ LPCTSTR lpCurrentDirectory, _In_ LPSTARTUPINFO lpStartupInfo, _Out_ LPPROCESS_INFORMATION lpProcessInformation );
> Wadimka (09.09.12 20:18)а за яким дідьком запускати програму через cmd.exe? її що одразу не можна запустити?
А може довідку про ShellExecute почитати? функція ShellExecute(hWnd: HWND; Operation,FileName,Parameters, Directory: PChar; ShowCmd: Integer): HINST;
У createProcess намагався вказувати, понту теж 0
cmd.exe це я вже мудрувати почав, тому що відразу теж не працює а ось з тотала працює, не можу зрозуміти в чому справа
> А може довідку про ShellExecute почитати? > function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, > > Directory: PChar; ShowCmd: Integer): HINST; вище
> Пробував я і ShellExecute результат як і вище > >Отже, не правильно пробував.
> > > Пробував я і 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 ctfile path (filename)), sw_normal); -болт
> Чи сам Тотал задає? Невже він такий підлий?Чому підлий? Його командний рядок за визначенням "працює" в тому каталозі, який зараз активний в одній з його панелей. Тобто. він завжди під час виконання будь-якої команди з цього рядка завжди встановлює CurrentDir. А як накажеш йому робити інакше? Адже це не пункт меню Windows - Run. Ось нехай Вадимка спробує запустити своєконсольний додаток через цей Run(У русифікованій Windows це - "Виконати").
P.S. Не уявляю собі як би я працював з Windows/Total Commander, якби він не встановлював CurrentDir.
>> DVM > > Wadimka (09.09.12 22:16) [15] & gt; > > > filename > > > > params > > що за значення мають?filename:=g:\00MYPRG\ssc.exe params:="192.168.1.2
де retparams.txt це файл виводу результату, в ssc.exe знаходиться SSH клієнт, поки тільки коннектиться (бо далі немає сенсу все писати поки не запрацює) якщо вказую retparams.txt без шляху збереження то зберігаєтеся нормально в g:\00MYPRG \ ніби як у робочий каталог
коротше я зрозумів що в чому справа але не зрозумію причину (я вже питав тут в іншій гілці, чому не працює)
Якщо я роблю будь-яким вище описаним мною способом [0], тобто. ShellExecute, ShellExecuteEx, CreateProcess з основної форми, тобто. кинув на форму баттон1 а там будь-який код із запуском g:\00MYPRG\ssc.exe то все відпрацьовує на ура, як і з тотала
а якщо я це ж роблю з потоку TTHread то ssc.exe лається в даному випадку, що cryptSetAttribute: Конкретно помилка приходить з DLL (для SSH використовую cryptlib) у чому проблема розуму не прикладу чому з потоку не запускається
Соррі останнє описане теж не працює! Це я припустив, що повинно працювати, але та сама помилка!
все одно не в'їду, чому з Totala оре, а в мене немає
Вчися налагоджувати - почни з найпростішого begin OutputDebugString("програма завантажилася, налагодження розпочато"); OutputDebugString(PWideChar(TimeToStr(Time) + +) Зараз викликаю процедуру таку-то")); Процедура1(параметр1); . end;
Ну так дуже розумно для цього яж писав вище відповідь про помилку приходить з DLL criptlib (CL32.DLL)
> filename:=g:\00MYPRG\ssc.exe > params:="192.168.1.2 admin admin retparams.txt"Читай довідку далі.
і чого я там не дочитав?
> і чого я там не дочитав?щось. я ж не знаю що. або TC писали не люди? "admin admin" це до чого?