Page 1 of 3
FTP on Pocket PC
Posted: Fri Apr 21, 2006 1:09 pm
by franz1964
I have translate my application with FWPPC. Thanks!. FWPPC is a really good application!. It only take somes hours and this is the first time that I use fivewin.
Now I have to ftp data from the smartphone (Vodafone v1640) to a ftp server. How I have to operate ?
On XP I use wininet.dll but I think this is not working on Win Mobile.
I await your idea.
Thanks a lot.
Re: FTP on Pocket PC
Posted: Fri Apr 21, 2006 4:39 pm
by Enrico Maria Giordano
This is a sample:
Code: Select all
#include "Fwce.ch"
//
// File attributes
//
#define FILE_ATTRIBUTE_READONLY 1
#define FILE_ATTRIBUTE_HIDDEN 2
#define FILE_ATTRIBUTE_SYSTEM 4
#define FILE_ATTRIBUTE_DIRECTORY 16
#define FILE_ATTRIBUTE_ARCHIVE 32
#define FILE_ATTRIBUTE_NORMAL 128
#define FILE_ATTRIBUTE_TEMPORARY 256
//
// access types for InternetOpen()
//
#define INTERNET_OPEN_TYPE_PRECONFIG 0 // use registry configuration
#define INTERNET_OPEN_TYPE_DIRECT 1 // direct to net
#define INTERNET_OPEN_TYPE_PROXY 3 // via named proxy
#define INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY 4 // prevent using java/script/INS
//
// manifests
//
#define INTERNET_INVALID_PORT_NUMBER 0 // use the protocol-specific default
#define INTERNET_DEFAULT_FTP_PORT 21 // default for FTP servers
#define INTERNET_DEFAULT_GOPHER_PORT 70 // " " gopher "
#define INTERNET_DEFAULT_HTTP_PORT 80 // " " HTTP "
#define INTERNET_DEFAULT_HTTPS_PORT 443 // " " HTTPS "
#define INTERNET_DEFAULT_SOCKS_PORT 1080 // default for SOCKS firewall servers.
//
// service types for InternetConnect()
//
#define INTERNET_SERVICE_FTP 1
#define INTERNET_SERVICE_GOPHER 2
#define INTERNET_SERVICE_HTTP 3
//
// flags for FTP
//
#define INTERNET_FLAG_TRANSFER_ASCII 1
#define INTERNET_FLAG_TRANSFER_BINARY 2
FUNCTION MAIN()
LOCAL hInternet, hConnect
hInternet = INTERNETOPEN( "Anystring", INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0 )
hConnect = INTERNETCONNECT( hInternet, "Your ftp address", INTERNET_INVALID_PORT_NUMBER, "userid", "password", INTERNET_SERVICE_FTP, 0, 0 )
// ? FTPGETFILE( hConnect, "Your remote file", "Your local file", 0, FILE_ATTRIBUTE_ARCHIVE, 0, 0 )
? FTPPUTFILE( hConnect, "Your local file", "Your remote file", 0, 0 )
INTERNETCLOSEHANDLE( hConnect )
INTERNETCLOSEHANDLE( hInternet )
RETURN NIL
#pragma BEGINDUMP
#include "windows.h"
#include "wininet.h"
#include "hbapi.h"
LPWSTR AnsiToWide( LPSTR );
HB_FUNC( INTERNETOPEN )
{
LPWSTR cAgent = AnsiToWide( hb_parc( 1 ) );
LPWSTR cProxyName = AnsiToWide( hb_parc( 3 ) );
LPWSTR cProxyBypass = AnsiToWide( hb_parc( 4 ) );
HINTERNET hInternet = InternetOpen( cAgent, hb_parnl( 2 ), cProxyName, cProxyBypass, hb_parnl( 5 ) );
hb_xfree( cAgent );
hb_xfree( cProxyName );
hb_xfree( cProxyBypass );
hb_retnl( ( LONG ) hInternet );
}
HB_FUNC( INTERNETCLOSEHANDLE )
{
hb_retl( InternetCloseHandle( ( HINTERNET ) hb_parnl( 1 ) ) );
}
HB_FUNC( INTERNETCONNECT )
{
LPWSTR cServerName = AnsiToWide( hb_parc( 2 ) );
LPWSTR cUserName = AnsiToWide( hb_parc( 4 ) );
LPWSTR cPassword = AnsiToWide( hb_parc( 5 ) );
HINTERNET hInternet = InternetConnect( ( HINTERNET ) hb_parnl( 1 ), cServerName, ( INTERNET_PORT ) hb_parnl( 3 ), cUserName, cPassword, hb_parnl( 6 ), hb_parnl( 7 ), hb_parnl( 8 ) );
hb_xfree( cServerName );
hb_xfree( cUserName );
hb_xfree( cPassword );
hb_retnl( ( LONG ) hInternet );
}
HB_FUNC( FTPGETFILE )
{
LPWSTR cRemoteFile = AnsiToWide( hb_parc( 2 ) );
LPWSTR cNewFile = AnsiToWide( hb_parc( 3 ) );
hb_retl( FtpGetFile( ( HINTERNET ) hb_parnl( 1 ), cRemoteFile, cNewFile, hb_parl( 4 ), hb_parnl( 5 ), hb_parnl( 6 ), hb_parnl( 7 ) ) );
hb_xfree( cRemoteFile );
hb_xfree( cNewFile );
}
HB_FUNC( FTPPUTFILE )
{
LPWSTR cLocalFile = AnsiToWide( hb_parc( 2 ) );
LPWSTR cNewRemoteFile = AnsiToWide( hb_parc( 3 ) );
hb_retl( FtpPutFile( ( HINTERNET ) hb_parnl( 1 ), cLocalFile, cNewRemoteFile, hb_parnl( 4 ), hb_parnl( 5 ) ) );
hb_xfree( cLocalFile );
hb_xfree( cNewRemoteFile );
}
#pragma ENDDUMP
Posted: Fri Apr 21, 2006 4:56 pm
by Antonio Linares
Enrico,
Many thanks for your sample. We include it in FWPPC samples if you don't mind it
Posted: Fri Apr 21, 2006 6:21 pm
by Enrico Maria Giordano
Sure!
EMG
Grazie per l'aiuto ma ho un problema....
Posted: Fri Apr 21, 2006 6:31 pm
by franz1964
ho inserito il tuo codice ma quando linko il programma ho questi errori:
---------------------------------------
menu.obj : error LNK2001: unresolved external symbol "void __cdecl
HB_FUN_FTPSETCURRENTDIRECTORY(void)" (?HB_FUN_FTPSETCURRENTDIRECTORY@@YAXXZ)
menu.obj : error LNK2001: unresolved external symbol "void __cdecl HB_FUN_INETCONNECT(void)" (?HB_FUN_INETCONNECT@@YAXXZ)
menu.obj : error LNK2001: unresolved external symbol "void __cdecl HB_FUN_INETOPEN(void)" (?HB_FUN_INETOPEN@@YAXXZ)
menu.obj : error LNK2019: unresolved external symbol InternetOpenW referenced in function "void __cdecl HB_FUN_INTERNETOPEN(void)" (?HB_FUN_INTERNETOPEN@@YAXXZ)
menu.obj : error LNK2019: unresolved external symbol InternetCloseHandle referenced in function "void __cdecl HB_FUN_INTERNETCLOSEHANDLE(void)" (?HB_FUN_INTERNETCLOSEHANDLE@@YAXXZ)
menu.obj : error LNK2019: unresolved external symbol InternetConnectW referenced in function "void __cdecl HB_FUN_INTERNETCONNECT(void)" (?HB_FUN_INTERNETCONNECT@@YAXXZ)
menu.obj : error LNK2019: unresolved external symbol FtpGetFileW referenced in function "void __cdecl HB_FUN_FTPGETFILE(void)" (?HB_FUN_FTPGETFILE@@YAXXZ)
menu.obj : error LNK2019: unresolved external symbol FtpPutFileW referenced in function "void __cdecl HB_FUN_FTPPUTFILE(void)" (?HB_FUN_FTPPUTFILE@@YAXXZ)
menu.exe : fatal error LNK1120: 8 unresolved externals
-----------------------------
Dove ho sbagliato ?
Grazie Ciao
Re: Grazie per l'aiuto ma ho un problema....
Posted: Fri Apr 21, 2006 6:38 pm
by Enrico Maria Giordano
menu.obj : error LNK2001: unresolved external symbol "void __cdecl
HB_FUN_FTPSETCURRENTDIRECTORY(void)"
The above (and other) is not from my sample.
EMG
Sorry. I mixed from 2 source
Posted: Fri Apr 21, 2006 7:05 pm
by franz1964
this is the result with your code:
menu.obj : error LNK2019: unresolved external symbol InternetOpenW referenced in function "void __cdecl HB_FUN_INTERNETOPEN(void)" (?HB_FUN_INTERNETOPEN@@YAXXZ)
menu.obj : error LNK2019: unresolved external symbol InternetCloseHandle referenced in function "void __cdecl HB_FUN_INTERNETCLOSEHANDLE(void)" (?HB_FUN_INTERNETCLOSEHANDLE@@YAXXZ)
menu.obj : error LNK2019: unresolved external symbol InternetConnectW referenced in function "void __cdecl HB_FUN_INTERNETCONNECT(void)" (?HB_FUN_INTERNETCONNECT@@YAXXZ)
menu.obj : error LNK2019: unresolved external symbol FtpGetFileW referenced in function "void __cdecl HB_FUN_FTPGETFILE(void)" (?HB_FUN_FTPGETFILE@@YAXXZ)
menu.obj : error LNK2019: unresolved external symbol FtpPutFileW referenced in function "void __cdecl HB_FUN_FTPPUTFILE(void)" (?HB_FUN_FTPPUTFILE@@YAXXZ)
menu.exe : fatal error LNK1120: 5 unresolved externals
-------------------
Where I failed.
Thanks
Alfredo
Re: Sorry. I mixed from 2 source
Posted: Fri Apr 21, 2006 7:31 pm
by Enrico Maria Giordano
You have to link wininet.lib.
EMG
missing wininet.lib in buildce.bat
Posted: Fri Apr 21, 2006 7:34 pm
by franz1964
I found my error. no wininet.lib declared in buildce.bat.
Stop for this evening. link is ok tomorrow I will test to transfer data.
Ciao.
Alfredo
Posted: Thu Aug 17, 2006 4:01 pm
by Biel EA6DD
Hi,
starting from the sample of Enrico (many thanks), I have developed a function to send customer orders from PDA to PC via FTP, using GPRS connection.
All is runing ok when GPRS is conected (manually connected), I'm looking (and not finding for the moment) a way to automatic connect the GPRS, like do for example internet explorer .
Thanks in advance.
Posted: Thu Aug 17, 2006 4:08 pm
by Enrico Maria Giordano
I'm not sure if it is applicable on GPRS connections but try adapting the following Win32 function:
Code: Select all
#pragma BEGINDUMP
#include <WinTen.h>
#include <Windows.h>
#include <ras.h>
#include <HbApi.h>
#include <ClipApi.h>
HB_FUNC( RAS_DIAL ) // ( cEntryName, @nRetVal, @hRasCon ) -> NIL
{
RASDIALPARAMS rdp;
BOOL pwd;
HRASCONN hRas = 0;
DWORD res;
rdp.dwSize = 1052;
lstrcpy( rdp.szEntryName, hb_parc( 1 ) );
rdp.szPhoneNumber[ 0 ] = 0;
rdp.szCallbackNumber[ 0 ] = 0;
rdp.szUserName[ 0 ] = 0;
rdp.szPassword[ 0 ] = 0;
rdp.szDomain[ 0 ] = 0;
RasGetEntryDialParams( 0, &rdp, &pwd );
res = RasDial( 0, 0, &rdp, 0, 0, &hRas );
hb_stornl( res, 2 );
hb_stornl( ( LONG ) hRas, 3 );
}
#pragma ENDDUMP
EMG
Posted: Thu Aug 17, 2006 4:52 pm
by pawelu
Hello,
I use function like sample below.
Regards
Pawel
Code: Select all
// Header file: <connmgr.h>
// Library linked: CellCore.Lib
// Pocket Pc: Properly create GPRS connection (My ISP) in Connections Settings
// Connections Settings, Advanced Tab, Select Networks Button, set to My ISP
HB_FUNC (GPRSCONNECTION)
{
HANDLE phWebConnection = NULL;
DWORD pdwStatus = 0;
ConnMgrConnectionStatus (phWebConnection, &pdwStatus);
if (pdwStatus == CONNMGR_STATUS_CONNECTED)
{
hb_retl (TRUE);
}
else
{
CONNMGR_CONNECTIONINFO sConInfo;
memset (&sConInfo,0, sizeof (CONNMGR_CONNECTIONINFO));
sConInfo.cbSize = sizeof (CONNMGR_CONNECTIONINFO);
sConInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET;
sConInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE;
sConInfo.dwFlags = CONNMGR_FLAG_PROXY_HTTP;
sConInfo.bExclusive = FALSE;
sConInfo.bDisabled = FALSE;
sConInfo.guidDestNet = IID_DestNetInternet;
if (ConnMgrEstablishConnection (&sConInfo, &phWebConnection) == S_OK)
{
for (unsigned int k = 0; k < 8; k ++)
{
ConnMgrConnectionStatus(phWebConnection,&pdwStatus);
if (pdwStatus == CONNMGR_STATUS_CONNECTED)
{
hb_retl (TRUE);
}
else
{
if (pdwStatus == CONNMGR_STATUS_CONNECTIONCANCELED || pdwStatus == CONNMGR_STATUS_WAITINGCONNECTIONABORT)
{
hb_retl (FALSE);
}
Sleep (2500);
ConnMgrConnectionStatus (phWebConnection, &pdwStatus);
if (pdwStatus == CONNMGR_STATUS_WAITINGCONNECTION)
{}
if (pdwStatus == CONNMGR_STATUS_CONNECTIONCANCELED || pdwStatus == CONNMGR_STATUS_WAITINGCONNECTIONABORT)
{
hb_retl (FALSE);
}
}
}
hb_retl (FALSE);
}
else
{
hb_retl (FALSE);
}
}
}
Posted: Mon Aug 21, 2006 8:33 am
by Biel EA6DD
Hi all,
many thanks Enrico and Pawel. I tryed the code provided by Pawel and it runs 100 %.
Many thanks again both.
Posted: Fri Aug 25, 2006 7:43 pm
by Richard Chidiak
Biel EA6DD wrote:Hi all,
many thanks Enrico and Pawel. I tryed the code provided by Pawel and it runs 100 %.
Many thanks again both.
Biel
Where did you get the cellcore.lib from ?
Do you have a link for it ?
Can you share your gprs connexion program ?
Thanks
Richard
Posted: Mon Aug 28, 2006 6:46 am
by Biel EA6DD
Hello Richard
The cellcore.lib is included in the VCE, you only need to add to your compilation script.
About the connection program, you can use the code posted by Pawel its run perfect. Remember to include "initguid.h" and "connmgr.h" headers.