Как сделать программу зависимой от другой программы? - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть две программы Windows, p1 и p2 , в результате чего p1 является основной программой. Я хочу реализовать ситуацию так, чтобы программа p2 была зависимой для основной программы, я имею в виду, что программа два не может быть выполненаминус первое выполнение основной программы, то есть, кто-то выполняет программу p2 без основной программы, он должен сказать что-то вроде:

p2 не может запускаться один без p1 или основного приложения.

Это обзор того, что я хочу реализовать. Программа, p1 - моя собственная программа, которую я разработал в Delphi.

Надеюсь, это имеет смысл.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2019

Вот как это сделать с мьютексом:

MutexHandle := CreateMutex(NIL, TRUE, PChar('Unique String'));
AppExists   := GetLastError = ERROR_ALREADY_EXISTS;

По сути, AppExists будет иметь значение true или false, если мьютекс был создан каким-либо процессом.

0 голосов
/ 08 ноября 2019

Есть так много способов сделать это, что трудно даже понять, с чего начать. Вы можете использовать мьютекс, канал, разделяемую память или любой другой IPC - либо для связи, либо просто проверьте, был ли он создан. Вы можете вызвать app2 из app1 и проверить родительский процесс. Если вы используете внутренний сервер, вы можете отправить два запроса, и сервер сможет проверить, открылось ли сначала приложение app1.

Предполагая, что у вас есть приложение app1, а не app2, самым простым вариантом будет использование драйвера ядра. Добавьте процедуру уведомления процесса и определите, когда запущены app1 и app2, кэшируя их. Если app2 запускается, но app1 не завершает app2 из земли ядра, в противном случае дайте ему запуститьсяВы также можете определить, когда app1 закрывается и завершать app2 одновременно, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...