![]() |
|
#1
|
|||
|
|||
![]() блокнот с pagecontrol, вкладки, все дела...
Столкнулся с проблемой. Ассоциировал .txt со своей программой. В OnCreate обрабатываю Paramstr(1) Открываю файл - всё ок, открываю файл еще раз - запускается вторая копия моей программы, но хотелось бы в новой вкладке... Как мне поймать parastr(1) и открыть в новой вкладке? Или Paramstr(1) работает только в OnCreate ? |
#2
|
||||
|
||||
![]() Тут все сложнее.
Тебе надо при старте новой копии определить, что передан файл. Потом найти существующую копию, передать в нее имя файла, а текущую копию закрыть. Вот пример, как сделано у меня, но мне не евдо было передавать имя файла, просто "поднять" уже существующую копию: Код:
А вот, собственно, как вышеуказанное сообщение обраватывается в главной форме: Код:
|
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Gareth (20.08.2022)
|
#3
|
||||
|
||||
![]() Нашёл ответ на свой вопрос... может кому пригодится
Решение такое Код:
В файле .dpr (Project-ViewSource) Код:
|
#4
|
|||
|
|||
![]() Угумс. Про WM_COPYDATA то известно. Вопрос был в том, можно ли использовать для пересылки данных именно созданное сообщение. Походу, если не ошибаюсь, то нельзя.
Теперь вопросы. 1. В твоем коде, что произойдет, если приложений с заголовком TForm1 будет несколько? Какому из них придет сообщение? 2. А если ты будешь менять заголовок (ну как во всех блокнотах добавлять туда имя файла, например, или еще чего-нить)? Как ты найдешь нужное тебе окно. 3. Что будет с твоим кодом, если приложение, которому ты посылаешь сообщение, повисло? (Это к вопросу об использовании тут SendMessage). |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Gareth (29.08.2022)
|
#5
|
|||
|
|||
![]() Цитата:
А саму форму можно ведь назвать как нибудь оригинально) 3 - не знаю) |
#6
|
|||
|
|||
![]() 1. А, хначит там ищет по имени класса. Ну так и классов окна с таким именем может быть много.
3. Повисенет. SendMessage ждет ответа от принимающего окна. А вот PostMessage - не ждет. В остальном по функционалу они одинаковые. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Gareth (30.08.2022)
|