Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 860

/ вопрос открыт /

1) Доброго времени суток, уважаемые эксперты!

Можно ли с помощью делфи/Си управлять положением курсора мышки и вызывать события клика левой и правой кнопки.

Если все таки можно, то будьте добры приведите пример таких функций.

2) можно ли это реализовать в консольном режиме?

3) если приложение написано в консольном режиме как сделать так чтобы можно было передавать ему параметры вызывая в командной строке windows/linux (Например: ping x.x.x.x, где x.x.x.x параметр а ping вызываемое приложение)

BAHbOK Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: BAHbOK (статус: Посетитель)
Вопрос отправлен: 7 марта 2010, 23:11
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 8 марта 2010, 18:22; участников в обсуждении: 4.
dimedrol.tab

dimedrol.tab (статус: Посетитель), 7 марта 2010, 23:27 [#1]:

В Linux не знаю. В Windows позиция курсора задается функцией API:
SetCursorPos(x,y);
Параметры командной строки в Delphi достаются при помощи
ParamStr(num); // где num - номер параметра; нулевой параметр - путь к самому исполняемому файлу
В C/C++ число параметров лежит в переменной argc, а указатели на сами параметры - в массиве argv[].
argc и argv - аргументы функции main().
BAHbOK

BAHbOK (статус: Посетитель), 7 марта 2010, 23:42 [#2]:

Спасибо, большое. Осталось теперь разобраться как вызвать событие нажатия кнопок - или другими словами имитировать нажатие
dimedrol.tab

dimedrol.tab (статус: Посетитель), 7 марта 2010, 23:58 [#3]:

Ах да, еще же про клики. :)
Насколько я знаю, просто так сделать клик в определенную точку экрана нельзя. Клик делается по какой-то точке окна(рабочий стол - тоже окно, но клик по нему в той точке, в которой находится другое окно, приведет к клику по рабочему столу под ним). Итак:
HWND hWnd = FindWindow(WindowClass, WindowTitle);
SendMessage(hWnd, WM_LBUTTONDOWN, x, y);
SendMessage(hWnd, WM_LBUTTONUP, 0, 0);
где
WindowClass - класс окна, по которому будет произведен клик ( если не знаем, пишем NULL )
WindowTitle - заголовок окна
x, y - координаты клика.
Вы уж простите, что не на дельфи, а на си. Я его не знаю совсем, а что знал, то уже не помню :) Надеюсь, перевести сможете. :)
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 8 марта 2010, 00:03 [#4]:

Цитата (BAHbOK):

Осталось теперь разобраться как вызвать событие нажатия кнопок

mouse_event()
dimedrol.tab

dimedrol.tab (статус: Посетитель), 8 марта 2010, 00:13 [#5]:

Даже больше скажу: если нужен клик именно по кнопке в оконном приложении, то, чтобы не отслеживать ее координаты, можно найти сначала окно так, как сказано в предыдущем моем посте, потом найти кнопку так:
HWND hButton = FindWindowEx(hWnd, NULL, "button", ButtonCaption);
затем идентификатор ее меню:
HMENU hBtnMenu = GetMenu(hButton);
и наконец послать окну сообщение WM_COMMAND с первым параметром, равным этому самому идентификатору меню:
SendMessage(hWnd, WM_COMMAND, hBtnMenu, 0);
Успехов.
min@y™

min@y™ (статус: Доктор наук), 8 марта 2010, 11:51 [#6]:

Вопрос задан неверно.
Надо так:
1) у меня есть програма X;
2) хочу по ней водить мышкой и тыкать;
3) прога консольная;
4) как это сделать в Windows и Linux;
5) это программа - cmd/bash, как в ней пинговать сервера из моей проги?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
dimedrol.tab

dimedrol.tab (статус: Посетитель), 8 марта 2010, 18:12 [#7]:

min@y™: мне думается, что ему не нужно ничего пинговать, а только получить параметры командной строки. Просто он упомянул про ping в качестве примера, он ведь достает адрес и опции из параметров =)
min@y™

min@y™ (статус: Доктор наук), 8 марта 2010, 18:22 [#8]:

Тогда колись давай: чо за прогу пишешь и для чего.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:33
Выполнено за 0.02 сек.