Есть небольшая задачка: перехват чужих сообщений и передача их своему процессу на примере калькулятора. Моя длл подсоединяется к чужому процессу, ставится ловушка на перехват сообщений. Ловушка срабатывает, проверял через MessageBeep Далее, как передавать эти сообщения своему процессу? 1) "упаковать" сообщение, которое получено калькуляторов в сообщение WM_COPYDATA и отослать его в свой процесс. Но тут есть одна проблемка. Мой процесс не имеет окна, ни GUI, ни консольного. А что бы отослать сообщение - нужно знать хендл окна. Если у меня нет окон - то и нет хендла окна и нет очереди сообщений? Или есть? Если есть - то как узнать хендл окна и как обрабатывать поступающие сообщения? Или нужно создать окно через CreateWindow, зарегистрировать его, но не показывать? 2) может есть еще проще способ передачи перехваченных сообщений в мой процесс? например через пайпы или через мейлслот? Может через расшаренную область данных? Если этими способами передавать данные, это ж нужно их синхронизировать, не так ли? 2) есть ли теоритическая глубина стека сообщений? К примеру, я перехватываю сообщения от калькулятора и чтото с ними делаю. Но сообщения поступают и поступают. Не потеряются ли они? не будет ли переполнения? Я хочу быть уверен, что перехвачу все сообщения, которые адресованы калькулятору. 3) как отлаживать длл в студии? у меня проект основного процесса и проект длл находятся в одном солюшине.
не обязательно иметь окно чтобы обрабатывать очередь сообщений. см PostThreadMessage правда честно не знаю насчет возможности корректной передачи WM_COPYDATA насчет пайпа ксати хорошая мысль. а я бы еще LPC предложил
RamMerLabs спасибо а по другим вопросам, в частности интересует, не пропадут ли сообщения, если я их не успею обработать?
можно сокеты заюзать. только фаер орать будет, когда порт открывать будешь отлаживать можно грузя ее в свой процесс LoadLibrary + лог работы не помешает
спасибо всем, разбираюсь пока. Жаль, что через PostThreadMessage нельзя отослать WM_COPYDATA, это сообщение отсылается тока через SendMessage, а это требует наличия HWND у основного процесса. Попробую еще через пайпы и другие методы, а то через LPC мне пока не сильно понятно
Вообщем пока остановился на невидимом окне. WM_CHAR c калькулятора передался на ура! Продолжаю копать