С++ и Опера
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
С++ и Опера - 2005-01-27 13:05:26
|
|
|
jEnizix
Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
|
Вот хочу написать прогу которая будет висеть в системе и отслеживать адресную строку в Опере, если в ней начнут писать по русски, то прога автоматически переключит раскладку клавы на Англ.
Подскажите какими АПИ ф-ми пользоваться, предпологаю что FindWindow и GetWindowText, и для перекл раскладки ActivateKeyboardLayout???
Или я не прав???[sm=9.gif] [sm=drink.gif]
|
|
|
С++ и Опера - 2005-01-27 13:19:26
|
|
|
Maker
Сообщений: 647
Оценки: 0
Присоединился: 2004-03-11 18:50:32
|
Попробуй посмотри Punto Sweetcher - она ловит ВЕСЬ текст с клавиатуры
|
|
|
С++ и Опера - 2005-01-27 15:01:02
|
|
|
f4i1ur3
Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
|
В принципе да… если не учитывать тот факт, что FindWindow не ищет дочерних окон, соответственно ты не найдешь через него строки адреса. + Если ты напишешь простенький сканер для окон, просканищь им окно браузера, то поймешь, что адресная строка еще к тому же не имеет отдельного класса.. :( Сканер можешь взять тут.
|
|
|
С++ и Опера - 2005-01-27 15:30:15
|
|
|
jEnizix
Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
|
да… [sm=8.gif] Адресная строка не имеет отдельного класса…
А пантосвичер у меня и так стоит, просто некоторые адреса он не меняет, а это бесит!!![sm=mad.gif][sm=mad.gif][sm=mad.gif]
Ну еще чтонить посоветуйте…
|
|
|
С++ и Опера - 2005-01-27 18:59:57
|
|
|
f4i1ur3
Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
|
Попробуй, к примеру, воспользоваться системными хуками… Если поэкспериментировать, то можно что-нибудь накрутить, но это будет достаточно извращенно. Хотя я этого никогда не боялся :). Попробуй. Обращайся, если что…
|
|
|
С++ и Опера - 2005-01-28 18:39:30
|
|
|
jEnizix
Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
|
А как найти дочернее окно? Например пытаюсь тоже самое проделать с IE… Ищю так FindWindow(NULL,"название_окна"); а вот как потом в этом окне найти адрессную строку?
ЗЫ ты не могбы дать мне примерчик простенький, про хуки, ну там как установить и т.п тока рабочий!!!
|
|
|
С++ и Опера - 2005-01-28 20:29:24
|
|
|
f4i1ur3
Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
|
Искать пробуй через EnumChildWindows(читай описание АПИ функций для подробной информации). По поводу хуков… почитай статью, там достаточно популярно все объясняется. Если не поймешь… :) …. тогда обращайся…. Да прибудет с тобой справочник!!(Листай документации по АПИ)
|
|
|
С++ и Опера - 2005-01-28 22:03:19
|
|
|
jEnizix
Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
|
По поводу EnumChildWindows и хуков… Дай простенькие примеры, чтобы разобраться что к чему… Просто я только начал учить С++… [sm=sm203.gif]
|
|
|
С++ и Опера - 2005-01-28 22:13:39
|
|
|
f4i1ur3
Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
|
Ладно… что-нибудь придумаю…. Жди…
|
|
|
С++ и Опера - 2005-01-30 13:51:30
|
|
|
jEnizix
Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
|
есть идея…
Если в опере программно нажимать F8 и посылать CTRL-C, а потом уже работать с буфером…[sm=sm128.gif]
|
|
|
С++ и Опера - 2005-01-30 14:25:02
|
|
|
f4i1ur3
Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
|
[Установка] HMODULE dllhook = LoadLibrary("Hook.dll"); HOOKPROC hook = (HOOKPROC)GetProcAddress(dllhook, "KeyboardHookProc"); HHOOK hhook = SetWindowsHookEx(WH_KEYBOARD,hook,dllhook,0);
[Библиотека Hook.dll] #include <windows.h> extern "C" { __declspec(dllexport) LRESULT CALLBACK MouseHookProcedure(int nCode,WPARAM wParam,LPARAM lParam); }; BOOL APIENTRY DllEntryPoint(HANDLE hModule, DWORD reason_for_call, LPVOID lpReserved) { hhookMouse=hModule;
if(reason_for_call==DLL_PROCESS_ATTACH) { MessageBox(NULL, "Loaded", "Debug", NULL); }
if(reason_for_call==DLL_PROCESS_DETACH) { MessageBox(NULL, "UnLoaded", "Debug", NULL); }
return TRUE; } __declspec(dllexport) LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { if(nCode == HC_ACTION)&&(!(HIWORD(lParam) & KF_UP)) { MessageBox(NULL, "Нажата кнопка", "Debug", NULL); } return CallNextHookEx(NULL, nCode, wParam, lParam); }
[Снятие хука] UnhookWindowsHookEx(hhook); FreeLibrary(dllhook);
Вот собственно и все… Протестировано на Borland 5.02 и Borland Builder 6.0. Остальное я думаю сам сообразишь….
|
|
|
С++ и Опера - 2005-01-30 14:34:04
|
|
|
f4i1ur3
Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
|
Тоже вариант… Тоесть ставишь хук, следишь за клавой, кнопка нажалась? Проверяешь активное окно… Окно оперы? 1)Копируешь в буфер адресную строку, обрабатываешь, вставляешь обратно, меняешь раскладку… или 2)Пишешь в буфер очередной символ.. Строка в буфере напоминает урл? Обрабатываешь.. Нет? Стираешь буфер, и все заново… Только надо учесть все моменты…
|
|
|
С++ и Опера - 2005-01-30 16:03:28
|
|
|
jEnizix
Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
|
Сенкс! Ща попробую… [sm=sm203.gif]
|
|
|
|
|