Тема: Імітація кліку всередині програми, без розгортання вікна програми.

Всім привіт. Є значить потреба у своїй програмі імітувати клік мишкою, у визначених координатах.
Власне як це робиться, я знаю, проте мені потрібно, щоб це відбувалося навіть тоді, коли вікно програми згорнуте. Коли вікно розгорнуте, то нема проблем, а от коли згорнуте, то проблема.
Причому треба так, щоб клік відбувався без розгортання програми.
Хто таке вже робив ? Може є якісь приклади ?

Re: Імітація кліку всередині програми, без розгортання вікна програми.

UPD:
З допомогою Dr.Wozd, я майже зробив те що хотів.
Проте залишилося одне питання. Припустімо мені просто треба клацати по пустій формі. Це виконується без усіляких проблем. Клік відбувається, але от коли наприклад замість форми, клацати у стандартному компоненті TWebBrowser, то ніби нічого не відбувається.
Власне при створенні форми, я завантажую у тому компоненті сторінку.(на всю сторінку, прописана подія onclick(js), тож коли будь де на сторінці клацнути, тут же вискакує повідомлення(js))
Одна з кнопок у мене запрограмована якраз для того, щоб імітувати клік.

  BrowserHandle := WebBrowser1.Handle;
  PostMessage(BrowserHandle,WM_LBUTTONDOWN,0,(0 shl 16)+50);
  PostMessage(BrowserHandle,WM_LBUTTONUP,0,(0 shl 16)+50);

Після того, як сторінка у компоненті завантажилася, клацаю на кнопку, але сайт не видає ніяких повідомлень, що був зроблений клік.

3 Востаннє редагувалося Очі.завидющі (14.11.2013 23:27:21)

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Може скористаєтесь псевдопротоколом js: для виконання потрібного вам коду?

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Очі.завидющі написав:

Може скористаєтесь псевдопротоколом js: для виконання потрібного вам коду?

Щось не зовсім зрозумів, про що саме мова.

5

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Мова про те, що замість того, аби клацнути мишею, краще викликати обробник навпростець.

Щоб було зрозуміліше, скопіюйте цей текст у браузер і натисніть ENTER:

javascript:alert("Hello, World!");

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Очі.завидющі написав:

Мова про те, що замість того, аби клацнути мишею, краще викликати обробник навпростець.
Щоб було зрозуміліше, скопіюйте цей текст у браузер і натисніть ENTER:

javascript:alert("Hello, World!");

Це не зовсім мені підходить, оскільки все ж треба щоб клікала сама програма і в браузері відбувалася подія onclick і тд тп.

7

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Hanter написав:

Це не зовсім мені підходить, оскільки все ж треба щоб клікала сама програма і в браузері відбувалася подія onclick і тд тп.

А я про що? ;) onclick це змінна (поле) типу "функція". Тож викличте її цим способом програмно.

8

Re: Імітація кліку всередині програми, без розгортання вікна програми.

З якогось форуму:

Make sure you convert the mouse coordinate to the component coordinate (ScreenToClient I think you should use) !!!

А Google?

9

Re: Імітація кліку всередині програми, без розгортання вікна програми.

А може навіть так:

Yes. After the page has been loaded, you can query the browser's
Document property for the IHTMLDocument2 interface, drill through the
DOM interfaces until you find the button you are interested in, query
it for the IHTMLElement interface, and then call its click() method.

звідси http://www.borlandtalk.com/click-in-a-b … 13153.html

10

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Вам сюди, і по посиланнях там іще походіть: http://delphikingdom.com/asp/viewitem.a … logid=1410

P.S. Сподіваюся ви не якусь браузерку накручуєте, бо це найтупіше застосування програмістських навичок з усіх можливих.

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Torbins написав:

P.S. Сподіваюся ви не якусь браузерку накручуєте, бо це найтупіше застосування програмістських навичок з усіх можливих.

Нє, не браузерка)

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Ну перекопавши десятки сайтів, я знайшов лише як клікнути по суто якомусь елементу, наприклад кнопці, проте мені потрібно наприклад тицьнути на місці, де немає жодного елементу.
P.S: а з клікання по якомусь елементу, все набагато простіше. Так, наприклад щоб тицьнути на першій кнопці у формі, достатньо прописати цей код:

Прихований текст
WebBrowser1.OleObject.Document.forms.item(0).elements.item(0).click;

13

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Прихований текст

Що, попандерами бавитесь? Я теж колись так робив та ще й троя писав, що заходив на ті попандери й тицяв кудись, так само як і ви зараз.

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Очі.завидющі написав:
Прихований текст

Що, попандерами бавитесь? Я теж колись так робив та ще й троя писав, що заходив на ті попандери й тицяв кудись, так само як і ви зараз.

Можна сказати - вгадали.

15

Re: Імітація кліку всередині програми, без розгортання вікна програми.

А імітація click всередині тегу body? Але якщо всередині тегу body немає жодних елементів, то це здається не спрацює.

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Invader написав:

А імітація click всередині тегу body? Але якщо всередині тегу body немає жодних елементів, то це здається не спрацює.

От і я про це...

17

Re: Імітація кліку всередині програми, без розгортання вікна програми.

Перевірив. Таки не працює. Але якщо крім тегу body в документі нічого немає, то може можна додати якийсь невидимий елемент? Необов’язково натискати саме на елемент (кнопку наприклад), можна і на порожнє місце всередині тегу body.