Ms Visual Studio Mfc

Тема в разделе "MS Visual C++", создана пользователем solova, 29 янв 2011.

Статус темы:
Закрыта.
  1. solova

    solova Гость

    Решил научится манипулировать(управлять) другую программу своей.
    Например нажимать кнопки, вписывать текст, считывать и т.п.
    По этой теме я полный ноль, только сегодня решил(решился) изучить это.
    Хочу создать маленькую программу MFC которая:
    1)В уже открытом "Калькуляторе" вписывает какую либо цифру.
    2)Нажимает на какую либо кнопку.
    В своей MFC программе создал кнопку которая должна это сделать.
    написал обработчик, есть ошибки, не могу понять как исправить(но уверен они очень глупые).
    Код (C++):
    void Cokno1Dlg::OnBnClickedButton1()
    {
    HWND ht;
    ht = (HWND)FindWindow(NULL,"Калькулятор");       //Находим окно
    ht = (HWND)GetWindow(GW_CHILD);             //заглядываем внутрь
    ht = (HWND)GetWindow(GW_HWNDNEXT);          //Окно ввода
    //SendMessage(ht, WM_SETTEXT, 0, LPARAM("777"));    // вводим "777"
    ht = (HWND)GetWindow(GW_HWNDNEXT);          //"MC"Button
    ht = (HWND)GetWindow(GW_HWNDNEXT);          //"MR"Button
    ht = (HWND)GetWindow(GW_HWNDNEXT);          //"MS"Button
    ht = (HWND)GetWindow(GW_HWNDNEXT);          //"M+"Button
    ht = (HWND)GetWindow(GW_HWNDNEXT);          //"7"
    ht = (HWND)GetWindow(GW_HWNDNEXT);          //"4"
    SendMessageA(ht,WM_LBUTTONDOWN,0,0);            //Нажимаем "4"
    SendMessageA(ht,WM_LBUTTONUP,0,0);          //Отпускаем "4"

    }
    В результате в "Калькуляторе" должно быть написано "7774"
    Какие у меня ошибки?
    Где можно найти описание функции SendMessage() и всех её параметров На русском.
     
  2. solova

    solova Гость

    что за глюк? не могу понять,
    когда пишу " SendMessage( " в сплывающем окне(строчке) мне показывают что первый параметр "UNIT message",
    и в ошибках пишет cannot convert HWND to UNIT.

    ну в этом разобрался -для MFC надо :: ставить перед (API) функцией чтобы хендл вписывать.
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">вот как это выглядит</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    void COkno1Dlg::OnBnClickedButton1()
    {
    HWND ht;
    ht = ::FindWindow(NULL,L"Калькулятор");      //nahodim okno
    ht = ::GetWindow(ht,GW_CHILD);              //adres stroki vvoda
    ::SendMessage(ht, WM_SETTEXT, 0,(LPARAM)"777"); // vvodim "777"
    ht = ::GetWindow(ht,GW_HWNDNEXT);           //"MC"Button
    ht = ::GetWindow(ht,GW_HWNDNEXT);           //"MR"Button
    ht = ::GetWindow(ht,GW_HWNDNEXT);           //"MS"Button
    ht = ::GetWindow(ht,GW_HWNDNEXT);           //"M+"Button
    ht = ::GetWindow(ht,GW_HWNDNEXT);           //"7"
    ht = ::GetWindow(ht,GW_HWNDNEXT);           //"4"
    //ht = ::GetWindow(ht,GW_HWNDNEXT);         //"1"
    ::SendMessage(ht,WM_LBUTTONDOWN,0,0);       //нажимаем ^ кнопку
    ::SendMessage(ht,WM_LBUTTONUP,0,0);         //отпускаем кнопку
    }
    только ::SendMessage(ht, WM_SETTEXT, 0,(LPARAM)"777"); не работает
    как это исправить? или что я делаю не так?

    ::SendMessage(ht, WM_SETTEXT, 0,(LPARAM)(LPSTR)"7"); выводит семёрку, короче можно только один символ если поставить больше то квадратики выводит в калькулятор, ну а вопрос - как записать больше символов?

    ::SendMessage(ht, WM_SETTEXT, 0,(LPARAM)L"777"); заработало так (вписывает не только цифры но и буквы)
    Но проблема - Калькулятор не распознаёт мои 777 как цифру введённую мной, и при нажатии на кнопку(что на "Калькуляторе" или что в моей программе) он удаляет 777 и ставит нажатую цифру.
    Как это исправить?
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей