Взаимодействие с другими программами под Windows

Ветка для общения разработчиков и координации разработки

Взаимодействие с другими программами под Windows

Postby Abs62 » Sat Jun 04, 2011 1:29 pm

Учитывая, что нынешний алгоритм получения слова под курсором работает далеко не со всеми программами, есть предложение дать таким программам возможность самостоятельно определить искомое слово и сообщить его GD.
Идея такая: когда ищем слово, первым делом посылаем окну под курсором сообщение с запросом слова и искомыми координатами. Если оно отвечает, отдаём полученное слово GD и больше не рыпаемся. А если не отвечает - работаем прежним методом.

В приложении - экспериментальный вариант библиотек сканирования с исходниками и заголовочный файл для сторонних программ GDDataTranfer.h. Подробности предлагаемой реализации в нём. Кто хочет опробовать на своих программах, как это работает, пробуйте.

Кто что думает на этот счёт?
Attachments
mouseover_win32-experimental.7z
(19.16 KiB) Downloaded 215 times
Abs62
 
Posts: 621
Joined: Mon Jun 14, 2010 11:51 am

Re: Взаимодействие с другими программами под Windows

Postby ikm » Sat Jun 04, 2011 9:42 pm

Идея предоставления интерфейса другим программам хорошая, но есть одна проблема - таких программ даже через год-два окажется единицы. Пока что был только один pdf-просмотрщик, пользователи которого проявили интерес к подобному интерфейсу. То есть, конечную проблему того, что слова читаются из малого числа приложений, он все-таки не решит...

Однако с текущим алгоритмом надо что-то делать.

У меня была такая мысль: для извлечения слова из приложения пользователю следует выделить его в самом приложении средствами приложения (обычно достаточно двойного щелчка, чтобы выделить текущее слово) - затем, чтобы получить это слово, мы перехватываем у этой программы функции работы с Clipboard и посылаем ей виртуальное нажатие Ctrl-C. Если программа в ответ на это пытается записать что-то в Clipboard - значит, в ней есть выделенное слово, которое мы и переводим. Плюс такого подхода в том, что он позволяет выделять не только слова, но и произвольные словосочетания, а также в том, что это, в теории, будет работать практически везде.

Я не настолько хорошо дружу с WinApi, чтобы пробовать это реализовать - но, может, вы попробуете? :)
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Взаимодействие с другими программами под Windows

Postby Abs62 » Sun Jun 05, 2011 8:21 am

Насчёт работы через выделение я тоже думал. Но тут у меня пока что больше вопросов, чем ответов. Во-первых, мне пока непонятно, как отслеживать сам момент выделения в приложениях. Во-вторых - как это выделение оттуда вытащить, не портя содержимое буфера обмена. А портить его очень не хочется. В конце концов с его порчей и сейчас работать можно, через Ctrl+C+C, это не сильно геморнее, чем с выделением и зажатием модификаторов. Особенно если учесть, что на модификаторы по сути остаётся только Alt, потому как и Ctrl, и Shift влияют на режим выделения.

А интерфейс для других программ радикально проблему, конечно же, не решит. Но если он будет, у пользователей этих других программ хоты бы появится возможность дёргать разработчиков за хлястик и просить, чтобы они реализовали взаимодействие. Не будет интерфейса - и просить не о чем.
К тому же, реализовать его можно прямо сейчас, а работа по выделению - это перспектива. Не скажу даже какой отдалённости. ;)

Да и пользоваться наведением курсора на мой взгляд удобнее, чем выделением. Если можно обеспечить возможность работы по наведению, думаю, это стоит делать.
Abs62
 
Posts: 621
Joined: Mon Jun 14, 2010 11:51 am

Re: Взаимодействие с другими программами под Windows

Postby ikm » Sun Jun 05, 2011 8:52 am

Abs62 wrote:Во-первых, мне пока непонятно, как отслеживать сам момент выделения в приложениях.

Да, это сложный вопрос. Мне мыслится пока что-то типа того, что если в течение нескольких секунд после последнего клика мышью нажимается настроенная комбинация модификаторов, то можно пытаться извлекать перевод. В линуксе такой режим довольно удобен - правда, под линуксом момент изменения выделения известен.

Abs62 wrote: Во-вторых - как это выделение оттуда вытащить, не портя содержимое буфера обмена.

Так же, как сейчас сделан перехват слова под курсором - перехватываются всякие OpenClipboard, в приложение посылается запрос на запись в клипборд, оно пытается туда записать и вместо этого дергает перехваченные функции.

Abs62 wrote:А интерфейс для других программ радикально проблему, конечно же, не решит. Но если он будет, у пользователей этих других программ хоты бы появится возможность дёргать разработчиков за хлястик и просить, чтобы они реализовали взаимодействие. Не будет интерфейса - и просить не о чем.

Согласен. Пускай будет.
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Взаимодействие с другими программами под Windows

Postby Abs62 » Sun Jun 05, 2011 9:17 am

