Page 1 of 1
Borrar / copiar archivos en una PDA desde PC
Posted: Sat Jan 05, 2008 7:01 pm
by Rafael Clemente
Tengo una PDA conectada por USB a mi PC. Tengo instalado Active Sync y puedo transferir archivos desde el PC a la PDA y viceversa simplemente arrastrandolos de una ventana a otra. Hasta aquí todo bien.
Alguien sabe si hay alguna forma de hacer lo mismo desde programa con FWH / FWPPC?. Por ejemplo: En mi PC ejecutar un programa FWH que en un momento dado haga FErase("Mi PDA\Carpeta\Archivo.txt")
O bien Copy File ("C:\Mi archivo...", "PDA\Mi archivo...")
Gracias
Rafael
Posted: Sun Jan 06, 2008 7:28 am
by Antonio Linares
Rafael,
Mira a ver si localizas un servidor "SSH" para Windows Mobile:
http://es.wikipedia.org/wiki/Secure_Shell
Estos dias lo estoy usando para el iPhone, y enamora la potencia que el SSH ofrece
(scp, sftp, etc.) Es una herramienta del mundo Unix
Te permitirá hacer eso que quieres y muchísimas más cosas
Posted: Sun Jan 06, 2008 12:35 pm
by Rafael Clemente
Antonio,
¿Como éste, por ejemplo?
http://www.filecluster.com/Internet/Ftp ... et-PC.html
Supongo que he de descargarlo e instalarlo en la PDA. ¿Necesito instalar algo así también en el PC? Lo que quiero es poder borrar ficheros en la PDA mediante un comando ***DESDE EL PC***; no al revés, que es lo que parece que permiten todos los SSH que he visto para Pocket
Gracias
Rafael
Posted: Sun Jan 06, 2008 4:59 pm
by Antonio Linares
Rafael,
Necesitas SSH en ambos. En el Pocket PC como servidor y en el PC como cliente.
Posted: Mon Jan 07, 2008 5:13 pm
by Rafael Clemente
Antonio,
Me ha bajado un par de SSH servers para Pocket PC (freeware y de pago). No he podido instalar ninguno de los dos: "xxxx no es una aplicación de Pocket PC válida" en _.
Lo he probado en dos PDA: iPAQ antiguo (2001) con Pocket PC v3.0 y Acer N35 v 4.20, (de 2003)
Seguiré buscado...
Gracias y un saludo,
Rafael
Posted: Mon Jan 07, 2008 6:19 pm
by tsales
Rafael
Lo puedes hacer utilizando las funciones RAPI.
Prueba con esto.
FUNCTION FErasePPc( cFile, lMsg )
LOCAL lVRet := RAPI_BORRAFICHERO_PDA( AnsiToWide(cFile), IF(lMsg=NIL,.F.,lMsg) )
IF lMsg
IF lVRet
MSGINFO(cFile + " Fichero Borrado correctante")
ELSE
MSGINFO(" El Fichero " + cFile + " NO ha podido ser Borrado")
ENDIF
ENDIF
RETURN lVRet
HB_FUNC( RAPI_BORRAFICHERO_PDA )
{
typedef HRESULT (WINAPI * _CeRapiInitEx_) (RAPIINIT *) ;
typedef HRESULT (WINAPI * _CeRapiUninit_) (void);
typedef BOOL (WINAPI * _CeDeleteFile_) (LPCWSTR);
typedef DWORD (WINAPI * _CeGetLastError_) (void);
BOOL lMuestraErrores = FALSE ;
HINSTANCE lRapi;
_CeRapiInitEx_ CeRapiInitEx;
_CeRapiUninit_ CeRapiUninit;
_CeDeleteFile_ CeDeleteFile;
_CeGetLastError_ CeGetLastError;
HRESULT lConnected;
RAPIINIT ri;
BOOL lResultado;
// Cargamos la librería
lRapi = LoadLibrary ( "Rapi.dll" );
if ( lRapi == NULL ) {
MessageBox(NULL,"Error:no cargada librería","Rapi",MB_OK);
hb_retl(FALSE);
return ;
}
// Cargamos las funciones
CeRapiInitEx = (_CeRapiInitEx_) GetProcAddress((HMODULE) lRapi,"CeRapiInitEx");
CeRapiUninit = (_CeRapiUninit_) GetProcAddress((HMODULE) lRapi,"CeRapiUninit");
CeDeleteFile = (_CeDeleteFile_) GetProcAddress((HMODULE) lRapi,"CeDeleteFile");
CeGetLastError = (_CeGetLastError_) GetProcAddress((HMODULE) lRapi,"CeGetLastError");
// Conectamos
ri.cbSize = sizeof(RAPIINIT);
ri.heRapiInit = NULL;
ri.hrRapiInit = NULL;
if(FAILED(CeRapiInitEx(&ri))) {
FreeLibrary(lRapi);
hb_retl( FALSE );
return;
}
if(WaitForSingleObject(ri.heRapiInit, 3000) != WAIT_OBJECT_0) {
CeRapiUninit();
FreeLibrary(lRapi);
hb_retl( FALSE ) ;
return;
}
lResultado = CeDeleteFile( (LPCWSTR)hb_parc(1) );
// Control de Errores
if( !lResultado ){
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
CeGetLastError(),
0, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Mostramos el error (si así lo piden)
lMuestraErrores = (ISLOG(2) ? (BOOL) hb_parl(2) : lMuestraErrores);
if( lMuestraErrores ) MessageBox( NULL, (LPTSTR)lpMsgBuf, L"Error", MB_OK | MB_ICONINFORMATION );
// Liberamos memoria
LocalFree( lpMsgBuf );
}
// Desconectamos
CeRapiUninit();
// Descargamos librería
FreeLibrary(lRapi);
hb_retl( lResultado );
}
Saludos
Posted: Mon Jan 07, 2008 8:11 pm
by Rafael Clemente
Toni,
Muchas gracias por tu ejemplo, per no he podido echarlo a andar. Probablemente es porque mis conocimientos de C son muy escasos, por no decir inexistentes.
He incluído todo tu listado entre #pragma BEGIN DUMP y #pragma ENDDUMP. Al compilar me da un montón de errores. Los primeros:
- Error RMAKE/R2001 Exit 1: 'c:\bcc55\bin\bcc32 -M -c -Ic:\harbour\include TEST.C
OM.C'
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
TEST.C:
Error E2147 TEST.PRG 112: 'WINAPI' cannot start a parameter declaration in fu
nction HB_FUN_RAPI_BORRAFICHERO_PDA
Error E2147 TEST.PRG 112: 'RAPIINIT' cannot start a parameter declaration in
function HB_FUN_RAPI_BORRAFICHERO_PDA
etc...
Probablemente me falta algún include o algo más. (Utilizo FWH 2.6 + Harbour) Alguna sugerencia?
Muchas gracias
Rafael
Posted: Tue Jan 08, 2008 7:19 am
by tsales
Rafael
Incluye esto:
#include "windows.h"
#include "hbapi.h"
#include <hbapifs.h>
#include "rapi.h"
#include <wininet.h>
#include "winerror.h"
#define BUFFER_SIZE 8192
Saludos
Posted: Tue Jan 08, 2008 8:08 am
by Rafael Clemente
Toni:
Formidable!!!. Con los includes funcionó a la primera. Si no es mucho abusar, tienes alguna función más que permita copiar archivos desde el PC a la PDA y viceversa?
Un montón de gracias
Rafael
Posted: Tue Jan 08, 2008 9:41 am
by tsales
RAfael
Si te bajas el PELLESC en la carpeta BIN existen uno fichero CECOPY.exe que te ofrecen esta posibilidad.
Saludos
Posted: Tue Jan 08, 2008 11:02 am
by Rafael Clemente
Toni:
He encontrado CeCopy.exe en los Power Toys de Microsoft, aquí:
http://www.microsoft.com/downloads/deta ... aylang=en
Va perfecto y hace exactamente lo que yo quería. Además, los Power Toys incluyen un par de aplicaciones que te permiten ejecutar programas de la PDA en el PC y unas cuantas cosas más. Muy útil.
Gracias por apuntarme el camino. Un saludo,
Rafael
Posted: Tue Jan 08, 2008 11:40 am
by pymsoft
Visto que estamos en el tema...
Yo para copiar archivos desde el pocket a la pc lo hago en este modo:
COPY FILE miarchivo.dbf TO \\server\c\carpeta\miarchivo.dbf
todo esto si estoy conectado con wi-fi...
En vez, si estoy conectado con cable, con activesync no funciona... alguna idea de como copiar desde el pocket al pc de programa?, o como ver la unidad del pc al cual estamos conectado?, porque cuando conectamos con activesync se crea una direccion IP sea para el pc que para el pocket...
Saludos.
Posted: Tue Jan 08, 2008 11:54 am
by Rafael Clemente
Pedro:
Yo acabo de descubrir CECOPY.EXE (lo puedes bajar del link que he puesto más arriba) que me funciona de maravilla para copiar desde/hacia la PDA:
Code: Select all
WaitRun('CECOPY Test.txt "dev:\SD-MMC CARD\MIFOLDER"', .T. )
WaitRun('CECOPY "dev:\SD-MMC CARD\MIFOLDER\Test.txt" desk:\ ', .T. )
Además, permite copiar directorios enteros (no lo he probado)
No uso WiFi; tengo la PDA conectada al PC mediante un cable USB y ActiveSync
Por cierto: Es posible conectar mi PDA a mi red local mediante cable USB? Alguna idea?
Saludos,
Rafael
Posted: Tue Jan 08, 2008 12:59 pm
by pymsoft
Rafel: tambien uso cecopy, pero sirve solo si lo llamas desde el pc, no desde el terminal. El tema es que me copia todo un archivo, y yo quiero copiar solo algunos registros... se que puedo hacer archivos temporales y luego copiarlos, pero ahi me toca hacer una operacion en el terminal y otra en el pc... quisiera hacer todo desde el terminal como lo hago ahora, pero solo si estoy conectado al wi-fi.
Tu PDA puedes conectarla a la red local, que yo sepa solo si estas conectado con wi-fi, al menos esas son mis pruebas, el tema que conectado con el cable es mucho mas rapido.
Saludos
Posted: Thu Apr 24, 2008 9:46 am
by pymsoft
Alguien tiene algo hecho para copiar archivos desde el pc al pocket? usando RAPI.
gracias