Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.23;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-73253
Novice 2
2002-05-09 17:28
2002.05.23
SpeedButton и всплывающее меню


4-73446
SuperIgor
2002-03-19 05:10
2002.05.23
Как свернуть все окна???


14-73408
Blackweber
2002-04-11 23:23
2002.05.23
Финансовые пирамиды


4-73463
nvj
2002-03-24 23:44
2002.05.23
Цвет Captiona окна


3-73070
Beer
2002-04-28 11:15
2002.05.23
Передача параметров в хранимую процедуру.