Re: Как получить выделенный текст ЛЮБОГО окна?
От: Alexey F  
Дата: 16.05.09 10:30
Оценка: 4 (1)
Здравствуйте, senglory, Вы писали:

S>Есть какой-нибудь способ это сделать? Желательно для окон в IE & Opera. И без интеграции в них.

Можно через WM_COPY, но у меня, например, этот способ не работает с Opera и Emacs.
Поэтому сейчас я использую код наподобие этого (ещё SetForegroundWindow перед процедурой можно поставить):
std::string const selectionContents ( int const waitTime ) {
    struct Input : public INPUT {
        Input ( WORD const key, bool const up = false ) {
            type = INPUT_KEYBOARD;
            KEYBDINPUT input = { key, MapVirtualKey ( key, 0 ), ( up ? KEYEVENTF_KEYUP : 0 ), 0, 0 };
            ki = input;
        }
    };

    INPUT events[] = {
        Input ( VK_CONTROL ),
        Input ( VK_INSERT ),
        Input ( VK_INSERT, true ),
        Input ( VK_CONTROL, true )
    };

    SendInput ( Tools::length_of_array ( events ), events, sizeof ( INPUT ) );
    Sleep ( waitTime ); // задержка на некоторое время - позволяем окну за это время скопировать содержимое выделения в буфер обмена
                        // (по-крайней мере, Code::Blocks делает это не мгновенно, а WaitForInputIdle для него возвращает управление до копирования).
    return clipboardContents (); // clipboardContents () возвращает строку с содержимым буфера обмена, реализация тривиальна
}

Emacs, правда, жалуется на "<C-kp-insert> is undefined", но в буфер обмена копирует
Т.е. посылаем окну нажатие клавиш Ctrl+Insert (нажали Ctrl, нажали Insert, отпустили Ctrl, отпустили Insert). Почему Ctrl+Insert, а не Ctrl+C? Знаю пару программ, которые копируют в буфер обмена исключительно по Ctrl+Insert.
(Способ проверен на Excel, Word, Opera, Code::Blocks, Emacs, Firefox, адресной строке проводника, блокноте и т.п.)
Re[2]: Как получить выделенный текст ЛЮБОГО окна?
От: dudkin  
Дата: 18.05.09 22:49
Оценка: 4 (1)
AF>Почему Ctrl+Insert, а не Ctrl+C? Знаю пару программ, которые копируют в буфер обмена исключительно по Ctrl+Insert.
тоже писал подобное в 2001м выбрал Ctrl+C потому что нашел более чем пару программ которые копируют исключительно по Ctrl+С
какие уже не помню. А по уму наверное надо пробовать оба пока не получишь евент от клипборда
А еще в офисе 2003 это мерзко на такие шутки у них клипборд менеджер свой, поэтому каждый раз когда скопировал через клипборд и восстановил у них всё это видно
Как получить выделенный текст ЛЮБОГО окна?
От: senglory  
Дата: 14.05.09 15:13
Оценка:
Есть какой-нибудь способ это сделать? Желательно для окон в IE & Opera. И без интеграции в них.
Re: Как получить выделенный текст ЛЮБОГО окна?
От: Ovl Россия  
Дата: 14.05.09 19:51
Оценка:
активировать окно и сделать put in clipboard
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
Re[2]: Как получить выделенный текст ЛЮБОГО окна?
От: senglory  
Дата: 15.05.09 05:03
Оценка:
Здравствуйте, Ovl, Вы писали:

Ovl>активировать окно и сделать put in clipboard


Не помогает, если надо выдернуть текст из IE, Mozilla, Opera. Как тут быть?
Re[3]: Как получить выделенный текст ЛЮБОГО окна?
От: Sinix  
Дата: 15.05.09 05:04
Оценка:
Гуглить на тему accessibility и ui authomation.
Re[4]: Как получить выделенный текст ЛЮБОГО окна?
От: senglory  
Дата: 15.05.09 21:20
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Гуглить на тему accessibility и ui authomation.

Не помогает совладеть с Opera & Excel. Как быть?
Re[5]: Как получить выделенный текст ЛЮБОГО окна?
От: Sorantis Швеция  
Дата: 15.05.09 22:07
Оценка:
Здравствуйте, senglory, Вы писали:

S>Здравствуйте, Sinix, Вы писали:


S>>Гуглить на тему accessibility и ui authomation.

S>Не помогает совладеть с Opera & Excel. Как быть?

А если так?
Вызываешь WindowFromPoint которая тебе вернет хендл окна. После этого и забираешь тект через
SendMessage с EM_GETSEL или EM_GETSELTEXT
As long as there is life, there is hope
Re[6]: Как получить выделенный текст ЛЮБОГО окна?
От: senglory  
Дата: 15.05.09 23:15
Оценка:
Здравствуйте, Sorantis, Вы писали:

S>Здравствуйте, senglory, Вы писали:


S>>Здравствуйте, Sinix, Вы писали:


S>>>Гуглить на тему accessibility и ui authomation.

S>>Не помогает совладеть с Opera & Excel. Как быть?

S>А если так?

S>Вызываешь WindowFromPoint которая тебе вернет хендл окна. После этого и забираешь тект через
S>SendMessage с EM_GETSEL или EM_GETSELTEXT


IE не обрабатывет их (((((((
Re[7]: Как получить выделенный текст ЛЮБОГО окна?
От: Sorantis Швеция  
Дата: 16.05.09 01:44
Оценка:
Здравствуйте, senglory, Вы писали:

S>Здравствуйте, Sorantis, Вы писали:


S>>Здравствуйте, senglory, Вы писали:


S>>>Здравствуйте, Sinix, Вы писали:


S>>>>Гуглить на тему accessibility и ui authomation.

S>>>Не помогает совладеть с Opera & Excel. Как быть?

S>>А если так?

S>>Вызываешь WindowFromPoint которая тебе вернет хендл окна. После этого и забираешь тект через
S>>SendMessage с EM_GETSEL или EM_GETSELTEXT


S>IE не обрабатывет их (((((((


ну-ка курни сюда, может подойдет. Код на Дельфи, но апишный,проблем не будет перевести.

http://www.borlandtalk.com/re-get-selected-text-from-another-application-vt71449.html
As long as there is life, there is hope
Re[8]: Как получить выделенный текст ЛЮБОГО окна?
От: Sorantis Швеция  
Дата: 16.05.09 01:48
Оценка:
http://www.developersdex.com/vb/message.asp?p=1121&amp;r=6551547
As long as there is life, there is hope
Re[9]: Как получить выделенный текст ЛЮБОГО окна?
От: Аноним  
Дата: 19.05.09 04:39
Оценка:
Здравствуйте, Sorantis, Вы писали:

S>http://www.developersdex.com/vb/message.asp?p=1121&amp;r=6551547
Re[9]: Как получить выделенный текст ЛЮБОГО окна?
От: senglory  
Дата: 19.05.09 04:40
Оценка:
Здравствуйте, Sorantis, Вы писали:

S>http://www.developersdex.com/vb/message.asp?p=1121&amp;r=6551547


Спасибо, это единственное, что сработало. Но только для IE. А как быть с Firefox, Excel, Opera, Word?
Re[3]: Как получить выделенный текст ЛЮБОГО окна?
От: Alexey F  
Дата: 20.05.09 12:13
Оценка:
Здравствуйте, dudkin, Вы писали:

Упс, не заметил, что ответили...

D>А по уму наверное надо пробовать оба пока не получишь евент от клипборда

Точно, надо будет попробовать .

D>А еще в офисе 2003 это мерзко на такие шутки у них клипборд менеджер свой, поэтому каждый раз когда скопировал через клипборд и восстановил у них всё это видно

Наверное, у меня эта фишка отключена, т.к. копирование в нём сейчас происходит нормально .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.