Автор Тема: [Автоматизация] [DevC++] Ошибки при компиляции программы на AutoItX3.DLL + C++  (Прочитано 905 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Помечен как лучший ответ пользователем id01 Отправлен Июль 04, 2017, 20:33:04

Оффлайн id01 [?]

  • Новичок
  • *
  • Сообщений: 8

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
InnI, спасибо! А я и не задумывался над тем, что такое вообще возможно с помощью WinApi! Все написал, работает. Код кривоватый, как по мне, но костыли старался не использовать (если не считать таковым глобальный вектор  ;D).

Прилагаю код, все на C++ и прокомментировано.
#include <windows.h>
#include <string>
#include <vector>

using namespace std;

// Вектор, в который записываются все хендлы окон с классом Button.
vector<HWND> buttons;

BOOL CALLBACK EnumFunc(HWND hWnd, LPARAM lParam) // Коллбэк-функция
{
char clsName[65];
GetClassName(hWnd, clsName, 64); // Получение класса по дескриптору
string strClsName = clsName;
if (strClsName == "Button") buttons.push_back(hWnd); // Если класс - Button - добавить дескриптор в вектор
        return TRUE;
}

int main(int argc, char *argv[])
{
        HWND hWnd = FindWindow("SciCalc", NULL); // Тренировался на калькуляторе :)

EnumChildWindows(hWnd, EnumFunc, 0); // Данная винапи функция передает дескриптор каждого дечернего окна (относительно переданного в неё дескриптора) в коллбэк-функцию

SendMessage(buttons[4], BM_CLICK, 0, 0); // Клац!
SendMessage(buttons[5], BM_CLICK, 0, 0); // Клац! (2)
//              ^
// Здесь указываются instance нужных кнопок, на 1 меньше, ибо нумерация с 0

        return 0;
}

И это все ради реализации вот этого кода:
Код: AutoIt [Выделить]
$hWnd = WinActivate("[CLASS:SciCalc]")
ControlClick($hWnd,"","Button5")
ControlClick($hWnd,"","Button6") // Здесь Button - класс дочернего окна, а 6 - instance
 


P.s. Всем спасибо, тему можно считать закрытой.

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
3792 Просмотров
Последний ответ Ноябрь 23, 2010, 01:45:45
от Yashied
5 Ответов
4373 Просмотров
Последний ответ Декабрь 17, 2010, 10:37:23
от akoulev
1 Ответов
5812 Просмотров
Последний ответ Март 18, 2012, 15:02:17
от Arei
5 Ответов
2625 Просмотров
Последний ответ Апрель 24, 2012, 16:25:08
от CreatoR
1 Ответов
2258 Просмотров
Последний ответ Май 14, 2012, 04:36:21
от Yashied
0 Ответов
1803 Просмотров
Последний ответ Май 26, 2013, 21:24:40
от prokazzza
5 Ответов
2084 Просмотров
Последний ответ Июль 21, 2013, 20:48:08
от CreatoR
3 Ответов
1026 Просмотров
Последний ответ Декабрь 11, 2014, 07:29:26
от IMStrelcov
6 Ответов
1920 Просмотров
Последний ответ Март 10, 2015, 00:03:10
от korvindeson
2 Ответов
426 Просмотров
Последний ответ Январь 16, 2017, 07:16:00
от Parazit