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

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

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

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

Купить рекламу на форуме 85 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2009, 16:08   #1
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
Вопрос ShellExecute

Есть ShellListView. К нему используется код, предназначенный для открытия выбранного файла в этом ЛистВьюв:

Код:
procedure TForm1.ShellListView1Click(Sender: TObject);
begin

 ShellExecute(Hinstance, 'open', PChar(ShellListView1.SelectedFolder.PathName) , nil, nil, SW_SHOWMAXIMIZED);
end;
Но! При даблклике на выбранном файле в ShellListView открывается моя же программа, вторая, но уже с этим файлом. Как сделать так чтобы ввыбранный файл открывался уже в открытой программе??? 0о
Fakov вне форума Ответить с цитированием
Старый 14.12.2009, 17:09   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

ParamStr, ParamCount ( если паскаль ). В них проверяите, и проверяите так же уже запущенную копию, если нашли, копии (первой) шлете сообщение например через WM_COPYDATA где указываите файл (имя, параметр) получаемый при запуске копии в ParamStr
BOBAH13 вне форума Ответить с цитированием
Старый 14.12.2009, 17:18   #3
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

BOBAH13, у меня делфи7.

А случайно нет функции открытия файла в программе, если она его поддерживает?? или онли отслеживать запуск копии?
Fakov вне форума Ответить с цитированием
Старый 14.12.2009, 17:23   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Delphi не включает в себя паскаль ? Ну да ладно... ну так как я понял, вы открываите файл, а он у вас и так в вашей же программе и открывается, значит уже связан с вашим ехе. Я запутался ну корректно по моему мнению, отслеживать запуск копии в этом случае.

Последний раз редактировалось mihali4; 14.12.2009 в 17:57.
BOBAH13 вне форума Ответить с цитированием
Старый 14.12.2009, 17:27   #5
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

Цитата:
уже связан с вашим ехе
Да, так оно и есть. Но ф-ция ShellExecute открывает указанный файл в новой программе, то есть запускает еще одну. А надо чтобы файл открывался в уже запущенной.

Поиск по форуму/рунету ничего не даёт уже на протяжении 3х часов, оч надеюсь на помощь((
Fakov вне форума Ответить с цитированием
Старый 14.12.2009, 18:34   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Не знаю... Попробовал у себя - никакого второго экземпляра программы не запускается...
mihali4 вне форума Ответить с цитированием
Старый 27.01.2010, 20:46   #7
RUSlan48
Пользователь
 
Аватар для RUSlan48
 
Регистрация: 06.12.2009
Сообщений: 65
Печаль противоположная проблема...

А если то приложение, кторое нужно открыть с помощью Delphi, тоже написано на Delphi..? Тогда и winexec, и shellexecute открывают его в том же окне...
как сделать чтобы открывалось в новом?
Делай что должен, и будь что будет
RUSlan48 вне форума Ответить с цитированием
Старый 27.01.2010, 21:17   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Fakov Посмотреть сообщение
При даблклике на выбранном файле в ShellListView открывается моя же программа
Пардон, вот что такое невнимательность...
Вам нужно:
Код:
procedure TForm1.ShellListView1Click(Sender: TObject);
begin
ShellExecute(Hinstance, nil, PChar(ShellListView1.SelectedFolder.PathName) , nil, nil, SW_SHOWMAXIMIZED);
end;
mihali4 вне форума Ответить с цитированием
Старый 28.01.2010, 22:10   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 20,999
По умолчанию

mihali4, а как бы разницы нет.
nil='open'

научите вашу программу отслеживать свою копию(есть коды на форуме)
и передавать ей(уже запущенной)имя нового файла
ВОВАН, то не просто так сказал
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.01.2010, 23:48   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
mihali4, а как бы разницы нет.
nil='open'
Не знаю, не знаю...
Я привел процедуру из пробного проектика, у меня ничего такого "второго" не запускается...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 85 тыс рублей в месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ShellExecute san72 Общие вопросы Delphi 6 16.05.2009 22:55
shellExecute GAGARIN-NEW Общие вопросы Delphi 3 18.10.2008 12:04
ShellExecute Zeraim Общие вопросы Delphi 1 07.05.2008 17:02
ShellExecute SNUPY Общие вопросы Delphi 4 19.02.2008 22:59
ShellExecute doncova1 БД в Delphi 4 29.11.2006 18:20