Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.08.2010, 19:48   #1
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию как послать команду нажатия кнопки мыши

Добрый день, пишу программу, которая должна послать в другую программу клик левой кнопки мыши. Вот код который я состроил
Код:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

void main (void)
{
	POINT last;
	HWND hwnd,hwndChild;
	hwnd = FindWindow(NULL,"Имя_окна");
	GetCursorPos(&last);
	printf("x = %d y = %d\n", last.x, last.y);
	SetCursorPos(500,500);
        CButton::OnLButtonDown(NULL,last);
	if(!hwnd)
	{
		printf("error %d\n",GetLastError());
		exit(0);
	}
	hwndChild = FindWindowEx(hwnd,NULL,NULL,NULL);
	if(!hwndChild)
	{
		printf("error Child %d\n", GetLastError());
		exit(1);
	}
}
строчка CButton::OnLButtonDown(NULL,last); конечно ошибка, просто я не знаю как ее осуществить, смотрел на разных сайтах - не нашел
это только первая проблема, вторая состоит в том, чтобы послать это нажатие в определенное окно, а как это сделать - не знаю.
Дайте советы пожалуйста или ссылочками интересными закидайте
и вообще правильно я хоть начал? Нужно ли работать через HWND?
пишу на VS 6.0
Спасибо за ответы.

Последний раз редактировалось Olejik; 10.08.2010 в 20:11.
Olejik вне форума
Старый 10.08.2010, 22:55   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Сходите в поиск на форуме!
p51x вне форума
Старый 10.08.2010, 23:04   #3
fort-_-minor
46KSS
Пользователь
 
Аватар для fort-_-minor
 
Регистрация: 26.07.2010
Сообщений: 58
По умолчанию

Цитата:
int main(void)
Первое, что бросается в глаза
fort-_-minor вне форума
Старый 15.08.2010, 00:37   #4
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

всем снова привет.
настрочил код:
Код:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void main (void)
{
	int b = 0;
	LPTSTR lpName;
	POINT pt;
	HWND hwnd;
	Sleep(5000);
	GetCursorPos(&pt);
	printf("x = %d y = %d\n",pt.x,pt.y);
	hwnd = WindowFromPoint(pt);
	if(!hwnd)
	{
		printf("%d\n",GetLastError());
		getch();
		exit(0);
	}
	SendMessage(hwnd,WM_LBUTTONDOWN,MK_LBUTTON,MAKELONG(pt.x,pt.y));
	SendMessage(hwnd,WM_LBUTTONUP,0,MAKELONG(pt.x,pt.y));
	getch();
}
но тут есть один косяк, я узнаю какое окно в позиции курсора, беру его hwnd и пытаюсь по координатам мышки послать щелчок левой кнопки мыши, но получается немного не то, программа выделяет область и все. Именно щелчка левой кнопки мыши нету. Помогите пожалуйста, где у меня тут косяк?
Здесь немного по кривому у меня. Я узнаю область где находится мышка по всему экрану, но я схитрил на данный момент, я в правый верхний угол завел папку "Мой компьютер" и наводил уже на эту папку курсор.
Спасибо за помощь.
Olejik вне форума
Старый 17.08.2010, 15:37   #5
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

я понял в чем был косяк, вот работающий код:
Код:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void main (void)
{
	RECT lpRect;
	POINT pt;
	HWND hwnd;
	Sleep(5000);
	GetCursorPos(&pt);
	
	hwnd = WindowFromPoint(pt);
	GetWindowRect(hwnd,&lpRect);
	pt.x = pt.x - lpRect.left;
	pt.y = pt.y - lpRect.top;
	if(!hwnd)
	{
		printf("%d\n",GetLastError());
		getch();
		exit(0);
	}
	SendMessage(hwnd,WM_LBUTTONDOWN,MK_LBUTTON,MAKELONG(pt.x,pt.y));
	SendMessage(hwnd,WM_LBUTTONUP,0,MAKELONG(pt.x,pt.y));
	getch();
}
но у меня вопросик, бывает, что мне ошибку выдает: недопустимый дескриптор окна. В чем это может быть косяк?
Olejik вне форума
Старый 17.08.2010, 15:54   #6
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Вероятно по курсором нет окна.
Сделайте условие после
Код:
GetWindowRect(hwnd,&lpRect);
что -то вроде проверки
Код:
if (hwnd){//продолжаем работу}
else{//не удалось определить дескриптор окна}
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума
Старый 17.08.2010, 20:24   #7
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

Цитата:
Сообщение от Olejik Посмотреть сообщение
Код:
...
	GetWindowRect(hwnd,&lpRect);
	pt.x = pt.x - lpRect.left;
	pt.y = pt.y - lpRect.top;
	if(!hwnd)
	{
		printf("%d\n",GetLastError());
		getch();
		exit(0);
	}
...
а этого не достаточно?
программа же так и так выходит если вдруг не сработает GetWindowRect()
Olejik вне форума
Старый 11.02.2012, 20:14   #8
ProGec4
Пользователь
 
Регистрация: 22.12.2011
Сообщений: 68
По умолчанию

а как зделать чтобы при нажатии на F1 Что-то приисходило
ProGec4 вне форума
Старый 11.02.2012, 21:02   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Одна тема - Один автор. Прошу не забывать.
I'm learning to live...
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как послать нажатие кнопки? И вопрос про хук клавы. TwiX Общие вопросы Delphi 22 11.09.2009 19:14
как с помощию нажатия кнопки можно открыть мой компьютер? wulf17 Общие вопросы Delphi 4 23.06.2009 18:34
Как Как проверить кнопки мыши без OnMouseDown? Вадим Буренков Общие вопросы Delphi 3 22.05.2009 15:08
Симуляция нажатия кнопки мыши в VS С2008 atlon Общие вопросы C/C++ 11 06.02.2009 16:16
Как послать команду AngelOfDeath Работа с сетью в Delphi 2 10.04.2008 08:23