На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Нажать на кнопку в приложении
    Тема стара, но подниму её снова.

    Задача такая, есть несколько приложений работающих в фоновом режиме, приложения сами на MFC - обычный диалог, но с динамическим содержимым, вывод биржевых графиков от сторонних разработчиков.
    Нужно одновременно в каждом перемещать мышь и нажимать на кнопки. Ключевое слово одновременно.

    Есть классический пример не работает вообще.
    ExpandedWrap disabled
          PostMessage(hWnd, WM_MOUSEMOVE, 0, MAKELPARAM(x, y));
          PostMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));
          PostMessage(hWnd, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(x, y));

    В PreTranslateMessage сообщения приходят, отлавливаются, но само содержимое не реагирует на них.

    Второй вариант:
    ExpandedWrap disabled
      INPUT input;
      input.type = INPUT_MOUSE;
      input.mi.dx = 10;
      input.mi.dy = 10;
      input.mi.dwFlags =( MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE|MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP);
      input.mi.mouseData = 0;
      input.mi.dwExtraInfo=NULL;
      input.mi.time=10;
      SendInput(1, &input, sizeof(INPUT));

    Работает, но это по сути просто отправка команд перемещения устройства на блок обработки ввода операционной системы.
    Запустить это сразу для двух приложений невозможно.

    Вопрос, возможно ли реализовать, что-то вроде SendInput, но что бы команды передавались только выбранному приложению или внутри приложения.
    Или же такой вариант невозможен в принципе. Это тоже будет результатом.
    Сообщение отредактировано: MaIron -
      По-моему невозможно, не могут же два приложения одновременно быть активными (фокус).
        Цитата ter_nk_ @
        По-моему невозможно, не могут же два приложения одновременно быть активными (фокус).

        Т.е. получается стандартным методом никак.
          Цитата MaIron @
          Т.е. получается стандартным методом никак.


          По-моему никак. Я бы наверное думал в сторону как в каждом конкретном приложении создавать свою "псевдомышь" - курсор и отрисовывать ее поверх этого окна.
            Цитата MaIron @
            Нужно одновременно в каждом перемещать мышь и нажимать на кнопки. Ключевое слово одновременно.

            А что важнее - нажимать на кнопки или перемешать мышь ?
            Или запускать обработчик нажатой кнопки из стороннего приложения ?
            Сообщение отредактировано: ЫукпШ -
              Важнее перемещать мышь с нажатой кнопкой.
              Сообщение отредактировано: MaIron -
                Вопрос остался нерешенным. Но актуальность потерял. Так, что закрываю тему.
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0238 ]   [ 16 queries used ]   [ Generated: 19.04.24, 15:30 GMT ]