Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   PostMessage в соседнее окно. (https://forum.antichat.xyz/showthread.php?t=206467)

090808 24.05.2010 18:03

PostMessage в соседнее окно.
 
Необходимо с помощью PostMessage отправить сочетание клавиш из переменной.

тоесть

Postmessage(h,WM_KEYDOWN,82,0);
Postmessage(h,WM_KEYDOWN,13,0);

В данным примере отправляются буквы rs
Как сделать чтобы отправляло команду например из edit1?


тоесть нужно в едит ввести буквы и чтобы эти буквы передались приложению (h)

Ildon 24.05.2010 18:12

Вот так и лучше через SendMessage

SendMessage(HWND, WM_SETTEXT, 0, (LPARAM)Edit1->Text.c_str());

Но еси не катит то место SendMessage пиши Пост Мессадж

Для тебя так

PostMessage(h,WM_KEYDOWN,(LPARAM)StrToInt(Edit1->Text),0);

Ну еси буквы над мне подумать

090808 24.05.2010 18:36

Цитата:

Сообщение от Ildon
Вот так и лучше через SendMessage

SendMessage(HWND, WM_SETTEXT, 0, (LPARAM)Edit1->Text.c_str());

Но еси не катит то место SendMessage пиши Пост Мессадж

Для тебя так

PostMessage(h,WM_KEYDOWN,(LPARAM)StrToInt(Edit1->Text),0);

Не помогло

Gar|k 24.05.2010 22:50

Ildon мда... 090808 если не понял Ildon тебе показывает вариант когда тебе известен HWND элемента EDIT окна в которое ты хочешь записать текст
"Edit1->Text.c_str()" указывает на то что Ildon кодит в не кошерном С++ дибилдере.

Если тебе нужно послать сообщение WM_KEYDOWN другому окну:
1. Нужно найти его хендл (FindWinodow и тд)
2. Тебе нужно прочитать текст из твоего edit-а (GetWindowTextA, GetDlgItemTextA)
3. Пощитай разницу между кодом клавиши и ASCII кодом типа r= 82 0x72 (а может есть какая таблица я хз) в общем тебе нужно знать какая буква какой код имеет на клаве.
4. В цикле отправляй сообщения другому окну // GetWindowText насколько я помню возвращает длину записанного буфера

Ildon 25.05.2010 07:54

Цитата:

Сообщение от Gar|k
Ildon мда... 090808 если не понял Ildon тебе показывает вариант когда тебе известен HWND элемента EDIT окна в которое ты хочешь записать текст
"Edit1->Text.c_str()" указывает на то что Ildon кодит в не кошерном С++ дибилдере.

Вот токо не надо тут на компилятор наезжать , а насчет примера ,я просто не врубился в начале что ему надо

St0nX 25.05.2010 08:53

Что бы отправить сообщение в поле Edit другого окна надо:
Найти само окно:
Код:

HWND hd, hdEdit;
char ms[] = "Mister trololo";
hd = FindWindow(NULL,'NameWindow');

Потом сам эллемент
Код:

hdEdit = FindWindowEx( hd , 0, 'Edit','Edit'); //2 параметр имя класса 3 параметр имя элемента.
(Узнать имя и класс эллемента не своего окна можно или используя spy++ или наваять прогу с использованием GetWindow.)
Теперь отправляем
Код:

if(hdEdit!=NULL)
{
SendMessage(hdEdit, WM_SETTEXT, 0, (LPARAM)ms);
}

По идее все должно сработать.

Ildon 25.05.2010 13:11

Да ему не текст в едит ))) Ему надо послать сочетание букв в окно

090808 25.05.2010 17:10

Цитата:

Сообщение от Ildon
Да ему не текст в едит ))) Ему надо послать сочетание букв в окно

Верно

St0nX 26.05.2010 08:32

http://www.edgeofnowhere.cc/viewtopic.php?t=396398


Время: 18:58