Console & GetKeyboardLayout

From
Denis Patrakov (2:5020/366.17)
To
Vadim Yegorov
Date
2001-04-05T10:04:11Z
Area
SU.WINDOWS.NT.PROG
             _/*··─·──═*/_<_*░▒▓█*_ *Хаюшки, Vadim!* _*█▓▒░*_>_/*═──·-··*/_

04 апреля 2001 в 21:38, Vadim Yegorov => All:

 VY> Как в NT в консолной программе определить текущую раскладку клавиатуры?
>>·∙-─══ Cut ══─-∙·<<
= Надерганные исходники (2:5020/366.17) === THE.SAFE.SOURCE (FAR.DEVELOPMENT) =
 Msg  : 67 из 77
 От   : Jouri Mamaev                        2:5080/80.66    02 Янв 01 20:32
 Кому : All                                                 04 Янв 01 16:08
 Тема : Текущая раскладка клавы под НТ для консоли
===============================================================================
Hello All!

Кому сабж было надо ?
Тут у меня климакс случился и я, от нечего делать, покопался.

Накопал:
---------------------------------------------------------------
#include <all_lib.h>
#pragma hdrstop

#define PSZ (0x48/sizeof(DWORD))
void PData( LPDWORD d )
  {  int n;
    for ( n = 6; n < PSZ; n++ ) printf( "%08X ",d[n] );
    printf( "\r" );
}

void main( void )
  {  LPDWORD data;
     HANDLE  fm = CreateFileMapping(
(HANDLE)-1,NULL,PAGE_READONLY,0,PSZ,"InternatSHData" );

     if ( !fm ) Abort( "!fm" );
     if ( GetLastError() != ERROR_ALREADY_EXISTS ) { CloseHandle(fm);
Abort("!exist"); }

     data = (LPDWORD)MapViewOfFile( fm,FILE_MAP_READ,0,0,0 );
     if ( !data ) { CloseHandle(fm); Abort( "!map" ); }

     while( !kbhit() ) {
       PData( data );
       Sleep(300);
     }
     while(kbhit()) getch();

     UnmapViewOfFile( data );
     CloseHandle( fm );
}
---------------------------------------------------------------
(В этой структуре некоторе количество интересной(?) инфы есть, но искомое там
тоже лежит. В 16-м дворде. Ну да сами посмотрите, когда тест запустите)

Данные взяты из indicdll.dll.
Это, конечно, "грязный хак" и "кю", но мне очень не хотелось полностью
расковыривать что и зачем делает эта длла, а потом писать хуки "по аналогии",
[_...skip'нуто..._]
>>·∙-─══ Cut ══─-∙·<<

   [Team LMD]  [Team 3Dfx]  [Russian Team MIREA]    _/*Здесь был я*/_, *Denis*.

... Водки найдy?  тьфy, т.е. What can I do?
--- GoldED+/W32 1.1.4.7
 * Origin: Living in interesting times (2:5020/366.17)