Difference between revisions of "WinCE Programming Tips"

From Free Pascal wiki
Jump to navigationJump to search
 
(New page: This page is a under construction reference to in the development for the Windows CE platform, covering topics specific to it. ==Using the Telephone API (TAPI)== TAPI reference pages: h...)
Line 1: Line 1:
 
This page is a under construction reference to in the development for the Windows CE platform, covering topics specific to it.
 
This page is a under construction reference to in the development for the Windows CE platform, covering topics specific to it.
__TOC__
 
 
== TIPS / FAQ ==
 
=== Get Device ID ===
 
Get and ID of your device useful for protect your application.
 
This work only on Windows Mobile 5.0 and Windows CE 5.1
 
<delphi>
 
 
function GetDeviceUniqueID(AppData:LPCWSTR; cbApplictionData:Integer; dwDeviceIDVersion:Integer; var deviceIDOuput; var pcbDeviceIDOutput:DWORD):Integer; external 'coredll.dll' name 'GetDeviceUniqueID';
 
 
function GetDeviceID: string;
 
var
 
  AppData: array[0..19] of WideChar;
 
  DeviceID : array[0..19] of Byte;
 
  Count: DWORD;
 
  s: string;
 
  Res, i:Integer;
 
begin
 
  //not sure about Unicode
 
  AppData := Utf8Decode('MY_SIG');//any string you like
 
  Count := SizeOf(DeviceID);
 
  FillChar(DeviceID, Count, #0);
 
  Res := GetDeviceUniqueID(AppData, SizeOF(AppData), 1, DeviceID, Count);
 
  if Res = 0 then
 
  begin
 
    Result := '';
 
    for i := 0 to Count -1 do
 
    begin
 
      if (i > 0) and ((i mod 2) = 0) then
 
        Result := Result + '-'; //add space make the string wrap in label
 
      Result := Result + IntToHex(DeviceID[i], 2);
 
    end;
 
  end
 
  else
 
    Result := '';//error accord
 
//  you can MD5 it with your string
 
//  Result := MD5Print(MD5Buffer(DeviceID, Count));
 
end;
 
</delphi>
 
Reference pages:
 
http://msdn2.microsoft.com/en-us/library/ms893522.aspx
 
http://peterfoot.net/RetrieveIMEIThroughTAPI.aspx
 
http://blogs.msdn.com/jehance/archive/2004/07/12/181067.aspx
 
 
=== Get Device Name ===
 
Easy to get it from registry
 
 
<delphi>
 
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;
 
</delphi>
 
 
=== Show/Hide SIP Panel ===
 
SIP: Software Input Panel button, it is a keyboard come with WinCE for touch screen devices.
 
 
<delphi>
 
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;
 
 
</delphi>
 
 
 
=== Wakeup Device/ Power On ===
 
If you like to make alarm application this function make your device power on, you need also make some sounds with it.
 
 
<delphi>
 
function SetSystemPowerState(psState: PWideChar; StateFlags: DWORD; Options : DWORD):DWORD; stdcall; external 'coredll.dll' name 'SetSystemPowerState';
 
 
 
  SetSystemPowerState(nil, POWER_STATE_ON, 0);
 
  Application.BringToFront;
 
  ShowWindow(Handle, SW_SHOW);
 
</delphi>
 
 
{{Other Interfaces}}
 
  
 
==Using the Telephone API (TAPI)==
 
==Using the Telephone API (TAPI)==
Line 111: Line 12:
  
 
Please write me
 
Please write me
 +
 +
==See Also==

Revision as of 13:17, 21 May 2008

This page is a under construction reference to in the development for the Windows CE platform, covering topics specific to it.

Using the Telephone API (TAPI)

TAPI reference pages:

http://msdn.microsoft.com/en-us/library/aa922068.aspx

http://www.developer.com/ws/pc/article.php/3496296

Sendings SMSes

Please write me

See Also