2009-11-13 87 views
2

需要使用C#或VB.net使鍵盤的LED(大寫鎖定/數字鎖定或滾動鎖定LED)閃爍。 (有或沒有使用interop很好)如何使用C#或VB.Net閃爍鍵盤的LED

+0

你的意思是<眨眼種類= 「帽」>不這樣做? :D – Jason 2009-11-13 00:34:31

+2

我正在回憶Cryptonomicon。你不會被困在菲利諾監獄嗎? – cletus 2009-11-13 00:36:04

回答

10

This Microsoft Support article似乎是你在找什麼。它說明了如何切換的Num Lock,Caps Lock和滾動鎖定鍵在Visual Basic 6

+0

+1:很好找... – Jason 2009-11-13 00:45:14

+1

看起來它只是win32調用,所以你可以用PInvoke來管理它。 – 2009-11-13 00:58:59

+0

這是關閉我的答案。謝謝你。 – Andy 2009-11-13 06:34:52

1

這裏的The C方式

#include <windows.h> 
#define err if (GetLastError() != 0) return GetLastError(); 

extern "C" __declspec(dllexport) int __stdcall TurnLed(int state) 
{ 
    DWORD tmp = 4; 
    DWORD buf = (2*GetKeyState(VK_NUMLOCK) + 4*GetKeyState(VK_CAPITAL) + state)<<16; 
    DefineDosDevice(DDD_RAW_TARGET_PATH, "Kbd", "\\Device\\KeyboardClass1"); err 
    HANDLE kbd = CreateFile("\\\\.\\Kbd", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); err 
    DeviceIoControl(kbd, CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0002, METHOD_BUFFERED, FILE_ANY_ACCESS), &buf, sizeof(buf), 0, 0, &tmp, 0); err 
    DefineDosDevice(DDD_REMOVE_DEFINITION, "Kbd", 0); err 
    CloseHandle(kbd); err 
    return 0; 
} 
+0

您是否知道在「\\。\ Kbd」上執行ioctl需要什麼權限?這是否可以從非管理員進程完成?我沒有Windows機器來測試它。 – 2014-04-15 19:19:22