Помогите разобраться с функцией SendMessage!

Тема в разделе "WASM.BEGINNERS", создана пользователем amvoz, 20 апр 2009.

  1. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Пожалуйста...
    Ребята, пытаюсь послать программой prog2.exe консольному окну, которое создано программой progr1.exe, сообщение, что нажата клавиша <Enter>
    Если окно, созданное prog1.exe, это сообщение получит, то оно закроется. Код:

    Код (Text):
    1. SendMessage((HWND)DeskriptorOkna, WM_KEYDOWN, VK_RETURN, 0);
    Второй, третий и четвёртый параметр понятны, первый- дескриптор окна, я его нахожу программой progr1.exe, записываю в бинарный файл, а программа prog2.exe его из файла читает.
    Я в дескрипторе не сомневаюсь, я prog2.exe и в OllyDbg запускал, стваил бряк на SendMessage и смотрел значения в стеке, всё совпадает.
    Функция SendMessage возвращает ноль

    В общем, не закрывается окно. Так тоже пробовал
    Код (Text):
    1. SendMessage((HWND)DeskriptorOkna, WM_KEYDOWN, VK_RETURN, 0);
    2. SendMessage((HWND)DeskriptorOkna, WM_KEYUP, VK_RETURN, 0);
    ...Посылал то есть окну сообщение, что клавиша отпущена. Бесполезно, не исчезает оно. Помогите, пожалуйста. Спасибо.
     
  2. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Заменил SendMessage на PostMessage и всё заработало.
    Почему- одному Богу известно.
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    (Видимо) процедура консольного окна работает не с keydown\up, а с WM_CHAR, которые генерятся функцией TranslateMessage в стандарном обработчике очереди сообщений