|
|
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== |