Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

С++ и Опера

Пользователи, просматривающие топик: 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]
Post #: 1
С++ и Опера - 2005-01-27 13:19:26   
Maker

Сообщений: 647
Оценки: 0
Присоединился: 2004-03-11 18:50:32
Попробуй посмотри Punto Sweetcher - она ловит ВЕСЬ текст с клавиатуры
Post #: 2
С++ и Опера - 2005-01-27 15:01:02   
f4i1ur3

Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
В принципе да… если не учитывать тот факт, что FindWindow не ищет дочерних окон, соответственно ты не найдешь через него строки адреса.
+ Если ты напишешь простенький сканер для окон, просканищь им окно браузера, то поймешь, что адресная строка еще к тому же не имеет отдельного класса.. :(
Сканер можешь взять тут.
Post #: 3
С++ и Опера - 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]

Ну еще чтонить посоветуйте…
Post #: 4
С++ и Опера - 2005-01-27 18:59:57   
f4i1ur3

Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
Попробуй, к примеру, воспользоваться системными хуками…
Если поэкспериментировать, то можно что-нибудь накрутить, но это будет достаточно извращенно. Хотя я этого никогда не боялся :).
Попробуй. Обращайся, если что…
Post #: 5
С++ и Опера - 2005-01-28 18:39:30   
jEnizix

Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
А как найти дочернее окно? Например пытаюсь тоже самое проделать с IE…
Ищю так
FindWindow(NULL,"название_окна");
а вот как потом в этом окне найти адрессную строку?

ЗЫ ты не могбы дать мне примерчик простенький, про хуки, ну там как установить и т.п тока рабочий!!!
Post #: 6
С++ и Опера - 2005-01-28 20:29:24   
f4i1ur3

Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
Искать пробуй через EnumChildWindows(читай описание АПИ функций для подробной информации).
По поводу хуков… почитай статью, там достаточно популярно все объясняется. Если не поймешь… :) …. тогда обращайся….
Да прибудет с тобой справочник!!(Листай документации по АПИ)
Post #: 7
С++ и Опера - 2005-01-28 22:03:19   
jEnizix

Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
По поводу EnumChildWindows и хуков…
Дай простенькие примеры, чтобы разобраться что к чему…
Просто я только начал учить С++…
[sm=sm203.gif]
Post #: 8
С++ и Опера - 2005-01-28 22:13:39   
f4i1ur3

Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
Ладно… что-нибудь придумаю…. Жди…
Post #: 9
С++ и Опера - 2005-01-30 13:51:30   
jEnizix

Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
есть идея…

Если в опере программно нажимать F8 и посылать CTRL-C, а потом уже работать с буфером…[sm=sm128.gif]
Post #: 10
С++ и Опера - 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.
Остальное я думаю сам сообразишь….
Post #: 11
С++ и Опера - 2005-01-30 14:34:04   
f4i1ur3

Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
Тоже вариант…
Тоесть ставишь хук, следишь за клавой, кнопка нажалась? Проверяешь активное окно… Окно оперы?
1)Копируешь в буфер адресную строку, обрабатываешь, вставляешь обратно, меняешь раскладку…
или
2)Пишешь в буфер очередной символ.. Строка в буфере напоминает урл? Обрабатываешь.. Нет? Стираешь буфер, и все заново…
Только надо учесть все моменты…
Post #: 12
С++ и Опера - 2005-01-30 16:03:28   
jEnizix

Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
Сенкс! Ща попробую…
[sm=sm203.gif]
Post #: 13
Страниц:  [1]
Все форумы >> [Веб-программинг] >> С++ и Опера







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.