Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Получить сообщение WM_COPYDATA
 
VBA выделяет всю эту строку и выдает ошибку User defined type not defined
Получить сообщение WM_COPYDATA
 
Виноват) , но все равно не компилирует эту строку,  User defined type  not defined
Получить сообщение WM_COPYDATA
 
Код
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hwnd As LongLong, ByVal wMsg As Long, _
    ByVal wParam As LongLong, lParam As Any) As LongLong


не компилируется , выдает  Ambiguous name detected : SendMessage
Изменено: Алексей Александрович - 01.12.2015 22:26:06
Получить сообщение WM_COPYDATA
 
Excel 2007  ,  Win 7  64
Получить сообщение WM_COPYDATA
 
объявляю для посыла вот так
Код
Option Explicit

Type COPYDATASTRUCT
    dwData As Long
    cbData As Long
    lpData As Long
End Type

Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hwnd As Long, ByVal wMsg As Long, _
    ByVal wParam As Long, lParam As Any) As Long

Const WM_COPYDATA = &H4A


Ну а в результате хочу обмена текстовыми сообщениями добиться , отправка сообщения работает четко , проверял на приложении написанном в delphi (принимать сообщение из excel) , но вот прием в vba непонятен
Получить сообщение WM_COPYDATA
 
Добрый день .   Подскажите ,пожалуйста, как можно наладить обмен сообщениями между двумя приложениями VBA (в excel) , которые открыты в разных окнах(разные процессы) . Необходимость иметь 2 приложения обусловлена однопоточностью excel . Пробую через sendmessage , отправляю , а получить не понимаю как, примеры для vb весят excel .
       так посылаю  сообщение:
Код
Dim hwnd As Long
Dim cds As COPYDATASTRUCT
Dim sMsg As String
    
hwnd = FindWindow("XLMAIN", "Microsoft Excel - TR3.xlsm")

          sMsg = "письмо"

          cds.dwData = 0
          cds.cbData = Len(sMsg) * 2 + 2
          cds.lpData = StrPtr(sMsg)
          i = SendMessage(hwnd, WM_COPYDATA, 0&, cds)
и пробую принять
смотрю пример для vb от microsoft https://support.microsoft.com/en-us/kb/176058

и вот эта процедура приводит к мерцанию caption редактора vba и зависанию excel
Код
Public Sub Hook() 
 lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, _
          AddressOf WindowProc)
          Debug.Print lpPrevWndProc
      End Sub



Что тут можно сделать? Может есть какие-то более очевидные способы сообщения?
Изменено: Алексей Александрович - 01.12.2015 21:40:33
Страницы: 1
Наверх