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)