Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Командная строка, RAR для DOS 
:(
    Опции темы
MetalFan
Дата 9.2.2007, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Цитата(RideX @  3.2.2007,  23:16 Найти цитируемый пост)
Через ShellExecute невозожно отследить завершение работы дочернего процесса,

зато можно через ShellExecuteEx... и не надо десяток параметров, всего одна запись ;)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MacTep
Дата 9.2.2007, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Цитата(smartov @  9.2.2007,  09:41 Найти цитируемый пост)
Использовать Unicode-версию функции CreateProcess (скорее всего CreateProcessW). Она вместо PCHar попросит PWideChar 
Где же такую функцию взять? В хелпе о такой ни слова не нашел...



--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
MacTep
Дата 9.2.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Цитата(MetalFan @  9.2.2007,  10:05 Найти цитируемый пост)
зато можно через ShellExecuteEx... и не надо десяток параметров, всего одна запись ;) 

Да еще бы взять пример, как выполнять процесс при помощи данной команды... А то у меня, например на строчке ShellExecuteEx('rar.exe'); вылезает ошибка Incompatible types: 'String' and 'PShellExecuteInfoA'. Можно пример использования данной функции???


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
MetalFan
Дата 9.2.2007, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



MacTep, а F1 уже отменили? туда параметром идет запись.
так и быть) вот пример:
Код

var
  lSEI: TShellExecuteInfoA;
  lFile: string;
...
begin
  lFile := 'notepad.exe';
  ZeroMemory( @lSEI, SizeOf(TShellExecuteInfoA) );
  lSEI.cbSize := SizeOf(TShellExecuteInfoA);
  lSEI.lpFile := PChar(lFile);
  lSEI.Wnd := Application.Handle;
  lSEI.nShow := SW_SHOWNORMAL;



  if ShellExecuteEx( @lSEI ) then
    ShowMessage('Started')
  else
    ShowMessage( 'Error:'+SysErrorMessage(GetLastError));
...



Это сообщение отредактировал(а) MetalFan - 9.2.2007, 14:45


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MacTep
Дата 9.2.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Попробовал. Не работает. Не находит мой файл... Хотя файл лежит на месте. Странно...
Вот код:
Код

procedure unpack(filename:string);
varlSEI: TShellExecuteInfoA;
    lFile: string;
    str,s:String;
begin
  str:=ExtractFileDir(Application.Exename);
  s:=str+'\rar.exe e -o+ '+str+'\data\temp\'+filename+'.rar '+str+'\data\temp\';
  ZeroMemory( @lSEI, SizeOf(TShellExecuteInfoA) );
  lSEI.cbSize := SizeOf(TShellExecuteInfoA);
  lSEI.lpFile := PChar(s);
  lSEI.Wnd := Application.Handle;
  lSEI.nShow := SW_SHOWNORMAL;
  ShellExecuteEx(@lSEI);
end;


Добавлено @ 19:04 
Цитата(smartov @  9.2.2007,  09:41 Найти цитируемый пост)
Использовать Unicode-версию функции CreateProcess (скорее всего CreateProcessW). Она вместо PCHar попросит PWideChar 
Не нашел такой функции. И даже на нее похожей не нашел.

Это сообщение отредактировал(а) MacTep - 9.2.2007, 18:58


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
MacTep
Дата 9.2.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Нда, странный вопрос. И поперлись мы все не в те дебри. Поискал по хелпу, что можно делать со строками. И нашел замечательную функцию - ExtractShortPathName - гениально до безумия. smile Представляет имена файлов в формате 8.3 - то есть, досовский формат. И так работает и с русскими символами, и с пробелами. А вообще. Гуд! 


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Данкинг
Дата 10.3.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



А вот у меня такая проблема: нужно выполнить ДОСовскую команду сборки файлов (aaa1+aaa2=aaa3):

Код


ff:='copy aaa1.txt +aaa2.txt aaa3.txtf';

ZeroMemory(@si, SizeOf(si));
  si.cb := SizeOf(si);
  ZeroMemory(@pi, SizeOf(pi));
  if CreateProcess(nil,PChar(ff),
                   nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
                   nil, nil, si, pi) then begin
    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
  end;

Ошибок никаких не возникает, но команда почему-то не выполняется, т.е., файлы не объединяются. Почему такое может быть?.. Чувствую, придётся вручную собирать файлы...

Это сообщение отредактировал(а) Данкинг - 10.3.2007, 19:32


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
smartov
Дата 11.3.2007, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: нет
Всего: 259



Данкинг, попробуй указать полные пути к файлам...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.