Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
Управление светодиодами на ноутбуке ASUS L3CНа ноутбуках ASUS, серии L3 есть четыре светодиода.
Первый два работают всегда и у всех. Скорее всего, программно с ними вообще нельзя ничего сделать. Я не смог подобрать номер порта для них. Синий светодиод работает только если установлена специальная программа, которую предоставляет производитель, и только при использовании 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] |
Форум Программиста
Новости Обзоры Магазин Программиста Каталог ссылок Поиск Добавить файл Обратная связь Рейтинги
|