Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как открывать файлы в одном и том же процессе?

1.9K
11 февраля
strange kid
10 / / 23.02.2008
Допустим, есть аудио-проигрыватель, например, foobar2000.
.mp3 ассоциированы с проигрывателем.
Выполнение команды:
 
Код:
"c:\foobar2000.exe" "d:\path\file1.mp3"
запустит проигрыватель и он начнёт воспроизводить "d:\path\file1.mp3".
Теперь выполненим команду:
 
Код:
"c:\foobar2000.exe" "d:\path\file2.mp3"
и тот же проигрыватель (а не новый процесс!) начнёт воспроизводить "d:\path\file2.mp3".

Как мне добиться такого поведения в своей программе?
Как получить "d:\path\file1.mp3" при первом запуске процесса мне понятно: GetCommandLineW().
Как получить "d:\path\file2.mp3"?
311
15 февраля
plastictown
309 / / 08.01.2006
Цитата:

и тот же проигрыватель (а не новый процесс!) начнёт воспроизводить "d:pathfile2.mp3".
Как мне добиться такого поведения в своей программе?

При старте нужно смотреть, не запущена ли другая копия, тут все просто - создаете именованный объект ядра, скажем, мьютекс. При старте программы смотрите, если такой есть - значит программа уже работает. если нет - создаете.

Потом обнаружилось, что процесс уже работает, в этом случае нужно просто отправить ему имя файла, используя свой любимый способ IPC, и закрыть новый процесс. Если покопать в boost::interprocess, там есть все, что нужно, а если хочется чистый WinAPI, - просто придется писать больше текста.

1.9K
16 февраля
strange kid
10 / / 23.02.2008
Спасибо, за ответ!

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог