P>
Clique aqui para ler todos os artigos desta edição
Criando uma aplicação para troca de arquivos entre o Micro e o PocketPC
É cada vez mais comum querermos carregar músicas e imagens em um dispositivo móvel, e existem diversas opções no mercado, mas imagine usar o seu PocketPC para realizar essa tarefa. Para isso, você terá que ter um meio fácil para copiar os arquivos do micro para o Pocket e vice-versa. Mas como construir essa aplicação?
Felizmente existe uma maneira simples para realizar essa tarefa e pode ser feita através da RAPI do Windows Mobile. Na prática, significa que podemos executar diversas tarefas no PocketPC enquanto ele estiver conectado ao micro através do ActiveSync (ler Nota 1), como: realizar a troca de arquivos, executar programas etc.
Neste artigo criaremos uma aplicação que copiará suas músicas e vídeos do micro para o PocketPC e explicaremos detalhadamente esse processo.
Programa responsável por realizar a conexão entre o micro e o PocketPC. Sempre que você conecta o PocketPC ao micro, o ActiveSync é executado e cria a conexão entre os dois.
Entendendo a RAPI
Remote Application Program Interface é um conjunto de funções existentes no Windows Mobile que possibilita a execução de tarefas remotamente no PocketPC, enquanto ele estiver conectado ao micro através da base ou cabo.
Em nossa aplicação, desenvolveremos uma classe que executará as funções de copiar arquivos do micro para o PocketPC, do PocketPC para o micro, listar arquivos no PocketPC e a execução de programas no PocketPC.
Iniciando o projeto da aplicação
Para iniciarmos, crie um novo projeto Windows Application no Visual Studio 2005 (Figura 1).
Figura 1. Criando um projeto Windows Forms no Visual Studio 2005.
Depois de criar o projeto, abra o Solution Explorer e adicione uma classe (menu Project>Add Class) chamada “CDSPocketTools.cs” (Figura 2).
Figura 2. Adicionando a classe ao projeto.
Adicionando funcionalidade à classe
A classe CDSPocketTools.cs é a principal parte da aplicação, pois conterá todas as chamadas à RAPI. Vamos iniciar a construção da classe adicionando as variáveis e estruturas internas, de acordo com a Listagem 1.
Listagem 1. Definindo as chamadas para a RAPI.
01. using System;
02. using System.Runtime.InteropServices;
03. using System.IO;
04. using System.Threading;
05. using System.Collections;
06.
07. namespace CDSSoftware
08. {
09. public class CDSPocketTools
10. {
11. //controla o processo de execução remota de
12. //programas no PocketPC
13. public struct PROCESS_INFORMATION
14. {
15. long hProcess;
16. long hThread;
17. long dwProcessId;
18. long dwThreadId;
19. };
20.
21. int FILE_ATTRIBUTE_NORMAL = 0x80;
22. //arquivo compartilhado para leitura
23. int FILE_SHARE_READ = 0x00000001;
24. //arquivo compartilhado para escrita
25. int FILE_SHARE_WRITE = 0x00000002;
26. //arquivo genérico para leitura
27. uint GENERIC_READ = 0x80000000;
28. //arquivo genérico para escrita
29. uint GENERIC_WRITE = 0x40000000;
30. //criar novo arquivo
31. int CREATE_NEW = 1;
32. //criar sempre o arquivo
33. int CREATE_ALWAYS = 2;
34. //abrir o arquivo caso ela exista
35. int OPEN_EXISTING = 3;
36. //abrir o arquivo sempre
37. int OPEN_ALWAYS = 4;
38. }
39.}
Continuamos agora com a inserção das chamadas para a RAPI. Para isso, faremos várias declarações usando o método DLLImport do Visual Studio 2005, que permite o acesso às funções pertencentes a RAPI.dll instalada no PocketPC.
O uso de DLLImport significa que estamos acessando um recurso diretamente do sistema operacional, e isso é tratado como código não gerenciado pelo .NET Framework. O código deverá ser incluído na seqüência da Listagem 1 e pode ser visto na Listagem 2.
Listagem 2. Inserindo as chamadas para a RAPI.
...
01. [DllImport("rapi.dll")]
02. public static extern int CeRapiInit();
03.
04. [DllImport("rapi.dll")]
05. public static extern int CeRapiUninit();
06. [DllImport("rapi.dll")]
07. public static extern int CeGetLastError();
...