Подсказать смогу, написать готовый пример -- нет
В архивах не найти, а так, на ходу написать слишком много особенностей.
Но общай схема такова.
1. Размещаешь на форме невидимый TextBox, в свойство .Text указываешь какой-нибудь заранее определенный текст, например "<APP-DATA-EXCHANGE>".
2. В контексте формы нужно объявить следующие Private-переменные: ExchMode и ExchConfirm.
3. Когда форма загрузиласть, проверяешь на App.PrevInstance=True. Если нет, то больше ничего не делаешь. Если App.PrevInstance=True, то используется следующий алгоритм:
3.1. Ищешь хэндл окна экземпляра1 через API FindWindow.
3.2. В полученном хэндле ищешь хэндл нужного TextBox'а через API FindWindowEx (искать будешь по тексту "<APP-DATA-EXCHANGE>")
3.3. Все, у тебя имеется хэндл нужного TextBox'а. Устанавливаешь ExchMode=True. Записывать и считывать с него текст можно функциями API SetWindowText/GetWindowText.
4. Устанавливаешь соединение
Например, записываешь в экз.1 строку вида "CONNECT, HWND=12345", где 12345 -- хэндл TextBox'а у экз.2 (чтобы экз.1 тоже мог "установить соединение")
Кроме того, в форме должен присутствовать обработчик событий примерно такого вида:
- Код: Выделить всё
Private Sub txtDataExchange_Change()
Select Case ExchMode
Case True
'Работает экземпляр2.
'Если получено подтверждение, то установить ExchConfirm=True
Case False
'Работает экземпляр1.
'Прием и обработка команд.
End Select
End Sub
Разумеется, следует разработать какой-либо протокол обмена данными. Т.е. вначале оба экземпляра устанавливают соединение и т.п.
Lasciate ogni speranza, voi ch'entrate.