Перехват сообщений в чужой программе
Меня бесит там набирать цццюнфюкг вместо ya.ru. Вот.
Можно попробовать сделать проще, дольше, но универсальнее - пройти клавиатурный тренажер (например Соло). Быстро не получится, зато на все случаи жизни.
А иначе это только лечение следствия, а не причины.
Можно попробовать сделать проще, дольше, но универсальнее - пройти клавиатурный тренажер (например Соло). Быстро не получится, зато на все случаи жизни.
А иначе это только лечение следствия, а не причины.
Я на семьдесят каком-то Solo7 застрял...=)
Тем более знания никогда небудут лишними.
Я на семьдесят каком-то Solo7 застрял...=)
Тем более знания никогда небудут лишними.
Можно попробовать так. Определяешь процесс, в котором едит (хотя как это сделать в винде я представляю слабо.). Перехватываешь событие EditURL::OnEnter или EditURL::OnKeyPress и меняешь рашен буквы на буржуйские. Это на вскидку. Глубоко не копал. В никсах это вожможно. Проверял.
Можно попробовать так. Определяешь процесс, в котором едит (хотя как это сделать в винде я представляю слабо.). Перехватываешь событие EditURL::OnEnter или EditURL::OnKeyPress и меняешь рашен буквы на буржуйские. Это на вскидку. Глубоко не копал. В никсах это вожможно. Проверял.
Я рад, что под никсами это все пашет. Честно. И мне самому приходило в голову отловить сообщение WM_SETFOCUS к эдиту... Но как? Вот, что я спрашиваю.
Я рад, что под никсами это все пашет. Честно. И мне самому приходило в голову отловить сообщение WM_SETFOCUS к эдиту... Но как? Вот, что я спрашиваю.
Я сдесь в win32 help-е покапался и вот че нарыл, может поможет:
Thread Walking
A snapshot that includes the thread list contains information about each thread of each currently executing process. You can retrieve information for the first thread in the list by using the Thread32First function. After retrieving the first thread in the list, you can retrieve information for subsequent threads by using the Thread32Next function. Thread32First and Thread32Next fill a THREADENTRY32 structure with information about individual threads in the snapshot.
The AttachThreadInput function attaches the input processing mechanism of one thread to that of another thread.
BOOL AttachThreadInput(
DWORD idAttach, // thread to attach
DWORD idAttachTo, // thread to attach to
BOOL fAttach // attach or detach
);
Parameters
idAttach
Specifies the identifier of the thread to be attached to another thread. The thread to be attached cannot be a system thread.
idAttachTo
Specifies the identifier of the thread to be attached to. This thread cannot be a system thread.
A thread cannot attach to itself. Therefore, idAttachTo cannot equal idAttach.
fAttach
Specifies whether to attach or detach the threads. If this parameter is TRUE, the two threads are attached. If the parameter is FALSE, the threads are detached.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. There is no extended error information available.
Remarks
Windows created in different threads typically process input independently of each other. That is, they have their own input states (focus, active, capture windows, key state, queue status, and so on), and they are not synchronized with the input processing of other threads. By using the AttachThreadInput function, a thread can attach its input processing to another thread. This also allows threads to share their input states, so they can call the SetFocus function to set the keyboard focus to a window of a different thread. This also allows threads to get key-state information. These capabilities are not generally possible.
The AttachThreadInput function fails if either of the specified threads does not have a message queue. The system creates a thread's message queue when the thread makes its first call to one of the Win32 USER or GDI functions. The AttachThreadInput function also fails if a journal record hook is installed. Journal record hooks attach all input queues together.
Note that key state, which can be ascertained by calls to the GetKeyState or GetKeyboardState function, is reset after a call to AttachThreadInput.
Windows NT: You cannot attach a thread to a thread in another desktop.
You can enumerate the threads of a specific process by taking a snapshot that includes the threads and then by traversing the thread list, keeping information about the threads that have the same process identifier as the specified process.
You can retrieve an extended error status code for Thread32First and Thread32Next by using the GetLastError function.
Извини что по аглицки.
Я на семьдесят каком-то Solo7 застрял...=)
Тем более знания никогда небудут лишними.
К слову сказать, Соло тут совершенно не причем. Она учит слепому набору, а не автоматическому переключению раскладок...
А если стоит более двух раскладок?..
К слову сказать, Соло тут совершенно не причем. Она учит слепому набору, а не автоматическому переключению раскладок...
А если стоит более двух раскладок?..
Какая разница сколько стоит раскладок? Если набираеш текст и смотришь на монитор, а не на клавиатуру, то никогда не наберешь "цццюнфюкг" вместо "www.ya.ru"!
Да и раскладки переключаются по прошествии некоторого времени (и приобретения опыта) действительно автоматически.
Какая разница сколько стоит раскладок? Если набираеш текст и смотришь на монитор, а не на клавиатуру, то никогда не наберешь "цццюнфюкг" вместо "www.ya.ru"!
Да и раскладки переключаются по прошествии некоторого времени (и приобретения опыта) действительно автоматически.
Это оффтоп. Форум о программировании.
Это оффтоп. Форум о программировании.
Согласен!!! Сама по себе задачка интересная. И не чего флуд про раскладки клавы разводить. Дело ведь не вводе с клавы, а в принципе. Как можно контролировать ввод другой конкретной проги. Я вот уже второй день рою, пока не очень получается.
з.ы.
И всеже глянь еще раз хелп по win32. Такое ощущение, что там надо копать (см. мое пред. сообщение)