Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2011, 15:36   #1
ramzes777
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 92
Вопрос Запрос в коммандную строку

Нужно выполнить запрос в коммандной строке:
Код:
convert -size 100x100 canvas:khaki c:\canvas_khaki123123123.gif
Когда сам запускаю коммандную строку и ввожу запрос, он работает.
Из программы - не работает.
ShellAPI юзается.

Вот сам код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var str:String;
begin

{str:='C:\WINDOWS\system32\cmd.exe convert -size 100x100 canvas:khaki c:\canvas_khaki123123123.gif';



WinExec(pchar(str),0); }

{ShellExecute(0,'open','cmd.exe','/k convert -size 100x100 canvas:khaki c:\canvas_khaki123123123.gif','C:\Windows\system32\',SW_SHOW);
}

{ShellExecute(Handle, nil, 'c:\windows\system32\cmd.exe', '/k '+'convert -size 100x100 canvas:khaki c:\canvas_khaki123123123.gif', nil, SW_SHOW);}
WinExec (PChar('C:\WINDOWS\system32\cmd.exe' + ' ' + 'convert -size 100x100 canvas:khaki c:\canvas_khaki123123123.gif'), SW_HIDE);

end;
То что в {} - это не рабочие варианты тоже.
ramzes777 вне форума Ответить с цитированием
Старый 01.10.2011, 18:34   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) CONVERT - в Вашем случае что?! (BAT или EXE/COM) ?

2) а какое отношение Ваш convert.exe имеет к командам OS ?
Вы для чего добавляете запуск через командный процессор?
(я имею в виду cmd.exe /k .... )

3) так, навскидку, я бы рекомендовал Вам попробовать воспользоваться следующим кодом:
Код:
procedure PackFile( sFName, sDestPath : string);
var si:TStartupInfo;
    pi:TProcessInformation;
    cmdline:string;

begin
    ZeroMemory(@si,sizeof(si));
    si.cb:=SizeOf(si);
    cmdline:='C:\полный_путь_к_convert.exe\convert.exe -size 100x100 canvas:khaki c:\canvas_khaki123123123.gif';
    if not CreateProcess( nil, // No module name (use command line).
        PChar(cmdline),  // Command line.
        nil,             // Process handle not inheritable.
        nil,             // Thread handle not inheritable.
        False,           // Set handle inheritance to FALSE.
        0,               // No creation flags.
        nil,             // Use parent's environment block.
        nil,             // Use parent's starting directory.
        si,              // Pointer to STARTUPINFO structure.
        pi )             // Pointer to PROCESS_INFORMATION structure.
       then
        begin
         WriteLn( 'CreateProcess failed. ('+cmdline+')' );
         Exit;
        end;
    WaitForSingleObject( pi.hProcess, INFINITE );
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
    WriteLn('Done !');
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.10.2011, 18:44   #3
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

Код:
WinExec('convert -size 100x100 canvas:khaki c:\canvas_khaki123123123.gif', SW_HIDE);
Не нужно запускать командную строку
Silver_S вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 процедуры, одна должна редактировать строку,а вторая добавлять строку. Иван09 Помощь студентам 0 02.06.2011 00:54
Узнать коммандную строку запуска чужого процесса Человек_Борща Общие вопросы Delphi 4 23.04.2011 10:41
Копировать строку фильтрованного списка в другую книгу, на последнюю пустую строку Gvaridos Microsoft Office Excel 11 24.11.2010 00:48
Программа Вводит символьную строку и число N и выводит строку, состоящую из первых N символов (С++) Yulai Помощь студентам 1 11.05.2009 11:39
Как при нажатии на строку в Listbox передавать нажатую строку в переменную Михаил Юрьевич Общие вопросы Delphi 5 16.03.2009 12:59