Ниже я приведу несколько основных функции которые я использовал при разработке ПО для 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 автором: