Не могу узнать раскладку клавиатуры в другом окне c++
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Не могу узнать раскладку клавиатуры в другом окне c++ - 2011-04-05 22:18:46.983333
|
|
|
Cowboy13
Сообщений: 59
Оценки: 0
Присоединился: 2011-03-06 11:41:58.613333
|
Не получается узнать раскладку в активном окне. Если вместо этой строчки cout<<GetKeyboardLayout(lpdwProcessId)<<endl; написать cout<<GetKeyboardLayout(0)<<endl; или посмотрев в диспетчере задач номер процесса и вписать вместо нуля, то все норм,но только для окна,которое вызвало эту функцию. в чем может быть трабл?! #include <iostream> #include <windows.h> #include <conio.h> using namespace std; int main() { HWND hWnd; DWORD lpdwProcessId; hWnd=FindWindow(0,L"1.txt - Notepad2"); GetWindowThreadProcessId(hWnd,&lpdwProcessId); cout<<GetKeyboardLayout(lpdwProcessId)<<endl; _getch(); }
|
|
|
RE: Не могу узнать раскладку клавиатуры в другом окне c++ - 2011-04-06 17:39:07.536666
|
|
|
Klofelin
Сообщений: 68
Оценки: 0
Присоединился: 2010-09-03 20:58:52.116666
|
А ты не то передаешь в качестве аргумента. Надо так:
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
int main()
{
HWND hWnd;
DWORD threadId;
HKL hkl;
hWnd=FindWindow("Notepad", NULL);
threadId = GetWindowThreadProcessId(hWnd, NULL);
hkl = GetKeyboardLayout(threadId);
cout << LOWORD(hkl) << endl;
_getch();
return 0;
}
И еще обязательно проверяй, находит ли FindWindow нужное окно, по заголовку искать ненадежно.
|
|
|
RE: Не могу узнать раскладку клавиатуры в другом окне c++ - 2011-04-06 19:04:05.986666
|
|
|
Cowboy13
Сообщений: 59
Оценки: 0
Присоединился: 2011-03-06 11:41:58.613333
|
Спасибо. Сижу с телефона,как зайду с компа поставлю оценку.
|
|
|
|
|