|
Вопрос # 3 860/ вопрос открыт / |
|
1) Доброго времени суток, уважаемые эксперты!
Можно ли с помощью делфи/Си управлять положением курсора мышки и вызывать события клика левой и правой кнопки.
Если все таки можно, то будьте добры приведите пример таких функций.
2) можно ли это реализовать в консольном режиме?
3) если приложение написано в консольном режиме как сделать так чтобы можно было передавать ему параметры вызывая в командной строке windows/linux (Например: ping x.x.x.x, где x.x.x.x параметр а ping вызываемое приложение)
 |
Вопрос задал: BAHbOK (статус: Посетитель)
Вопрос отправлен: 7 марта 2010, 23:11
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 8 марта 2010, 18:22; участников в обсуждении: 4.
|
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 (статус: Посетитель), 7 марта 2010, 23:42 [#2]:
Спасибо, большое. Осталось теперь разобраться как вызвать событие нажатия кнопок - или другими словами имитировать нажатие
|
|
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 (статус: Посетитель), 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™ (статус: Доктор наук), 8 марта 2010, 11:51 [#6]:
Вопрос задан неверно.
Надо так:
1) у меня есть програма X;
2) хочу по ней водить мышкой и тыкать;
3) прога консольная;
4) как это сделать в Windows и Linux;
5) это программа - cmd/bash, как в ней пинговать сервера из моей проги?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
dimedrol.tab (статус: Посетитель), 8 марта 2010, 18:12 [#7]:
min@y™: мне думается, что ему не нужно ничего пинговать, а только получить параметры командной строки. Просто он упомянул про ping в качестве примера, он ведь достает адрес и опции из параметров =)
|
|
min@y™ (статус: Доктор наук), 8 марта 2010, 18:22 [#8]:
Тогда колись давай: чо за прогу пишешь и для чего.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|