![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
Delphi programs in API.
На английском. Очень подробно всё описано, плюс есть исходные коды готовых юнитов. Например SmallUtil, в котором есть все частоиспользуемые подпрограммы, и который в размере меньше, чем SysUtils (автор так утверждает - я не проверял). |
![]() ![]() |
-=CHE@TER=- |
![]()
Сообщение
#2
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
Чтобы долго не писать чего да как - приведу лог чата
Код программы: CODE program gsc3fgps; {$IFNDEF DCC32HACK}uses Windows;{$ENDIF} // http://mikhail.krivyy.com/2004/07/28/asus-l3c-led/ // http://mikhail.krivyy.com/wp/wp-content/uploads/2006/10/asusled.cpp // http://www.scintilla.utwente.nl/~timl/devicepower/v1.1/devicepower.c const ATKACPI_IOCTL_CODE = $222404; // ioctl command codes DPWR = $52575044; // Device Power list QDEV = $56454451; // Query Device SDON = $4E4F4453; // Set Device On SDOF = $464F4453; // Set Device Off type ioctl_arg = packed record dummy: word; arg_bytes: word; value: longword; end; pioctl_arg = ^ioctl_arg; ioctl_cmd = packed record ctype: longword; cmd_code: longword; has_arg: longword; arg_bytes: longword; arg: pioctl_arg; end; function CtrlACPI(ATKACPIhandle: THandle; code, hasArg, arg: longword): longbool; var iarg: ioctl_arg; icmd: ioctl_cmd; bout: longword; buff: array[0..191] of longword; begin bout := 0; iarg.dummy := 0; iarg.arg_bytes := 4; iarg.value := 2; icmd.ctype := hasArg; icmd.cmd_code := code; icmd.has_arg := arg; icmd.arg_bytes := 8 * arg; icmd.arg := pioctl_arg(longword(@iarg) * arg); result := DeviceIoControl(ATKACPIhandle, ATKACPI_IOCTL_CODE, @icmd, sizeof(icmd), @buff[0], sizeof(buff), bout, nil); end; // enable gsc3f GPS var ATKACPIhandle: THandle; begin ATKACPIhandle := CreateFile('\\.\ATKACPI', GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); if ATKACPIhandle <> INVALID_HANDLE_VALUE then begin CtrlACPI(ATKACPIhandle, DPWR, 1, 0); CtrlACPI(ATKACPIhandle, QDEV, 2, 1); if ParamCount <> 0 then CtrlACPI(ATKACPIhandle, SDOF, 2, 1) // OFF else CtrlACPI(ATKACPIhandle, SDON, 2, 1); // ON CloseHandle(ATKACPIhandle); end; end. Спасибо сказали:
|
![]() ![]() |
Упрощённая версия | Сейчас: 30th April 2025 - 21:18 |