Как открыть исходный файл в конкретном экземпляре Visual Studio (2008)

#c #visual-studio #winapi

#c #visual-studio #winapi

Вопрос:

У меня открыто несколько экземпляров Visual Studio 2008, и я хочу открыть исходный файл в определенном экземпляре. Я планирую сделать это с помощью Win32 API и чего-то подобного ShellExecute(...) , но пока не могу найти решение.

Есть ли какой-либо способ сделать это? Есть мысли?

Комментарии:

1. Перетащите файл в него? (или программно имитировать это)

Ответ №1:

Если приложение, открывающее файл (VS2008), не имеет обработчика сообщений, настроенного для инициирования открытия файла (не уверен, что это так или нет; это был бы самый простой метод), вы, вероятно, могли бы имитировать перетаскивание файла в клиентскую область приложения (посредством отправки сообщения непосредственно в обработчик сообщений окна клиента). Вам нужно было бы получить дескриптор клиентского окна VS2008 для экземпляра, которому вы отправляете сообщение.

Хотя не знаю, какова была бы цель. Обычно вы можете вызвать новый экземпляр, чтобы открыть файл, используя ShellExecute(), но это не будет ссылаться на конкретный экземпляр, который уже запущен.

Другой метод, который вы могли бы рассмотреть, — подключить обработчик сообщений VS2008 к главному окну и регистрировать все отправленные сообщения, относящиеся к командам меню. Возможно, вы сможете определить, есть ли событие сообщения, связанное с открытием файла. Вычисление параметров, отправляемых в функцию WndProc(), было бы другой историей. Надеюсь, он будет отправлен в lParam в виде указателя на строку (для имени файла).

Комментарии:

1. приложение spy может быть полезно для отслеживания сообщений, чтобы выяснить, какие сообщения обрабатываются при открытии файла

Ответ №2:

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