フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: Delphi アプリケーションで ActiveSync (Windows Mobile 同期センター) 中の Windows CE / Mobile 機へファイルをコピーするには?
DEKO
管理者
投稿数: 2629
Delphi アプリケーションで ActiveSync (Windows Mobile 同期センター) 中の Windows CE / Mobile 機へファイルをコピーするには?
on: 2013/04/06 11:57 Sat

Delphi で、ActiveSync 中の Windows CE / Mobile 機へファイルを転送するには、RAPI を使います。CodeCentral に RAPI の定義ユニットがアップされていますので、これを使うのが簡単でいいでしょう。

[Transfer files from/to Pocket PC through RAPI]
http://cc.embarcadero.com/Item/22950

必要なのは、アーカイブ中の RAPI.pas と RAPI2.pas だけです。コメ欄にもありますが、ちょっとした RAPI.pas の修正が必要です。

1.CeRapiUnInit を CeRapiUninit に全置換する (大文字/小文字の違いです)。

2.RapiLoaded() の実装部に 1 行追加。

function RapiLoaded : BOOL;
{-Assure that TAPI is loaded and globals are set}
begin
...
@mRapiFreeBuffer := GetProcAddress(RapiModule, 'RapiFreeBuffer');
@mCeRapiInitEx := GetProcAddress(RapiModule, 'RapiInitEx'); // <- 追加

 
3.AdoCELoaded() の実装部を 1 行変更。

  {Load ADOCE}
//AdoCEModule := LoadLibrary('C: \Archivos de Programa\Microsoft ActiveSync\adofiltr.dll');
AdoCEModule := LoadLibrary('C:\Program Files\Microsoft ActiveSync\adofiltr.dll'); // <- 変更

 
Unicode 版 Delphi で使うためには以下の修正も必要です。

  ...

//added 10/16/2000 - Terence Goggin; terencegoggin@hotmail.com
//TDesktopToDevice = function(DesktopLocation, TableList: String; Sync: BOOL; Overwrite: Integer; DeviceLocation: String): Longint stdcall;
TDesktopToDevice = function(DesktopLocation, TableList: AnsiString; Sync: BOOL; Overwrite: Integer; DeviceLocation: AnsiString): Longint stdcall;
//added 01/19/2003 - Octavio Hernandez; dotnet@danysoft.com
//TDeviceToDesktop = function(DesktopLocation, TableList: String; Sync: BOOL; Overwrite: Integer; DeviceLocation: String): Longint stdcall;
TDeviceToDesktop = function(DesktopLocation, TableList: AnsiString; Sync: BOOL; Overwrite: Integer; DeviceLocation: AnsiString): Longint stdcall;

...

//added 10/16/2000 - Terence Goggin; terencegoggin@hotmail.com
//function DesktopToDevice(DesktopLocation, TableList: String; Sync: BOOL; Overwrite: Integer; DeviceLocation: String): Longint;
function DesktopToDevice(DesktopLocation, TableList: AnsiString; Sync: BOOL; Overwrite: Integer; DeviceLocation: AnsiString): Longint;
//added 01/19/2003 - Octavio Hernandez
//function DeviceToDesktop(DesktopLocation, TableList: String; Sync: BOOL; Overwrite: Integer; DeviceLocation: String): Longint;
function DeviceToDesktop(DesktopLocation, TableList: AnsiString; Sync: BOOL; Overwrite: Integer; DeviceLocation: AnsiString): Longint;

// (実装部も同様)

 
String を AnsiString に変更しているだけです…とは言えこの部分は変更しなくても構いません。Windows Mobile だと ADOCE 関連はデフォルトでは動作しませんので、MDB の変換を行うこれら 2 つの関数を使う事はまずないと思われるからです (どのみち adofiltr.dll が "存在しなくて/最近の WM に対応していなくて" 使えないと思いますが)。

実際のファイルコピーの方法はデモプログラムを見れば一目瞭然だと思いますので省略します。

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.027 sec.