Управление светодиодами на ноутбуке ASUS L3C
24 октября 2005 года
На ноутбуках ASUS, серии L3 есть четыре светодиода.
- Зеленый - питание или спящий режим;
- Условно красный (скорее оранжевый) - зарядка;
- Синий - новая почта;
- Условно желтый (скорее оранжевый) - WIFI.
Первый два работают всегда и у всех. Скорее всего, программно с ними вообще нельзя ничего сделать. Я не смог подобрать номер порта для них.
Синий светодиод работает только если установлена специальная программа, которую предоставляет производитель, и только при использовании Outlook.
Желтый работает, если есть WI-FI. В моей модели его нет.
Негоже терять такие замечательные сигнализаторы, подумал я, и прикрутил их к The Bat! (особенно с учетом того, что их видно даже при закрытой крышке).

Ниже приведен код консольной программки, написанной на Borland C++ Builder.
//--------------------------------------------------------------------------- #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused #include <windows.h> #include <shlobj.h> #include <stdio.h> #include <windows.h> #include <shlobj.h> HANDLE ATKACPIhandle; int CtrlACPI(int code, int hasArg, int arg) { long bytes = 0; long inbuf[5]; struct cmbuf { short cmds[2]; long cm2; } cbuf; long outbuf[192]; int ret; cbuf.cmds[0] = 0; cbuf.cmds[1] = 4; cbuf.cm2 = arg; inbuf[0] = 2; inbuf[1] = code; inbuf[2] = hasArg; inbuf[3] = 8 * hasArg; inbuf[4] = (long)&cbuf; ret = DeviceIoControl(ATKACPIhandle, 0x222404, inbuf, sizeof(inbuf), outbuf, sizeof(outbuf), (unsigned long*)&bytes, NULL); return ret; } WNDCLASS wndclass; LRESULT CALLBACK wndproc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { int ret; switch(uMsg) { case WM_DESTROY: PostQuitMessage(0); ret = 0; break; default: ret = DefWindowProc(hwnd,uMsg,wParam,lParam); break; } return ret; } int main(HINSTANCE hInstance, HINSTANCE hPrevInst, PSTR cmdLine, int iCmdShow) { FILETIME stamp = {0}; long old = -1, count; HWND hwnd; HKEY UnreadMailKey; HANDLE KeyEvent; wndclass.hInstance = hInstance; wndclass.lpszClassName = "hyc"; wndclass.lpfnWndProc = wndproc; do { if (RegisterClass(&wndclass) == 0 ) break; hwnd = CreateWindow("hyc", "hyc", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, wndclass.hInstance, NULL); if (!hwnd) break; ATKACPIhandle = CreateFile("\\\\.\\ATKACPI", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if (!ATKACPIhandle) break; for (;;) { CtrlACPI(0x44454c57, 1, 1); CtrlACPI(0x44454c4d, 1, 1); Sleep(100); CtrlACPI(0x44454c57, 1, 0); CtrlACPI(0x44454c4d, 1, 0); Sleep(100); } } while(0); return(0); }
Программка управляется из командной строки:
asusled.exe mail on - включить синий светодиод asusled.exe mail off - выключить синий светодиод asusled.exe wifi on - включить желтый светодиод asusled.exe wifi off - выключить желтый светодиод
Скачать рабочую версию [exe, 52Kb]
В TheBat! необходимо настроить "сортировщик писем" так, чтобы при приходе новой почты запускалась программа "asusled.exe mail on", и при прочтении писем - "asusled.exe mail off".
Два разных светодиода я использую для двух разных почтовых ящиков.
Решение для почтового клиента Mozilla (FireBird) можно найти здесь. [zip, 6Kb]
Оставить комментарий
Комментарии




Сенкс автору!


Неа, нет у меня их.



