Передача параметров в программу (Delphi)

программирование windows Delphi делфи

Стоит ассоциация определенного типа файла с моей программой. При открытии этого файла запускается моя программа, в которую передается путь к открываемому файлу (ParamStr(1)). Запуск более одного экземпляра программы запрещен.
Вопрос: как при открытии второго файла параметр передавался в открытую программу, а не запускался второй экземпляр моей программы.

Примечание:
Программа и так проверяет наличие второго экземпляра и выходит при обнаружении. А вот как "общаться" с первым экземпляром?
Ответы:
Никак. Прогамма должна запуститься. Но после запуска - проверить существование такой же запущенной программы (не спрашивай как, в Дельфи не силён), и если уже есть - пообщаться с первым экземпляром, передать ему всё нужное, и выйти.
Самый культурный вариант - сделать программу COM-сервером. Тогда второй экземпляр программы после того ка обнаружит первый, вызовет метод ком-сервера и отдаст ему свой ParamStr(1).
Вариант второй - делаешь простенькую ддл-ку которая экспортирует два метода. Первый зарегать callback-функцию, второй - отдать параметр. Программа запускается, проверяет наличие своей копии, если нет - цепляет дллку, вызывает первый метод, и отдает дллке свою каллбэк функцию. Второй экземпляр после того как обнаружил первый, тоже цепляет дллку, вызывает второй метод, отдает в него свой ParamStr(1), тот в свою очередь вызывает каллбэк функцию из первого экземпляра.
Вариант третий, самый простой и тупой - первая прога периодически проверяет определенный ключ в реестре, а вторая, перед тем как выйти этот ключ создает и пихает в него ParamStr(1).


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.