Связать тип файла с работающим приложением - PullRequest
6 голосов
/ 12 мая 2011

Я разрабатываю приложение в Windows, используя vs2005 c ++, и хочу связать расширение файла с приложением, что я могу сделать в настройках реестра.Однако, когда я нажимаю на файл, я хочу связать его с работающим экземпляром моего приложения, а не запускать новый.Как я могу добиться этого поведения.

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Раньше это делалось с параметром в winmain, но с msdn

Дескриптор предыдущего экземпляра приложения.Этот параметр всегда NULL.Если вам необходимо определить, существует ли другой экземпляр, создайте мьютекс с уникальным именем, используя функцию CreateMutex.CreateMutex будет успешным, даже если мьютекс уже существует, но функция вернет ERROR_ALREADY_EXISTS.Это указывает на то, что существует другой экземпляр вашего приложения, потому что оно сначала создало мьютекс.Однако злонамеренный пользователь может создать этот мьютекс раньше, чем вы, и предотвратить запуск вашего приложения.Чтобы предотвратить эту ситуацию, создайте мьютекс со случайным именем и сохраните имя так, чтобы оно могло быть получено только авторизованным пользователем.Кроме того, вы можете использовать файл для этой цели.Чтобы ограничить приложение одним экземпляром на пользователя, создайте заблокированный файл в каталоге профиля пользователя.

1 голос
/ 12 мая 2011

Я не могу дать вам реализацию с ног на голову, но загляну во что-то, называемое «межпроцессное взаимодействие» (обычно с использованием COM, если вы работаете в Windows). Что вы можете сделать, так это то, что когда ваша программа запускается, проверьте другие копии самой себя, если она найдет одну, то она сообщит той, какой файл вы хотели открыть, а затем закроется.

Я нашел для вас реализацию:

http://www.flounder.com/nomultiples.htm

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