ikm wrote:Так же, как сейчас сделан перехват слова под курсором - перехватываются всякие OpenClipboard, в приложение посылается запрос на запись в клипборд, оно пытается туда записать и вместо этого дергает перехваченные функции.

Сейчас в некоторых программах функции вывода не перехватываются. Например, в OpenOffice. Смотрел через SpyStudio - вывод дёргается, а в хуки управление не передаётся. Возможно, там используется позднее связывание с запросом адресов через GetProcAdress.
Если встретится такая же бяка с функциями работы с буфером обмена - будет засада. С выводом-то ладно, оттого, что строчка лишний раз отрисуется, никто не пострадает. А вот если буфер несанкционированно меняться будет, это гораздо хуже.
Ладно, будем думать дальше. Может, чего и придумается. ;)
Abs62
 
Posts: 621
Joined: Mon Jun 14, 2010 11:51 am

Re: Взаимодействие с другими программами под Windows

Postby Tvangeste » Sun Jun 05, 2011 2:06 pm

Abs62 wrote:Ладно, будем думать дальше. Может, чего и придумается. ;)

В свежевышедшем Lingvo x5 заявлено, что он, дескать, научился обращаться со свежими браузерами и всплывающий перевод в них работает. Интересно бы узнать - как они этого добились.

Где-то читал, там утверждалось, что пацаны чуть ли не распознавание образов на лету делают и на лету из картинки текст вынимают. Даже и не знаю, верить ли.
Tvangeste
 
Posts: 893
Joined: Thu Jun 02, 2011 11:42 am

Re: Взаимодействие с другими программами под Windows

Postby ikm » Mon Jun 06, 2011 6:57 am

Только что поиграл с Lingoes - из firefox 4 по клику оно перевод не осуществляет, зато вот перевод выбранного работает. Попробовал и в OpenOffice - тоже работает. Интересно, как это реализовал автор программы?
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Взаимодействие с другими программами под Windows

Postby rbak » Tue Jun 07, 2011 4:59 am

Tvangeste wrote:В свежевышедшем Lingvo x5 заявлено, что он, дескать, научился обращаться со свежими браузерами и всплывающий перевод в них работает. Интересно бы узнать - как они этого добились.

Где-то читал, там утверждалось, что пацаны чуть ли не распознавание образов на лету делают и на лету из картинки текст вынимают. Даже и не знаю, верить ли.


Все верно вот обсуждали viewtopic.php?f=8&t=1141
rbak
 
Posts: 8
Joined: Mon Jun 06, 2011 5:30 am

Re: Взаимодействие с другими программами под Windows

Postby evaheseo » Thu Sep 07, 2017 7:58 am

I always asked his father around there is no money, and then put their savings out of a part to his father. I feel and his father had each other, his Nike Free 3.0 V6 father is old, haggard. Fortunately, later the mother came back, do not worry about the son of the. And then I left the rest of the summer time to her, I hope she can be happy, the results she is always busy, always let me feel really exist, and finally I no longer ask for anything. And friends for many years did not see, chat, I am very envious of these good students admitted to a good university, I also very low self-existence, the total feeling and they are no longer a grade of the people. The results of a friend said he admired me, I suddenly feel sad. Never to complain about what, and never to dislike what, I have been believing in a word, the day will drop any big people, must first if its mind, labor its bones, hungry its body, empty, So, so tempted to forbearance, had benefits it can not. Life gave me too much temper, I chose this life, I should have disgusted, lonely accompany me so far, I have enough patience. But I am here today, to pay tribute to life, to pay tribute to their own, but also hope that people you and I encourage each other. To pay tribute to life again.I was admitted to graduate school Since childhood, diligent in learning, book mountain tireless climbing. Will be the top of the mountain at the end of the mountain light, wide-chi-chihuai Cheng Cheng head. Spring and winter spring and summer, cold window full of frost wind. Several times haze rain several fine, folding Gui Gong palace Cheap Air Jordan Shoes dream. February 17, 2014, coincided with the first day of school leave, a sunny, refreshing day. 9:30 am, I was happy to pick up his son in the school Guo Yu-kai from the Hebei North College call: National University Medical Graduate Admissions Examination Hebei District score has just announced today, his total score of 331 points last year, more than 40 points Successfully selected! Good news came, I was excited to tears: accumulated in the heart of his son for many years the dream finally realized. Remember that the exam is not ideal son was pain and tears suffering that the summer of 2004, his diary read a sorrow and grief; remember the college entrance examination when the son of depressed, want to go to several factories to earn money to be Shut out, the scorching sun, alone along the long Beijing-Shanghai railway line at a loss to take a far better . again and again frustrated like a sea of ??waves like a torture has not yet involved in a simple and immature mind. Fortunately, the son was not difficult to knock down, again and again strong over, let the tears washed away the pain and weakness, become more confident and strong. 'Less than the Great Wall of non-hero', which is my son and I encourage the aphorism, I believe that through unremitting struggle ahead, and finally a dream that day!
evaheseo
 
Posts: 341
Joined: Wed Aug 23, 2017 5:10 am


Return to Разработка

Who is online

Users browsing this forum: No registered users and 1 guest

cron