Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];

Вниз

Прикол так сказать....   Найти похожие ветки 

 
Nigth   (2002-02-23 16:50) [0]

Мастера, слушайте, хочу сделать этакую прогу типа светофора на клаве, короче надо программно генерировать нажетие num lock, caps lock, scroll lock... Генерировать так чтобы при нажатии на button1 - допустим, начинали одна к другой светиться лампочки на клаве... другой кнопкой отключался светофор... Короче чтобы они не по очереди светелись а от генерации 0 1 2... 2 1 0... 2 0 1... 1 0 2... примерно так... помогите кодом...


 
Sasha9   (2002-02-23 18:48) [1]

var ks:TKetState;
................
getkeyboardstate(ks);
ks[vk_numlock {или vk_scroll или vk_capital}]:=1;
setkeyboardstate(ks);


 
Sasha9   (2002-02-23 18:49) [2]

var ks:TKeyState;
................
getkeyboardstate(ks);
ks[vk_numlock {или vk_scroll или vk_capital}]:=1;
setkeyboardstate(ks);


 
gluka   (2002-02-24 04:27) [3]

Да! Только под Вынь2к и ХР неворкает...


 
VuDZ   (2002-02-24 11:34) [4]

для NT:

// FlashKeyboardLight
//
// Flashes the keyboard indicator, specified by LightFlag, one time,
// at the rate indicated by Duration. All lights are left in their
// previous states when this call returns.
//
// Possible LightFlags:
// KEYBOARD_CAPS_LOCK_ON
// KEYBOARD_NUM_LOCK_ON
// KEYBOARD_SCROLL_LOCK_ON

int DECLSPEC FlashKeyboardLight(HANDLE hKbdDev, UINT LedFlag, int Duration)
{
KEYBOARD_INDICATOR_PARAMETERS InputBuffer; // Input buffer for DeviceIoControl
KEYBOARD_INDICATOR_PARAMETERS OutputBuffer; // Output buffer for DeviceIoControl
UINT LedFlagsMask;
BOOL Toggle;
ULONG DataLength = sizeof(KEYBOARD_INDICATOR_PARAMETERS);
ULONG ReturnedLength; // Number of bytes returned in output buffer
int i;

InputBuffer.UnitId = 0;
OutputBuffer.UnitId = 0;

// Preserve current indicators" state
//
if (!DeviceIoControl(hKbdDev, IOCTL_KEYBOARD_QUERY_INDICATORS,
&InputBuffer, DataLength,
&OutputBuffer, DataLength,
&ReturnedLength, NULL))
return GetLastError();

// Mask bit for light to be manipulated
//
LedFlagsMask = (OutputBuffer.LedFlags & (~LedFlag));

// Set toggle variable to reflect current state.
//
Toggle = (OutputBuffer.LedFlags & LedFlag);

for (i = 0; i < 2; i++)
{
Toggle ^= 1;
InputBuffer.LedFlags = (LedFlagsMask | (LedFlag * Toggle));

if (!DeviceIoControl(hKbdDev, IOCTL_KEYBOARD_SET_INDICATORS,
&InputBuffer, DataLength,
NULL, 0, &ReturnedLength, NULL))
return GetLastError();

Sleep(Duration);
}
return 0;
}



HANDLE DECLSPEC OpenKeyboardDevice(int *ErrorNumber)
{
HANDLE hndKbdDev;
int *LocalErrorNumber;
int Dummy;

if (ErrorNumber == NULL)
LocalErrorNumber = &Dummy;
else
LocalErrorNumber = ErrorNumber;

*LocalErrorNumber = 0;

if (!DefineDosDevice (DDD_RAW_TARGET_PATH, "Kbd",
"\\Device\\KeyboardClass0"))
{
*LocalErrorNumber = GetLastError();
return INVALID_HANDLE_VALUE;
}

hndKbdDev = CreateFile("\\\\.\\Kbd", GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, 0, NULL);

if (hndKbdDev == INVALID_HANDLE_VALUE)
*LocalErrorNumber = GetLastError();

return hndKbdDev;
}





int DECLSPEC CloseKeyboardDevice(HANDLE hndKbdDev)
{
int e = 0;

if (!DefineDosDevice (DDD_REMOVE_DEFINITION, "Kbd", NULL))
e = GetLastError();

if (!CloseHandle(hndKbdDev))
e = GetLastError();

return e;
}


// Thread procedure to make a light flash continuously.
//
DWORD WINAPI FlashKeyboardLightThd(LPVOID lpv)
{
LPFLASH_KBD_THD_INIT pInit = (LPFLASH_KBD_THD_INIT)lpv;
FLASH_KBD_THD_INIT Init = *pInit;
HANDLE hndKbdDev;
HANDLE heventCancel = OpenEvent(EVENT_ALL_ACCESS, FALSE, Init.EventName);

if (heventCancel == NULL)
ExitThread(-1);

hndKbdDev = OpenKeyboardDevice(NULL);
if (hndKbdDev == INVALID_HANDLE_VALUE)
{
CloseHandle(heventCancel);
ExitThread(-1);
}

for (;;)
{
FlashKeyboardLight(hndKbdDev, Init.LightFlag, Init.Duration);

if (WaitForSingleObject(heventCancel, Init.Duration) != WAIT_TIMEOUT)
break;
}

Sleep(Init.Duration);

CloseHandle(heventCancel);
CloseKeyboardDevice(hndKbdDev);

ExitThread(0);
return 0;
}


// Builds structure and creates thread, to flash light continuously
//
HANDLE DECLSPEC FlashKeyboardLightInThread(UINT LightFlag, int Duration, LPSTR EventName)
{
DWORD ThreadId;
static FLASH_KBD_THD_INIT FlashInit;

FlashInit.LightFlag = LightFlag;
FlashInit.Duration = Duration;
lstrcpyn(FlashInit.EventName, EventName, 128);

return CreateThread(NULL, 0, FlashKeyboardLightThd, (LPVOID)&FlashInit, 0, &ThreadId);

}


 
Poirot   (2002-02-24 12:44) [5]

Люди с шуфанегов попадали... KIS
keybd_event( VKeyParam,$45,KEYEVENTF_EXTENDEDKEY, 0);
keybd_event( VKeyParam,$45,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);

Но этто делает состояние клавиши обратнное его нынешнему...
Мугу кинуть свой компонент... мыль



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
3-73053
CrazzyWizzard
2002-04-25 07:24
2002.05.23
Как узнать, сколько записей выбрал SELECT в Delphi?


3-73080
kimblch
2002-04-29 03:24
2002.05.23
ГЛЮК с LookupFields ????


1-73125
greenrul
2002-05-12 16:49
2002.05.23
Компонента Архивации


1-73267
Nelud
2002-05-10 22:58
2002.05.23
Господа ! Почему в консольном приложении FileExists всегда F


1-73179
-Jack-
2002-05-10 16:51
2002.05.23
Правка файла в HEX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский