Несколько функций при разработке ПО на WinCE

Windows_CE_logo

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

1

 

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *