Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];

Вниз

Как отослать комбинацию клавиш Ctrl+V Opere?   Найти похожие ветки 

 
Ukrainec   (2008-02-13 20:18) [0]

В приложении создал горячую клавишу, которая берёт указанный текст из программы и должна вставить в определённое поле (в Opere) - в то поле, в котором сейчас находится системная каретка. Только как?..

Пробывал так:
SendMessage(GetForegroundWindow,MOD_CONTROL,VK_V,0);
В результате Опера вылетает...


 
Ukrainec   (2008-02-13 20:20) [1]

Где код VK_V определён как:
const
VK_V = 86;


 
Семеныч   (2008-02-13 21:17) [2]

Разве MOD_CONTROL - это сообщение?

Посылать надо WM_PASTE, и не top-level окну, а окну самого редактора. Еще можно сэмулировать нажатие клавиш - насколько помню, это делается через KeybdEvent.


 
Ukrainec   (2008-02-13 22:08) [3]

Пробывал так:
SendMessage(GetFocus, WM_PASTE, 0, 0);
В результате вставка не происходит... хотя, если не ошибаюсь, функция GetFocus должна возвращать именно окно самого редактора


 
Семеныч   (2008-02-13 23:21) [4]

> Ukrainec   (13.02.08 22:08) [3]

>  функция GetFocus должна возвращать именно окно самого редактора

Да, если этот редактор работает в том же потоке, который вызвал GetFocus. А у Вас не только потоки, у Вас даже процессы разные. Надо использовать AttachThreadInput.

Из MSDN:

GetFocus returns the window with the keyboard focus for the current thread"s message queue. If GetFocus returns NULL, another thread"s queue may be attached to a window that has the keyboard focus.

Use the GetForegroundWindow function to retrieve the handle to the window with which the user is currently working. You can associate your thread"s message queue with the windows owned by another thread by using the AttachThreadInput function.


 
Семеныч   (2008-02-13 23:24) [5]

Посмотрите keybd_event. Думаю, это будет проще.


 
Германн ©   (2008-02-14 01:16) [6]

Хм.
А почему нужно вставлять именно через Clipboard? А почему именно в Оперу?
Неисповедимы пути кодера :)


 
ketmar ©   (2008-02-14 14:33) [7]

>[6] Германн © (2008-02-14 01:16:00)
потому что userJS ниасилил.

---
Understanding is not required. Only obedience.


 
Style ©   (2008-02-14 17:25) [8]

ну ежели keybd_event

 keybd_event(VK_LCONTROL, MapVirtualKey(VK_LCONTROL, 0), 0, 0);
 keybd_event(Ord("V"),MapVirtualKey(Ord("V"), 0), 0, 0);
 keybd_event(Ord("V"),MapVirtualKey(Ord("V"), 0), KEYEVENTF_KEYUP, 0);
 keybd_event(VK_LCONTROL, MapVirtualKey(VK_LCONTROL, 0), KEYEVENTF_KEYUP, 0);


а вообще посылать чтото в Оперу это уже ИМХО изврат.


> потому что userJS ниасилил.
>


да я думаю и HTTP-протокол тоже - ниасилил.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
3-1211208539
aleksej
2008-05-19 18:48
2008.12.07
колесо мыши и dbgrid


3-1210766792
MishaLuk
2008-05-14 16:06
2008.12.07
убрать монопольный доступ


15-1223040224
Николай_
2008-10-03 17:23
2008.12.07
Сильно грелся процессор - в чем могло быть дело?


2-1225181892
Начинающий92
2008-10-28 11:18
2008.12.07
Сортировка StringList


15-1223268907
Gerbert
2008-10-06 08:55
2008.12.07
Многоязычность интерфейса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский