Автоматизация с перехватом нажатия кнопок и мыши. - страница 6

 
HIDDEN >>:

А как перехватывают меню которые открываются по првой кнопки мыжи. Переходя в другую программу из терминала, меню пропадает и его засечь просто не получается. Может быть как-то нужно стопорить программу?

из контекстного меню многие пункты имеют код для WM_COMMAND

 
HIDDEN >>:

А как перехватывают меню которые открываются по првой кнопки мыжи. Переходя в другую программу из терминала, меню пропадает и его засечь просто не получается. Может быть как-то нужно стопорить программу?

При использовании утилиты Spy++ никаких проблем нет.

В программе из списка окон выделяете нужную. Запускаете перехватчик Windows сообщений (Spy -> Messages...).

В появившемся окне настраиваете фильтр сообщений (вкладка Messages).


После этого в исследуемой программе можно выполнять различные операции, в том числе вызывать меню по правой кнопке мыши и смотреть, что показывает утилита.

 
Ilnur >>:

При использовании утилиты Spy++ никаких проблем нет.

В программе из списка окон выделяете нужную. Запускаете перехватчик Windows сообщений (Spy -> Messages...).

В появившемся окне настраиваете фильтр сообщений (вкладка Messages).


После этого в исследуемой программе можно выполнять различные операции, в том числе вызывать меню по правой кнопке мыши и смотреть, что показывает утилита.

Вопрос на засыпку, если у Вас такие большие познания во всем, что Вы тут писали, почему бы Вам не сделать автоматический запуск тестера, оптимизацию, подстановку нужных переменных и т.д.

 

Как программно нажать клавишу Enter

Что-то так не работает.

Enter DOM_VK_ENTER 13 0x0D
 
HIDDEN >>:

Вопрос на засыпку, если у Вас такие большие познания во всем, что Вы тут писали, почему бы Вам не сделать автоматический запуск тестера, оптимизацию, подстановку нужных переменных и т.д.

У меня нет больших познаний во всем, что здесь я излагал. Я этого никогда не утверждал. 


Программное управление тестером меня никогда не интересовало. Поэтому реализовывать пока что-то подобное желаний нет.

В этой ветке возникли некоторые технические вопросы по применению функций WinAPI, поэтому я решил поучаствовать.

 
   Print("Запуск тестера стратегий");
   string sButtonStartName = "";
   while(!IsStopped()) 
   {
      Sleep(3000);
      GetWindowTextA(hButtonStart,sButtonStartName,6); //считываем текст кнопки запуска тестера
      if(sButtonStartName=="Старт")                    
      {
         Print("Работа тестера завершена");
         break;
      }
   }

Надо

string sButtonStartName = " ";

Хотя бы длиной 6 инициализировать(StringLen("Старт")+1), а лучше длиной 255 символов.

Иначе после возврата sButtonStartName из GetWindowTextA накрывается мусором соседняя в памяти переменная.

В моем примере с RestoreScripts в соседней ветке, если так не сделать, меняется значение строки, определенной по #define.

 
Erics >>:

Надо

string sButtonStartName = " ";

Хотя бы длиной 6 инициализировать(StringLen("Старт")+1), а лучше длиной 255 символов.

Иначе после возврата sButtonStartName из GetWindowTextA накрывается мусором соседняя в памяти переменная.

В моем примере с RestoreScripts в соседней ветке, если так не сделать, меняется значение строки, определенной по #define.

Да все правильно. Писал на скорую руку и упустил этот момент.

 
Ilnur >>:

В этой ветке возникли некоторые технические вопросы по применению функций WinAPI, поэтому я решил поучаствовать.

Нашел интересное окно. Отловить в нем практически ничего не возможно. Окно называется "Сохранить как". Подскажите как нажать кнопку "Сохранить"



Если выбирать конкретно кнопку сохранить, то имеем код кнопки 00000001



Но при обращении к ней по этому коду ничего не происходит. Что-же это за окно такое безымянное какое-то.

 
HIDDEN >>:

Нашел интересное окно. Отловить в нем практически ничего не возможно. Окно называется "Сохранить как". Подскажите как нажать кнопку "Сохранить"


Если выбирать конкретно кнопку сохранить, то имеем код кнопки 00000001


Но при обращении к ней по этому коду ничего не происходит. Что-же это за окно такое безымянное какое-то.

Диалог стандартный шелловский IIANM. А кнопка "сохранить" это переобозванная кнопка ID_OK по ходу.

 
TheXpert >>:

Диалог стандартный шелловский IIANM. А кнопка "сохранить" это переобозванная кнопка ID_OK по ходу.

Обращение к кнопке ОК ничего не даёт


PostMessageA(GetDlgItem(hTerminal,0x53),WM_COMMAND,IDOK,0);
Причина обращения: