
Ниже я приведу несколько основных функции которые я использовал при разработке ПО для WinCE 6.0.
Узнать имя устройства:
function GetDeviceName: string;
var
aReg:TRegistry;
begin
aReg := TRegistry.Create(KEY_READ);
try
aReg.RootKey := HKEY_LOCAL_MACHINE;
aReg.OpenKey('Ident', False);
if aReg.ValueExists('Name') then
Result := aReg.ReadString('Name')
else
Result := 'GUEST';
finally
aReg.Free;
end;
end;
Показать виртуальную клавиатуру:
const //some of consts already found in Windows SIPF_OFF = $00000000; SIPF_ON = $00000001; SIPF_DOCKED = $00000002; SIPF_LOCKED = $00000004; function SipShowIM(IPStatus:DWORD):Integer; stdcall; external 'coredll.dll' name 'SipShowIM'; begin SipShowIM(SIPF_ON) end;
Данный код у меня не заработал, я использовал следующий код:
procedure KeyBoardShow; var Key:HWND; begin Key:=findwindow(nil,'Input Panel'); if (Key<>0) then ShowWindow(Key,SW_SHOW); end;
Узнать уровень заряда батареи в процентах:
... type TBAT_INFO2 = record ACLineStatus: byte; // состояние внешнего питания BatteryFlag: byte; // состояние основной батареи BatteryLifePercent: byte; // процент зарядки основной батареи BatteryLifeTime: DWord; // время, на которое хватит заряда BatteryFullLifeTime: DWord; // время, на которое хватит полной батареи BackupBatteryFlag: byte; // состояние резервной батареи BackupBatteryLifePercent: byte; // процент заряда резервной батареи BackupBatteryLifeTime: DWord; // время остатка заряда резервной батареи BackupBatteryFullLifeTime: DWord; // полное время резервной батареи //Физические характеристики батареи: BatteryVoltage: Dword; // напряжение батреи (mV) BatteryCurrent: DWord; // сила тока батареи (mA) BatteryAverageCurrent: DWord; // средний ток BatteryAverageInterval: DWord; // интервал изменения тока BatterymAHourConsumed: DWord; // емкость батареи в mA/h BatteryTemperature: DWord; // температура батареи BackupBatteryVoltage: DWord; // емкость резервной батареи BatteryChemistry: Byte; // тип батареи (LION, NiCD, NIMN… ) end; ... var batinfo: TBAT_INFO2; function GetPower(var pOutput; DwLen: DWord; fUpdate: boolean ): WordBool; stdcall; external 'coredll.dll' name 'GetSystemPowerStatusEx2'; function GetBat:Byte; ...
function GetBat: byte; begin GetPower(batinfo,SizeOf(batinfo), True); GetBat:=batinfo.BatteryLifePercent; end;
Так же работал с Hook на клавиатуру. Для этого не требуется создавать Dll библиотеку.
... var PrevWndProc: WNDPROC; function WndCallback(Ahwnd: HWND; uMsg: UINT; wParam: WParam; lParam: LParam):LRESULT; stdcall;
function WndCallback(Ahwnd: HWND; uMsg: UINT; wParam: WParam; lParam: LParam):LRESULT; stdcall;
begin
if (uMsg=WM_HOTKEY) then
begin
Exit; //Здесь пишем что требуется сделать если была
//нажата та клавиша которую требуется перехватить
//в данном случае мы аннулируем действие клавиши
end;
result:=CallWindowProc(PrevWndProc,Ahwnd, uMsg, WParam, LParam);
end;
procedure TForm1.FormCreate(Sender: TObject); begin PrevWndProc:=Windows.WNDPROC(SetWindowLong(Self.Handle,GWL_WNDPROC,PtrInt(@WndCallback))); //Ниже объявляем какие клавиши требуется перехватить RegisterHotKey(Self.Handle,CTRLESC,MOD_CONTROL,VK_ESCAPE); //CTRL+ESC RegisterHotKey(Self.Handle,CTRLL,MOD_CONTROL,76); //CTRL+L RegisterHotKey(Self.Handle,CTRLO,MOD_CONTROL,79); //CTRL+O RegisterHotKey(Self.Handle,CTRLT,MOD_CONTROL,84); //CTRL+T ... end;
Это основные функция которые я использовал при разработке приложений на WinCE 6.0 для Motorola Symbol MC9190-g

Несколько функций при разработке ПО на WinCE обновлено: 31 марта, 2016 автором:
