HWND без CreateWindow

Тема в разделе "WASM.BEGINNERS", создана пользователем beginner, 15 ноя 2008.

  1. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    Есть небольшая задачка: перехват чужих сообщений и передача их своему процессу на примере калькулятора.
    Моя длл подсоединяется к чужому процессу, ставится ловушка на перехват сообщений. Ловушка срабатывает, проверял через MessageBeep :)

    Далее, как передавать эти сообщения своему процессу?
    1) "упаковать" сообщение, которое получено калькуляторов в сообщение WM_COPYDATA и отослать его в свой процесс. Но тут есть одна проблемка. Мой процесс не имеет окна, ни GUI, ни консольного. А что бы отослать сообщение - нужно знать хендл окна. Если у меня нет окон - то и нет хендла окна и нет очереди сообщений?
    Или есть? Если есть - то как узнать хендл окна и как обрабатывать поступающие сообщения?
    Или нужно создать окно через CreateWindow, зарегистрировать его, но не показывать?

    2) может есть еще проще способ передачи перехваченных сообщений в мой процесс? например через пайпы или через мейлслот? Может через расшаренную область данных? Если этими способами передавать данные, это ж нужно их синхронизировать, не так ли?

    2) есть ли теоритическая глубина стека сообщений? К примеру, я перехватываю сообщения от калькулятора и чтото с ними делаю. Но сообщения поступают и поступают. Не потеряются ли они? не будет ли переполнения? Я хочу быть уверен, что перехвачу все сообщения, которые адресованы калькулятору.

    3) как отлаживать длл в студии? у меня проект основного процесса и проект длл находятся в одном солюшине.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    не обязательно иметь окно чтобы обрабатывать очередь сообщений. см PostThreadMessage
    правда честно не знаю насчет возможности корректной передачи WM_COPYDATA

    насчет пайпа ксати хорошая мысль. а я бы еще LPC предложил
     
  3. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    Great
    а что такое LPC? как расшифровывается.
    в рихтере я про него не встречал.
    Спасибо.
     
  4. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    beginner
    Local procedure call
    тут на васме были статейки, если не изменяет память
     
  5. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    RamMerLabs
    спасибо
    а по другим вопросам, в частности интересует, не пропадут ли сообщения, если я их не успею обработать?
     
  6. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    можно сокеты заюзать. только фаер орать будет, когда порт открывать будешь
    отлаживать можно грузя ее в свой процесс LoadLibrary + лог работы не помешает
     
  7. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    через событие + маппинг файла.
     
  8. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    спасибо всем, разбираюсь пока.
    Жаль, что через PostThreadMessage нельзя отослать WM_COPYDATA, это сообщение отсылается тока через SendMessage, а это требует наличия HWND у основного процесса. :dntknw:
    Попробую еще через пайпы и другие методы, а то через LPC мне пока не сильно понятно :dntknw:
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    а что ж тебе так мешает создать небольшое невидимое окно?
    ну или разбирайся там с LPC или пайпами..
     
  10. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    микрософт рекомендует создавать невидимое окно
     
  11. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    Вообщем пока остановился на невидимом окне.
    WM_CHAR c калькулятора передался на ура!
    Продолжаю копать :)