@kokapuk

Почему не работает SendMessage?

#include <iostream>
#include <Windows.h>
#include <chrono>
#include <thread>

static void action() {
	HWND main = FindWindow(NULL, L"clumsy 0.3");

	if (main == NULL) {
		printf("MAIN IS NULL\n");
		return;
	}

	HWND filt = FindWindowEx(main, 0, 0, L"Filtering");

	if (filt == NULL) {
		printf("FILT IS NULL\n");
		return;
	}

	HWND buttonHandle = FindWindowEx(filt, 0, L"Button", L"Start");

	if (buttonHandle == NULL) {
		printf("BUTTONHANDLE IS NULL\n");
		return;
	}
	
	printf("BUTTON IS PRESSING\n");


	SendMessage(buttonHandle, BN_CLICKED, 0, 0);

	printf("BUTTON IS PRESSED\n");
}

int main()
{
	bool lastKeyIsPressed = false;

	while (true)
	{
		Sleep(50);
		if ((GetKeyState(VK_LMENU) & 0x8000)) {
			if (!lastKeyIsPressed) {
				action();
				lastKeyIsPressed = true;
			}
		}
		else
		{
			lastKeyIsPressed = false;
		}
	}
    
}

никаких ошибок, просто ничего не происходит
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@kokapuk Автор вопроса
Проблема была в правах администратора, если у вас не работает, попробуйте запустить скомпилированный exe от админа. И всё-таки замените BN_CLICKED на BM_CLICK, я не тестил BN_CLICKED с правами админа, может тоже будет работать. Ещё хочу уточнить, если вдруг не получается найти кнопку в окне, возможно, кнопка находится внутри другого контрола, в таком случае, сначала надо будет получить его, точную иерархию объектов можно посмотреть через spy++
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@galaxy
Попробуй BM_CLICK, а не BN_CLICKED
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы