PostMessage в соседнее окно.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by 090808, 24 May 2010.

  1. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    186
    Likes Received:
    45
    Reputations:
    10
    Необходимо с помощью PostMessage отправить сочетание клавиш из переменной.

    тоесть

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

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


    тоесть нужно в едит ввести буквы и чтобы эти буквы передались приложению (h)
     
    #1 090808, 24 May 2010
    Last edited: 24 May 2010
  2. Ildon

    Ildon Member

    Joined:
    13 Apr 2010
    Messages:
    43
    Likes Received:
    11
    Reputations:
    -10
    Вот так и лучше через SendMessage

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

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

    Для тебя так

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

    Ну еси буквы над мне подумать
     
    #2 Ildon, 24 May 2010
    Last edited: 24 May 2010
  3. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    186
    Likes Received:
    45
    Reputations:
    10
    Не помогло
     
  4. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    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 насколько я помню возвращает длину записанного буфера
     
    _________________________
  5. Ildon

    Ildon Member

    Joined:
    13 Apr 2010
    Messages:
    43
    Likes Received:
    11
    Reputations:
    -10
    Вот токо не надо тут на компилятор наезжать , а насчет примера ,я просто не врубился в начале что ему надо
     
  6. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    Что бы отправить сообщение в поле Edit другого окна надо:
    Найти само окно:
    Code:
    HWND hd, hdEdit;
    char ms[] = "Mister trololo";
    hd = FindWindow(NULL,'NameWindow');
    Потом сам эллемент
    Code:
    hdEdit = FindWindowEx( hd , 0, 'Edit','Edit'); //2 параметр имя класса 3 параметр имя элемента.
    (Узнать имя и класс эллемента не своего окна можно или используя spy++ или наваять прогу с использованием GetWindow.)
    Теперь отправляем
    Code:
    if(hdEdit!=NULL)
    {
    SendMessage(hdEdit, WM_SETTEXT, 0, (LPARAM)ms);
    }
    
    По идее все должно сработать.
     
  7. Ildon

    Ildon Member

    Joined:
    13 Apr 2010
    Messages:
    43
    Likes Received:
    11
    Reputations:
    -10
    Да ему не текст в едит ))) Ему надо послать сочетание букв в окно
     
  8. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    186
    Likes Received:
    45
    Reputations:
    10
    Верно
     
  9. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    http://www.edgeofnowhere.cc/viewtopic.php?t=396398
     
Loading...