Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Отправление текста чужому окну


Автор: Kirgston 13.11.2009, 12:52
Всем доброго времени суток! Вообщем есть такая задача отправить сообщение чужому окну (текст). Отправляю так:
Код

char *str=message.t_str();
PostMessage(FindWindow("MU","MU"),WM_CHAR,VK_RETURN,NULL);
Sleep(5);
for (int i=0; i <= strlen(str); i++) {
    PostMessage(FindWindow("MU","MU"),WM_CHAR,*(str+i),NULL);
}
PostMessage(FindWindow("MU","MU"),WM_CHAR,VK_RETURN,NULL);


То есть сначала ентер, потом по буквах кидаю текст, потом ещё раз ентер. Так надо =). Проблема вот в чем... если я например бросаю в текстовый редактор или куда нибудь ещё то всё нормально. Но цель - отправить текст в игру. А тут уже как то странно и непонятно... взял класс окна и кепшен окна с помощью WinSpy. Впихнул данные в FindWindow. И отправил:
Код

PostMessage(FindWindow("MU","MU"),WM_CHAR,VK_RETURN,NULL);

В игре нажался ентер.
Но когда я начинаю в цикле отправлять буквы то в игре ничего не происходит. Буквы не пишутся. Пробовал посмотреть может там дочерному окну надо кидать. Смотрел через тот же WinSpy - ничего нету. То есть с его помощю дочерных не нашёл. Попробовал с помощю SendMessage - также... ничего. Если емулирую нажатие кнопки 
Код

    keybd_event(Key, extra, 0, 0);
    keybd_event(Key, extra, KEYEVENTF_KEYUP, 0);

То иногда нажимается кнопка думаю это более связано с движком игры (слишком плохой он). Но это мне не подходит. Т.к. может быть вариант что окно будет вне фокуса.
Попробовал через PostMessage кинуть индекс кнопки - ничего.

Ребята подскажите почему так?

Автор: Andrey44 13.11.2009, 13:39
Цитата(Kirgston @  13.11.2009,  12:52 Найти цитируемый пост)
Но цель - отправить текст в игру

А откуда вы знаете в игре как текст тот пишется? Там и EDITCONTROLA-то поди нет, а пишется все через DX 

Автор: Kirgston 13.11.2009, 13:48
Звиняюсь... DX - DirectX?

если так то там OpenGL, правда ничего оно не меняет... остается только что? Эмулировать нажатие кнопок?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)