| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > WM_User в SendMessage |
| Автор: heskey 1.8.2005, 17:34 |
| SendMessage(ShareInf^.AppWndHandle, WM_USER, ParamW, Code); если я посылаю сообщение из библиотеки главному приложению, как мне использовать эту функцию и какой параметр должен быть? всегда ли WM_USER..или это зависит от типа хука? И как потом обработать его в приложении..Расскажите пожалуйста, и если можно пример какой - нибудь. |
| Автор: Song 2.8.2005, 08:29 |
| Чтобы приложения могли обмениваться кустарными сообщениями, их надо зарегистрировать через RegisterWindowMessage Добавлено @ 08:30 Если нужно передать что-то, то можно просто воспользоваться WM_COPYDATA |
| Автор: heskey 2.8.2005, 15:10 |
| Не совсем..мне просто нужно из библиотеки вернуться к основному приложению, для этого я и хочу послать сообщение, что б затем обработать его в гланой программе. |
| Автор: ФЫГ 2.8.2005, 18:27 |
| В библиотеке: SendMessage(MainAppHWnd,WM_YOURMESSAGE{>=WM_USER},wParam,lParam); В приложении: interface ... type YourForm=class(TYourForm)...private...procedure OnWM_YOURMESSAGE(var Message: TMessage); message WM_YOURMESSAGE; жмёшь Ктрл+Шифт+Ц и в новоиспечённой процедуре пишешь обработку сообщения WM_YOURMESSAGE (все параметры в передаваемой структуре) |
| Автор: heskey 4.8.2005, 14:21 | ||||
спасибо большое за помощь. Все получилось! Я послал из библиотеки сообщение
и обработал его вот так:
.... App := CreateOleObject("excel.application"); ... выскакивает следующая ошибка "Не удается выполнить исходящий вызов, так как приложение обрабатывает входящий синхронный вызов" в чем я неправ? что делать? |
| Автор: Romikgy 5.8.2005, 08:33 |
| Мож попытаться вынести reportdate из Procedure TForm1.WMUser(var Message: TMessage); и выполнять гдет в другой процедуре |