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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2012, 13:19   #1
nikrzd
 
Регистрация: 15.06.2010
Сообщений: 8
Вопрос Запуск нескольких приложений последовательно.

[Delphi]
Необходимо запустить несколько приложений .У меня запускается только 1-е приложение а второе с аналогичным именем и последущие не запускаются.Закрывать предыдущие не нужно ...
Пробовал и CreateProcess , не выходит .
Подскажите.



Код:
begin
ShellExecute(handle,nil,'c:\Client\client.lnk',nil,'c:\Client\',SW_HIDE);
  end;
begin
  Sleep(2000);

ShellExecute(handle,nil,'c:\Client\client.lnk',nil,'c:\Client\',SW_HIDE);
end;
  Sleep(2000);
  begin

ShellExecute(handle,nil,'c:\Client\client.lnk',nil,'c:\Client\',SW_HIDE);
  end;
  Sleep(2000);
  begin
ShellExecute(handle,nil,'c:\Client\client3.lnk',nil,'c:\Client\',SW_HIDE);
  end;
  begin
ShellExecute(handle,nil,'c:\Client\client.lnk',nil,'c:\Client',SW_HIDE);
  end;

Последний раз редактировалось nikrzd; 08.07.2012 в 13:24.
nikrzd вне форума Ответить с цитированием
Старый 08.07.2012, 13:21   #2
nikrzd
 
Регистрация: 15.06.2010
Сообщений: 8
По умолчанию

4 калькулятора таким способом без проблем запускаются , а приложения нет , возможно из-за того , что они консольные ?

Последний раз редактировалось nikrzd; 08.07.2012 в 13:37.
nikrzd вне форума Ответить с цитированием
Старый 08.07.2012, 13:31   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

может у них защита от мультизапуска?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.07.2012, 13:35   #4
nikrzd
 
Регистрация: 15.06.2010
Сообщений: 8
По умолчанию

Вручную запускаю все 4 приложения и отлично работают.

Также пробовал и напрямую указывать exe файлы.
nikrzd вне форума Ответить с цитированием
Старый 08.07.2012, 13:56   #5
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Честно говоря странное нагромождение begin,end. Это и есть рабочий код? Если нет, то советую выложить именно то, с чем и пытаетесь запустить, больше шансов что сможем помочь
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 08.07.2012, 14:20   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Вообще-то, чтобы запускать последовтелдьно, нужно дожидаться окончания работы предыдущего, а не вводить задержку непонятно откуда взятой продолжительности.
hint: WaitForSingleObject.
s-andriano вне форума Ответить с цитированием
Старый 08.07.2012, 14:32   #7
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

В приведенной ниже интерпретации консольные приложения запускаются в любом количестве:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  FP : string;
begin
  FP := 'J:\Program Files\Borland\Delphi7\Projects\Consol\Project2.exe';
  ShellExecute(handle, nil, PChar(FP),
                       nil, PChar(ExtractFilePath(FP)), SW_SHOWNORMAL);
  ShellExecute(handle, nil, PChar(FP),
                       nil, PChar(ExtractFilePath(FP)), SW_SHOWNORMAL);
  ShellExecute(handle, nil, PChar(FP),
                       nil, PChar(ExtractFilePath(FP)), SW_SHOWNORMAL);
  ShellExecute(handle, nil, PChar(FP),
                       nil, PChar(ExtractFilePath(FP)), SW_SHOWNORMAL);
end;
Почему SW_HIDE? Наоборот, надо показывать окна, если даже они консольные. В справке к функции ни гу-гу про запуск через ярлыки. У меня функция через ярлыки проги не запускает. Может я один такой бедный...
Прик вне форума Ответить с цитированием
Старый 08.07.2012, 15:24   #8
nikrzd
 
Регистрация: 15.06.2010
Сообщений: 8
По умолчанию

Я только начинаю изучать , дельфи , потому могут быть нагромождения типа begin end. Я не верно понял их работу.
В том-то и дело , что нужно чтобы приложения запустилось в 4-х вариантах , это клиенты , и все подключаются к разным серверам и работать должны одновременно .

Цитата:
Сообщение от Прик Посмотреть сообщение
В приведенной ниже интерпретации консольные приложения запускаются в любом количестве:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  FP : string;
begin
  FP := 'J:\Program Files\Borland\Delphi7\Projects\Consol\Project2.exe';
  ShellExecute(handle, nil, PChar(FP),
                       nil, PChar(ExtractFilePath(FP)), SW_SHOWNORMAL);
  ShellExecute(handle, nil, PChar(FP),
                       nil, PChar(ExtractFilePath(FP)), SW_SHOWNORMAL);
  ShellExecute(handle, nil, PChar(FP),
                       nil, PChar(ExtractFilePath(FP)), SW_SHOWNORMAL);
  ShellExecute(handle, nil, PChar(FP),
                       nil, PChar(ExtractFilePath(FP)), SW_SHOWNORMAL);
end;
Почему SW_HIDE? Наоборот, надо показывать окна, если даже они консольные. В справке к функции ни гу-гу про запуск через ярлыки. У меня функция через ярлыки проги не запускает. Может я один такой бедный...
Попробую , думаю тут как вариант я могу сделать 4 переменных и запустить 4 программы.

Тоже самое , запускается только 1 программа ....
4 программы у каждой свой конфиг , своя папка, но программа одинаковая .

Последний раз редактировалось Stilet; 09.07.2012 в 14:43.
nikrzd вне форума Ответить с цитированием
Старый 08.07.2012, 17:58   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Опиши везде
Код:
if ShellExecute(handle, nil, PChar(FP),
                       nil, PChar(ExtractFilePath(FP)), SW_SHOWNORMAL)<=32
 then RaiseLastOSError;
И посмотри какую ошибку выдаст.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.07.2012, 10:31   #10
nikrzd
 
Регистрация: 15.06.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Опиши везде
Код:
if ShellExecute(handle, nil, PChar(FP),
                       nil, PChar(ExtractFilePath(FP)), SW_SHOWNORMAL)<=32
 then RaiseLastOSError;
И посмотри какую ошибку выдаст.
Огромное спасибо , научил меня использовать систему ошибок , а то не знаю , что творится в программе .
Оказалось самое банальное , я не верно указал путь у остальных клиентов.
Пути похожи я скопировал и все , но одна циферка у всех менялась.
Еще раз спасибо.
nikrzd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск Виндовс приложений на Маке Ming Софт 4 15.11.2011 17:33
Запуск приложений в C++ HWork Общие вопросы C/C++ 1 27.07.2009 13:59
Запуск внешних приложений Alex_09 Общие вопросы Delphi 4 10.04.2009 18:24
запуск dos приложений shurik_7866 Общие вопросы Delphi 3 25.01.2008 23:23
Доступ к com порту для нескольких приложений Lexx Win Api 11 06.04.2007 20:10