Go Back   Rhinocerus > Newsgroup > Newsgroup comp.lang.* 1 > Newsgroup comp.lang.xharbour

Reply
 
Thread Tools Display Modes
  #1 (permalink)  
Old 09-03-2009, 10:53 AM
Mario H. Sabado
Guest
 
Posts: n/a
Default NetReDir() Function

Hi,

Has anyone using NetReDir() function with success connecting to Windows
2003 server? I can see that there's no parameter for username that
could be causing the problem. Any other alternative to automate network
mapping from the application.

Thanks,
Mario
Reply With Quote
Alt Today
Advertising
 
and become member of Rhinocerus
Standard Sponsored Links

  #2 (permalink)  
Old 09-03-2009, 10:10 PM
dlzc
Guest
 
Posts: n/a
Default Re: NetReDir() Function

Dear Mario H. Sabado:

On Sep 3, 3:53*am, "Mario H. Sabado" <mhsab...@gmail.com> wrote:

> Has anyone using NetReDir() function with success
> connecting to Windows 2003 server? *I can see that
> there's no parameter for username that could be
> causing the problem.


I can't help here.

> *Any other alternative to automate network
> * mapping from the application.


You can always RUN the appropriate NET command, and parse the output
for success / status?

David A. Smith
Reply With Quote
  #3 (permalink)  
Old 09-04-2009, 03:32 PM
FabioNery
Guest
 
Posts: n/a
Default Re: NetReDir() Function

Hi, Mario.

Try this:

/* F_NetRedir2 - Função para estabelecer uma conexao a um servidor, baseada
na função NetRedir do xHb
Por: Fabio Nery da Silva

Uso: F_NetRedir( <cLocal> ,;
<cServer> ,;
<cUserName> ,;
<cPassword> ,;
[<lShowError>] ) --> lSuccess

Argumentos:
cLocal - Nome de um dispositivo local que será redirecionado para um
servidor (ex: "K:"). É a unidade que será mapeada.
cServer - Nome do dispositivo que será conectado (ex:
"\\SERVER05\MARKETING").
cUsername - Nome do usuario que acessará o dispositivo remoto
cPassword - Senha do usuario
lShowError - vide NetRedir do xharbour
*/

HB_FUNC ( F_NETREDIR2 )
{
DWORD dwResult;

NETRESOURCE nr;
DWORD dwFlags;

char *cLocalDev = hb_parcx( 1 );
char *cSharedRes = hb_parcx( 2 );
char *cUsername = hb_parcx( 3 );
char *cPassword = hb_parcx( 4 );
BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
char szCommand[80];

// Zero out the NETRESOURCE struct
memset(&nr, 0, sizeof (NETRESOURCE));

// Assign our values to the NETRESOURCE structure.

nr.dwType = RESOURCETYPE_ANY;
nr.lpLocalName = cLocalDev; // argv[1];
nr.lpRemoteName = cSharedRes; // argv[2];
nr.lpProvider = NULL;

// Assign a value to the connection options
dwFlags = CONNECT_UPDATE_PROFILE;
//
// Call the WNetAddConnection2 function to assign
// a drive letter to the share.

dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);

if( dwResult == NO_ERROR )
{
hb_retl( TRUE );
}
else
{
if ( bShowError )
{
snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
\"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
WNetErrorHandler( dwResult, szCommand );
}
hb_retl( FALSE );
}

}

#pragma ENDDUMP

[]´s
FabioNery


"Mario H. Sabado" <mhsabado@gmail.com> escreveu na mensagem
news:h7o76s$vmm$1@news.eternal-september.org...
> Hi,
>
> Has anyone using NetReDir() function with success connecting to Windows
> 2003 server? I can see that there's no parameter for username that could
> be causing the problem. Any other alternative to automate network mapping
> from the application.
>
> Thanks,
> Mario



Reply With Quote
  #4 (permalink)  
Old 09-04-2009, 03:34 PM
FabioNery
Guest
 
Posts: n/a
Default Re: NetReDir() Function

Excuse me. Try this:

#pragma BEGINDUMP

#include "hbapi.h"
#include "hbapiitm.h"
#include "hbset.h"
#include "hbapierr.h"

#include <windows.h>
#include <winnetwk.h>

BOOL WINAPI WNetErrorHandler(DWORD dwErrorCode, LPSTR lpszFunction)
{
DWORD dwWNetResult, dwLastError;
CHAR szDescription[256];
CHAR szProvider[256];

HB_ITEM_PTR pError;

if (dwErrorCode != ERROR_EXTENDED_ERROR)
{
pError = hb_errRT_New(
ES_ERROR,
HB_ERR_SS_TOOLS,
9999,
9999,
"Windows Network operation failed",
lpszFunction,
(USHORT) dwErrorCode,
EF_NONE );
hb_errLaunch( pError );
hb_itemRelease( pError );
}
else
{
dwWNetResult = WNetGetLastError(&dwLastError, (LPSTR) szDescription,
sizeof(szDescription),
(LPSTR) szProvider,
sizeof(szProvider));

if(dwWNetResult != NO_ERROR) {
pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
"WNetGetLastError failed", "see OS error", (USHORT) dwWNetResult, EF_NONE );
hb_errLaunch( pError );
hb_itemRelease( pError );
return FALSE;
}

/*
extern PHB_ITEM HB_EXPORT hb_errRT_New(
USHORT uiSeverity,
char * szSubSystem,
ULONG ulGenCode,
ULONG ulSubCode,
char * szDescription,
char * szOperation,
USHORT uiOsCode,
USHORT uiFlags );
*/
pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
szDescription, szProvider, (USHORT) dwLastError, EF_NONE );
hb_errLaunch( pError );
hb_itemRelease( pError );
}

return TRUE;
}

/* F_NetRedir2 - Função para estabelecer uma conexao a um servidor, baseada
na função NetRedir do xHb
Por: Fabio Nery da Silva

Uso: F_NetRedir( <cLocal> ,;
<cServer> ,;
<cUserName> ,;
<cPassword> ,;
[<lShowError>] ) --> lSuccess

Argumentos:
cLocal - Nome de um dispositivo local que será redirecionado para um
servidor (ex: "K:"). É a unidade que será mapeada.
cServer - Nome do dispositivo que será conectado (ex:
"\\SERVER05\MARKETING").
cUsername - Nome do usuario que acessará o dispositivo remoto
cPassword - Senha do usuario
lShowError - vide NetRedir do xharbour
*/

HB_FUNC ( F_NETREDIR2 )
{
DWORD dwResult;

NETRESOURCE nr;
DWORD dwFlags;

char *cLocalDev = hb_parcx( 1 );
char *cSharedRes = hb_parcx( 2 );
char *cUsername = hb_parcx( 3 );
char *cPassword = hb_parcx( 4 );
BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
char szCommand[80];

// Zero out the NETRESOURCE struct
memset(&nr, 0, sizeof (NETRESOURCE));

// Assign our values to the NETRESOURCE structure.

nr.dwType = RESOURCETYPE_ANY;
nr.lpLocalName = cLocalDev; // argv[1];
nr.lpRemoteName = cSharedRes; // argv[2];
nr.lpProvider = NULL;

// Assign a value to the connection options
dwFlags = CONNECT_UPDATE_PROFILE;
//
// Call the WNetAddConnection2 function to assign
// a drive letter to the share.

dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);

if( dwResult == NO_ERROR )
{
hb_retl( TRUE );
}
else
{
if ( bShowError )
{
snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
\"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
WNetErrorHandler( dwResult, szCommand );
}
hb_retl( FALSE );
}

}

#pragma ENDDUMP



"FabioNery" <desenv@s2info.com.br> escreveu na mensagem
news:h7rbuu$9gf$1@news.eternal-september.org...
> Hi, Mario.
>
> Try this:
>
> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor,
> baseada na função NetRedir do xHb
> Por: Fabio Nery da Silva
>
> Uso: F_NetRedir( <cLocal> ,;
> <cServer> ,;
> <cUserName> ,;
> <cPassword> ,;
> [<lShowError>] ) --> lSuccess
>
> Argumentos:
> cLocal - Nome de um dispositivo local que será redirecionado para um
> servidor (ex: "K:"). É a unidade que será mapeada.
> cServer - Nome do dispositivo que será conectado (ex:
> "\\SERVER05\MARKETING").
> cUsername - Nome do usuario que acessará o dispositivo remoto
> cPassword - Senha do usuario
> lShowError - vide NetRedir do xharbour
> */
>
> HB_FUNC ( F_NETREDIR2 )
> {
> DWORD dwResult;
>
> NETRESOURCE nr;
> DWORD dwFlags;
>
> char *cLocalDev = hb_parcx( 1 );
> char *cSharedRes = hb_parcx( 2 );
> char *cUsername = hb_parcx( 3 );
> char *cPassword = hb_parcx( 4 );
> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
> char szCommand[80];
>
> // Zero out the NETRESOURCE struct
> memset(&nr, 0, sizeof (NETRESOURCE));
>
> // Assign our values to the NETRESOURCE structure.
>
> nr.dwType = RESOURCETYPE_ANY;
> nr.lpLocalName = cLocalDev; // argv[1];
> nr.lpRemoteName = cSharedRes; // argv[2];
> nr.lpProvider = NULL;
>
> // Assign a value to the connection options
> dwFlags = CONNECT_UPDATE_PROFILE;
> //
> // Call the WNetAddConnection2 function to assign
> // a drive letter to the share.
>
> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>
> if( dwResult == NO_ERROR )
> {
> hb_retl( TRUE );
> }
> else
> {
> if ( bShowError )
> {
> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
> WNetErrorHandler( dwResult, szCommand );
> }
> hb_retl( FALSE );
> }
>
> }
>
> #pragma ENDDUMP
>
> []´s
> FabioNery
>
>
> "Mario H. Sabado" <mhsabado@gmail.com> escreveu na mensagem
> news:h7o76s$vmm$1@news.eternal-september.org...
>> Hi,
>>
>> Has anyone using NetReDir() function with success connecting to Windows
>> 2003 server? I can see that there's no parameter for username that could
>> be causing the problem. Any other alternative to automate network
>> mapping from the application.
>>
>> Thanks,
>> Mario

>
>



Reply With Quote
  #5 (permalink)  
Old 09-04-2009, 04:17 PM
Mario H. Sabado
Guest
 
Posts: n/a
Default Re: NetReDir() Function

Hello Fabio,

I have "Undefined symbol HB_ERR_SS_TOOLS" error. What am I missing?

Thanks a lot for the help.

Gracias,
Mario

FabioNery wrote:
FabioNery wrote:
> Excuse me. Try this:
>
> #pragma BEGINDUMP
>
> #include "hbapi.h"
> #include "hbapiitm.h"
> #include "hbset.h"
> #include "hbapierr.h"
>
> #include <windows.h>
> #include <winnetwk.h>
>
> BOOL WINAPI WNetErrorHandler(DWORD dwErrorCode, LPSTR lpszFunction)
> {
> DWORD dwWNetResult, dwLastError;
> CHAR szDescription[256];
> CHAR szProvider[256];
>
> HB_ITEM_PTR pError;
>
> if (dwErrorCode != ERROR_EXTENDED_ERROR)
> {
> pError = hb_errRT_New(
> ES_ERROR,
> HB_ERR_SS_TOOLS,
> 9999,
> 9999,
> "Windows Network operation failed",
> lpszFunction,
> (USHORT) dwErrorCode,
> EF_NONE );
> hb_errLaunch( pError );
> hb_itemRelease( pError );
> }
> else
> {
> dwWNetResult = WNetGetLastError(&dwLastError, (LPSTR) szDescription,
> sizeof(szDescription),
> (LPSTR) szProvider,
> sizeof(szProvider));
>
> if(dwWNetResult != NO_ERROR) {
> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
> "WNetGetLastError failed", "see OS error", (USHORT) dwWNetResult, EF_NONE );
> hb_errLaunch( pError );
> hb_itemRelease( pError );
> return FALSE;
> }
>
> /*
> extern PHB_ITEM HB_EXPORT hb_errRT_New(
> USHORT uiSeverity,
> char * szSubSystem,
> ULONG ulGenCode,
> ULONG ulSubCode,
> char * szDescription,
> char * szOperation,
> USHORT uiOsCode,
> USHORT uiFlags );
> */
> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
> szDescription, szProvider, (USHORT) dwLastError, EF_NONE );
> hb_errLaunch( pError );
> hb_itemRelease( pError );
> }
>
> return TRUE;
> }
>
> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor, baseada
> na função NetRedir do xHb
> Por: Fabio Nery da Silva
>
> Uso: F_NetRedir( <cLocal> ,;
> <cServer> ,;
> <cUserName> ,;
> <cPassword> ,;
> [<lShowError>] ) --> lSuccess
>
> Argumentos:
> cLocal - Nome de um dispositivo local que será redirecionado para um
> servidor (ex: "K:"). É a unidade que será mapeada.
> cServer - Nome do dispositivo que será conectado (ex:
> "\\SERVER05\MARKETING").
> cUsername - Nome do usuario que acessará o dispositivo remoto
> cPassword - Senha do usuario
> lShowError - vide NetRedir do xharbour
> */
>
> HB_FUNC ( F_NETREDIR2 )
> {
> DWORD dwResult;
>
> NETRESOURCE nr;
> DWORD dwFlags;
>
> char *cLocalDev = hb_parcx( 1 );
> char *cSharedRes = hb_parcx( 2 );
> char *cUsername = hb_parcx( 3 );
> char *cPassword = hb_parcx( 4 );
> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
> char szCommand[80];
>
> // Zero out the NETRESOURCE struct
> memset(&nr, 0, sizeof (NETRESOURCE));
>
> // Assign our values to the NETRESOURCE structure.
>
> nr.dwType = RESOURCETYPE_ANY;
> nr.lpLocalName = cLocalDev; // argv[1];
> nr.lpRemoteName = cSharedRes; // argv[2];
> nr.lpProvider = NULL;
>
> // Assign a value to the connection options
> dwFlags = CONNECT_UPDATE_PROFILE;
> //
> // Call the WNetAddConnection2 function to assign
> // a drive letter to the share.
>
> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>
> if( dwResult == NO_ERROR )
> {
> hb_retl( TRUE );
> }
> else
> {
> if ( bShowError )
> {
> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
> WNetErrorHandler( dwResult, szCommand );
> }
> hb_retl( FALSE );
> }
>
> }
>
> #pragma ENDDUMP
>
>
>
> "FabioNery" <desenv@s2info.com.br> escreveu na mensagem
> news:h7rbuu$9gf$1@news.eternal-september.org...
>> Hi, Mario.
>>
>> Try this:
>>
>> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor,
>> baseada na função NetRedir do xHb
>> Por: Fabio Nery da Silva
>>
>> Uso: F_NetRedir( <cLocal> ,;
>> <cServer> ,;
>> <cUserName> ,;
>> <cPassword> ,;
>> [<lShowError>] ) --> lSuccess
>>
>> Argumentos:
>> cLocal - Nome de um dispositivo local que será redirecionado para um
>> servidor (ex: "K:"). É a unidade que será mapeada.
>> cServer - Nome do dispositivo que será conectado (ex:
>> "\\SERVER05\MARKETING").
>> cUsername - Nome do usuario que acessará o dispositivo remoto
>> cPassword - Senha do usuario
>> lShowError - vide NetRedir do xharbour
>> */
>>
>> HB_FUNC ( F_NETREDIR2 )
>> {
>> DWORD dwResult;
>>
>> NETRESOURCE nr;
>> DWORD dwFlags;
>>
>> char *cLocalDev = hb_parcx( 1 );
>> char *cSharedRes = hb_parcx( 2 );
>> char *cUsername = hb_parcx( 3 );
>> char *cPassword = hb_parcx( 4 );
>> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
>> char szCommand[80];
>>
>> // Zero out the NETRESOURCE struct
>> memset(&nr, 0, sizeof (NETRESOURCE));
>>
>> // Assign our values to the NETRESOURCE structure.
>>
>> nr.dwType = RESOURCETYPE_ANY;
>> nr.lpLocalName = cLocalDev; // argv[1];
>> nr.lpRemoteName = cSharedRes; // argv[2];
>> nr.lpProvider = NULL;
>>
>> // Assign a value to the connection options
>> dwFlags = CONNECT_UPDATE_PROFILE;
>> //
>> // Call the WNetAddConnection2 function to assign
>> // a drive letter to the share.
>>
>> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>>
>> if( dwResult == NO_ERROR )
>> {
>> hb_retl( TRUE );
>> }
>> else
>> {
>> if ( bShowError )
>> {
>> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
>> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
>> WNetErrorHandler( dwResult, szCommand );
>> }
>> hb_retl( FALSE );
>> }
>>
>> }
>>
>> #pragma ENDDUMP
>>
>> []´s
>> FabioNery
>>
>>
>> "Mario H. Sabado" <mhsabado@gmail.com> escreveu na mensagem
>> news:h7o76s$vmm$1@news.eternal-september.org...
>>> Hi,
>>>
>>> Has anyone using NetReDir() function with success connecting to Windows
>>> 2003 server? I can see that there's no parameter for username that could
>>> be causing the problem. Any other alternative to automate network
>>> mapping from the application.
>>>
>>> Thanks,
>>> Mario

>>

>
>


> Excuse me. Try this:
>
> #pragma BEGINDUMP
>
> #include "hbapi.h"
> #include "hbapiitm.h"
> #include "hbset.h"
> #include "hbapierr.h"
>
> #include <windows.h>
> #include <winnetwk.h>
>
> BOOL WINAPI WNetErrorHandler(DWORD dwErrorCode, LPSTR lpszFunction)
> {
> DWORD dwWNetResult, dwLastError;
> CHAR szDescription[256];
> CHAR szProvider[256];
>
> HB_ITEM_PTR pError;
>
> if (dwErrorCode != ERROR_EXTENDED_ERROR)
> {
> pError = hb_errRT_New(
> ES_ERROR,
> HB_ERR_SS_TOOLS,
> 9999,
> 9999,
> "Windows Network operation failed",
> lpszFunction,
> (USHORT) dwErrorCode,
> EF_NONE );
> hb_errLaunch( pError );
> hb_itemRelease( pError );
> }
> else
> {
> dwWNetResult = WNetGetLastError(&dwLastError, (LPSTR) szDescription,
> sizeof(szDescription),
> (LPSTR) szProvider,
> sizeof(szProvider));
>
> if(dwWNetResult != NO_ERROR) {
> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
> "WNetGetLastError failed", "see OS error", (USHORT) dwWNetResult, EF_NONE );
> hb_errLaunch( pError );
> hb_itemRelease( pError );
> return FALSE;
> }
>
> /*
> extern PHB_ITEM HB_EXPORT hb_errRT_New(
> USHORT uiSeverity,
> char * szSubSystem,
> ULONG ulGenCode,
> ULONG ulSubCode,
> char * szDescription,
> char * szOperation,
> USHORT uiOsCode,
> USHORT uiFlags );
> */
> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
> szDescription, szProvider, (USHORT) dwLastError, EF_NONE );
> hb_errLaunch( pError );
> hb_itemRelease( pError );
> }
>
> return TRUE;
> }
>
> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor, baseada
> na função NetRedir do xHb
> Por: Fabio Nery da Silva
>
> Uso: F_NetRedir( <cLocal> ,;
> <cServer> ,;
> <cUserName> ,;
> <cPassword> ,;
> [<lShowError>] ) --> lSuccess
>
> Argumentos:
> cLocal - Nome de um dispositivo local que será redirecionado para um
> servidor (ex: "K:"). É a unidade que será mapeada.
> cServer - Nome do dispositivo que será conectado (ex:
> "\\SERVER05\MARKETING").
> cUsername - Nome do usuario que acessará o dispositivo remoto
> cPassword - Senha do usuario
> lShowError - vide NetRedir do xharbour
> */
>
> HB_FUNC ( F_NETREDIR2 )
> {
> DWORD dwResult;
>
> NETRESOURCE nr;
> DWORD dwFlags;
>
> char *cLocalDev = hb_parcx( 1 );
> char *cSharedRes = hb_parcx( 2 );
> char *cUsername = hb_parcx( 3 );
> char *cPassword = hb_parcx( 4 );
> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
> char szCommand[80];
>
> // Zero out the NETRESOURCE struct
> memset(&nr, 0, sizeof (NETRESOURCE));
>
> // Assign our values to the NETRESOURCE structure.
>
> nr.dwType = RESOURCETYPE_ANY;
> nr.lpLocalName = cLocalDev; // argv[1];
> nr.lpRemoteName = cSharedRes; // argv[2];
> nr.lpProvider = NULL;
>
> // Assign a value to the connection options
> dwFlags = CONNECT_UPDATE_PROFILE;
> //
> // Call the WNetAddConnection2 function to assign
> // a drive letter to the share.
>
> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>
> if( dwResult == NO_ERROR )
> {
> hb_retl( TRUE );
> }
> else
> {
> if ( bShowError )
> {
> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
> WNetErrorHandler( dwResult, szCommand );
> }
> hb_retl( FALSE );
> }
>
> }
>
> #pragma ENDDUMP
>
>
>
> "FabioNery" <desenv@s2info.com.br> escreveu na mensagem
> news:h7rbuu$9gf$1@news.eternal-september.org...
>> Hi, Mario.
>>
>> Try this:
>>
>> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor,
>> baseada na função NetRedir do xHb
>> Por: Fabio Nery da Silva
>>
>> Uso: F_NetRedir( <cLocal> ,;
>> <cServer> ,;
>> <cUserName> ,;
>> <cPassword> ,;
>> [<lShowError>] ) --> lSuccess
>>
>> Argumentos:
>> cLocal - Nome de um dispositivo local que será redirecionado para um
>> servidor (ex: "K:"). É a unidade que será mapeada.
>> cServer - Nome do dispositivo que será conectado (ex:
>> "\\SERVER05\MARKETING").
>> cUsername - Nome do usuario que acessará o dispositivo remoto
>> cPassword - Senha do usuario
>> lShowError - vide NetRedir do xharbour
>> */
>>
>> HB_FUNC ( F_NETREDIR2 )
>> {
>> DWORD dwResult;
>>
>> NETRESOURCE nr;
>> DWORD dwFlags;
>>
>> char *cLocalDev = hb_parcx( 1 );
>> char *cSharedRes = hb_parcx( 2 );
>> char *cUsername = hb_parcx( 3 );
>> char *cPassword = hb_parcx( 4 );
>> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
>> char szCommand[80];
>>
>> // Zero out the NETRESOURCE struct
>> memset(&nr, 0, sizeof (NETRESOURCE));
>>
>> // Assign our values to the NETRESOURCE structure.
>>
>> nr.dwType = RESOURCETYPE_ANY;
>> nr.lpLocalName = cLocalDev; // argv[1];
>> nr.lpRemoteName = cSharedRes; // argv[2];
>> nr.lpProvider = NULL;
>>
>> // Assign a value to the connection options
>> dwFlags = CONNECT_UPDATE_PROFILE;
>> //
>> // Call the WNetAddConnection2 function to assign
>> // a drive letter to the share.
>>
>> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>>
>> if( dwResult == NO_ERROR )
>> {
>> hb_retl( TRUE );
>> }
>> else
>> {
>> if ( bShowError )
>> {
>> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
>> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
>> WNetErrorHandler( dwResult, szCommand );
>> }
>> hb_retl( FALSE );
>> }
>>
>> }
>>
>> #pragma ENDDUMP
>>
>> []´s
>> FabioNery
>>
>>
>> "Mario H. Sabado" <mhsabado@gmail.com> escreveu na mensagem
>> news:h7o76s$vmm$1@news.eternal-september.org...
>>> Hi,
>>>
>>> Has anyone using NetReDir() function with success connecting to Windows
>>> 2003 server? I can see that there's no parameter for username that could
>>> be causing the problem. Any other alternative to automate network
>>> mapping from the application.
>>>
>>> Thanks,
>>> Mario

>>

>
>

Reply With Quote
  #6 (permalink)  
Old 09-04-2009, 07:54 PM
FabioNery
Guest
 
Posts: n/a
Default Re: NetReDir() Function

Mario,

I don´t know C language. I found this code in microsoft msdn and try to
modify to xhb. I found HB_ERR_SS_TOOLS in c:\xhb\include\hbapierr.h (I use
xhb.com nov-2007.

Code:
/*
* $Id: hbapierr.h,v 1.14 2007/02/13 19:02:24 druzus Exp $
*/

/*
* Harbour Project source code:
* Header file for the Error API
*
* Copyright 1999 Antonio Linares <alinares@fivetech.com>
* www - http://www.harbour-project.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING.  If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour.  If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way.  To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/

#ifndef HB_APIERR_H_
#define HB_APIERR_H_

#include "hbapi.h"
#include "error.ch"

HB_EXTERN_BEGIN

/* Error codes (returned from hb_errLaunch()) */

#define E_BREAK                         0xFFFF
#define E_RETRY                         1
#define E_DEFAULT                       0

/* Error flags */

#define EF_NONE                         0
#define EF_CANRETRY                     1
#define EF_CANSUBSTITUTE                2
#define EF_CANDEFAULT                   4

/* oError:Severity */

/* ... defined in error.ch */

/* oError:SubSystem (commonly used) */

#define HB_ERR_SS_BASE                  "BASE"
#define HB_ERR_SS_TERMINAL              "TERM"
#define HB_ERR_SS_DBCMD                 "DBCMD"
#define HB_ERR_SS_TOOLS                 "TOOLS"

/* oError:GenCode */

/* ... defined in extend.ch */

/* Internal error numbers */

#define HB_ERR_IE_NOT_ENOUGH_MEM        1024
#define HB_ERR_IE_ERR_RECOV_FAIL        1025
#define HB_ERR_IE_UNREC_ERROR           1026
#define HB_ERR_IE_GENERIC               1027

#define HB_ERR_ARGS_BASEPARAMS          0xFFFFFFFF
#define HB_ERR_ARGS_SELFPARAMS          0xFFFFFFFE

/* pseudo function name in operation description */
extern char hb_errFuncName;

/* Standard API */

extern char     HB_EXPORT * hb_errGetDescription    ( PHB_ITEM pError );
extern char     HB_EXPORT * hb_errGetFileName       ( PHB_ITEM pError );
extern USHORT   HB_EXPORT hb_errGetFlags          ( PHB_ITEM pError );
extern USHORT   HB_EXPORT hb_errGetGenCode        ( PHB_ITEM pError );
extern char     HB_EXPORT * hb_errGetOperation    ( PHB_ITEM pError );
extern USHORT   HB_EXPORT hb_errGetOsCode         ( PHB_ITEM pError );
extern USHORT   HB_EXPORT hb_errGetSeverity       ( PHB_ITEM pError );
extern USHORT   HB_EXPORT hb_errGetSubCode        ( PHB_ITEM pError );
extern char     HB_EXPORT * hb_errGetSubSystem    ( PHB_ITEM pError );
extern USHORT   HB_EXPORT hb_errGetTries          ( PHB_ITEM pError );
extern char     HB_EXPORT * hb_errGetProcName     ( PHB_ITEM pError );
extern USHORT   HB_EXPORT hb_errGetProcLine       ( PHB_ITEM pError );

#ifdef HB_THREAD_SUPPORT
extern UINT     HB_EXPORT hb_errGetRunningThreads ( PHB_ITEM pError );
extern HB_THREAD_T HB_EXPORT hb_errGetThreadId    ( PHB_ITEM pError );
extern UINT     HB_EXPORT hb_errGetVmThreadId     ( PHB_ITEM pError );
#endif

extern USHORT   HB_EXPORT hb_errLaunch            ( PHB_ITEM pError );
extern PHB_ITEM HB_EXPORT hb_errNew               ( void );
extern PHB_ITEM HB_EXPORT hb_errPutArgs           ( PHB_ITEM pError, ULONG
ulArgCount, ... );
extern PHB_ITEM HB_EXPORT hb_errPutDescription    ( PHB_ITEM pError, const
char * szDescription );
extern PHB_ITEM HB_EXPORT hb_errPutFileName       ( PHB_ITEM pError, const
char * szFileName );
extern PHB_ITEM HB_EXPORT hb_errPutFlags          ( PHB_ITEM pError, USHORT
uiFlags );
extern PHB_ITEM HB_EXPORT hb_errPutGenCode        ( PHB_ITEM pError, USHORT
uiGenCode );
extern PHB_ITEM HB_EXPORT hb_errPutModuleName     ( PHB_ITEM pError, const
char * szModuleName );
extern PHB_ITEM HB_EXPORT hb_errPutOperation      ( PHB_ITEM pError, const
char * szOperation );
extern PHB_ITEM HB_EXPORT hb_errPutOsCode         ( PHB_ITEM pError, USHORT
uiOsCode );
extern PHB_ITEM HB_EXPORT hb_errPutSeverity       ( PHB_ITEM pError, USHORT
uiSeverity );
extern PHB_ITEM HB_EXPORT hb_errPutSubCode        ( PHB_ITEM pError, USHORT
uiSubCode );
extern PHB_ITEM HB_EXPORT hb_errPutSubSystem      ( PHB_ITEM pError, const
char * szSubSystem );
extern PHB_ITEM HB_EXPORT hb_errPutTries          ( PHB_ITEM pError, USHORT
uiTries );
extern PHB_ITEM HB_EXPORT hb_errPutProcName       ( PHB_ITEM pError, const
char * szProcname );
extern PHB_ITEM HB_EXPORT hb_errPutProcLine       ( PHB_ITEM pError, USHORT
uiProcline );
extern void     HB_EXPORT hb_errRelease           ( PHB_ITEM pError );

#ifdef HB_THREAD_SUPPORT
extern PHB_ITEM HB_EXPORT hb_errPutRunningThreads ( PHB_ITEM pError, UINT
uiCount );
extern PHB_ITEM HB_EXPORT hb_errPutThreadId       ( PHB_ITEM pError,
HB_THREAD_T thId );
extern PHB_ITEM HB_EXPORT hb_errPutVmThreadId     ( PHB_ITEM pError, UINT
uiVmId );
#endif

extern void     HB_EXPORT hb_errRelease           ( PHB_ITEM pError );

/* Harbour additions */

extern void     HB_EXPORT hb_errInit              ( void );
extern void     HB_EXPORT hb_errExit              ( void );

extern PHB_ITEM HB_EXPORT hb_errLaunchSubst       ( PHB_ITEM pError );

extern PHB_ITEM HB_EXPORT hb_errRT_New( USHORT uiSeverity, const char *
szSubSystem,
ULONG  ulGenCode,
ULONG  ulSubCode,
const char * szDescription,
const char * szOperation,
USHORT uiOsCode,
USHORT uiFlags );

extern PHB_ITEM HB_EXPORT hb_errRT_New_Subst( USHORT uiSeverity, const char
* szSubSystem,
ULONG  ulGenCode,
ULONG  ulSubCode,
const char * szDescription,
const char * szOperation,
USHORT uiOsCode,
USHORT uiFlags );

extern PHB_ITEM HB_EXPORT hb_errRT_SubstParams( const char *szSubSystem,
ULONG ulGenCode, ULONG ulSubCode, const char * szDescription, const char *
szOperation );

extern USHORT   HB_EXPORT hb_errRT_BASE           ( ULONG ulGenCode, ULONG
ulSubCode, const char * szDescription, const char * szOperation, ULONG
ulArgCount, ... );
extern USHORT   HB_EXPORT hb_errRT_BASE_Ext1      ( ULONG ulGenCode, ULONG
ulSubCode, const char * szDescription, const char * szOperation, USHORT
uiOsCode, USHORT uiFlags, ULONG ulArgCount, ... );
extern PHB_ITEM HB_EXPORT hb_errRT_BASE_Subst     ( ULONG ulGenCode, ULONG
ulSubCode, const char * szDescription, const char * szOperation, ULONG
ulArgCount, ... );
extern void     HB_EXPORT hb_errRT_BASE_SubstR    ( ULONG ulGenCode, ULONG
ulSubCode, const char * szDescription, const char * szOperation, ULONG
ulArgCount, ... );
extern USHORT   HB_EXPORT hb_errRT_TERM           ( ULONG ulGenCode, ULONG
ulSubCode, const char * szDescription, const char * szOperation, USHORT
uiOSCode, USHORT uiFlags );
extern USHORT   HB_EXPORT hb_errRT_DBCMD          ( ULONG ulGenCode, ULONG
ulSubCode, const char * szDescription, const char * szOperation );
extern USHORT   HB_EXPORT hb_errRT_DBCMD_Ext      ( ULONG ulGenCode, ULONG
ulSubCode, const char * szDescription, const char * szOperation, USHORT
uiFlags );
extern USHORT   HB_EXPORT hb_errRT_TOOLS          ( ULONG ulGenCode, ULONG
ulSubCode, const char * szDescription, const char * szOperation );

extern void     HB_EXPORT hb_errInternal          ( ULONG ulIntCode, const
char * szText, const char * szPar1, const char * szPar2 );

/* Low-level error handling */
struct HB_ERROR_INFO_;   /* forward declaration */
#define HB_ERROR_HANDLE( hbfunc )   HB_ITEM_PTR hbfunc( struct
HB_ERROR_INFO_ * ErrorInfo )
typedef HB_ERROR_HANDLE( HB_ERROR_HANDLER );
typedef HB_ERROR_HANDLER * HB_ERROR_HANDLER_PTR;

typedef struct HB_ERROR_INFO_
{
HB_ERROR_HANDLER_PTR Func;
HB_ITEM_PTR Error;
void * Cargo;
struct HB_ERROR_INFO_ * Previous;
HB_ITEM_PTR ErrorBlock;
} HB_ERROR_INFO, * HB_ERROR_INFO_PTR;

/*  set/get current error handler */
extern HB_ERROR_INFO_PTR HB_EXPORT hb_errorHandler( HB_ERROR_INFO_PTR
pNewHandler );
extern PHB_ITEM hb_errorBlock( PHB_ITEM pNewErrorBlock );

HB_EXTERN_END

#endif /* HB_APIERR_H_ */
[]´s
FabioNery


"Mario H. Sabado" <mhsabado@gmail.com> escreveu na mensagem
news:h7rei1$u52$1@news.eternal-september.org...
> Hello Fabio,
>
> I have "Undefined symbol HB_ERR_SS_TOOLS" error. What am I missing?
>
> Thanks a lot for the help.
>
> Gracias,
> Mario
>
> FabioNery wrote:
> FabioNery wrote:
>> Excuse me. Try this:
>>
>> #pragma BEGINDUMP
>>
>> #include "hbapi.h"
>> #include "hbapiitm.h"
>> #include "hbset.h"
>> #include "hbapierr.h"
>>
>> #include <windows.h>
>> #include <winnetwk.h>
>>
>> BOOL WINAPI WNetErrorHandler(DWORD dwErrorCode, LPSTR lpszFunction)
>> {
>> DWORD dwWNetResult, dwLastError;
>> CHAR szDescription[256];
>> CHAR szProvider[256];
>>
>> HB_ITEM_PTR pError;
>>
>> if (dwErrorCode != ERROR_EXTENDED_ERROR)
>> {
>> pError = hb_errRT_New(
>> ES_ERROR,
>> HB_ERR_SS_TOOLS,
>> 9999,
>> 9999,
>> "Windows Network operation failed",
>> lpszFunction,
>> (USHORT) dwErrorCode,
>> EF_NONE );
>> hb_errLaunch( pError );
>> hb_itemRelease( pError );
>> }
>> else
>> {
>> dwWNetResult = WNetGetLastError(&dwLastError, (LPSTR)
>> szDescription, sizeof(szDescription),
>> (LPSTR) szProvider,
>> sizeof(szProvider));
>>
>> if(dwWNetResult != NO_ERROR) {
>> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
>> "WNetGetLastError failed", "see OS error", (USHORT) dwWNetResult,
>> EF_NONE );
>> hb_errLaunch( pError );
>> hb_itemRelease( pError );
>> return FALSE;
>> }
>>
>> /*
>> extern PHB_ITEM HB_EXPORT hb_errRT_New(
>> USHORT uiSeverity,
>> char * szSubSystem,
>> ULONG ulGenCode,
>> ULONG ulSubCode,
>> char * szDescription,
>> char * szOperation,
>> USHORT uiOsCode,
>> USHORT uiFlags );
>> */
>> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
>> szDescription, szProvider, (USHORT) dwLastError, EF_NONE );
>> hb_errLaunch( pError );
>> hb_itemRelease( pError );
>> }
>>
>> return TRUE;
>> }
>>
>> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor,
>> baseada na função NetRedir do xHb
>> Por: Fabio Nery da Silva
>>
>> Uso: F_NetRedir( <cLocal> ,;
>> <cServer> ,;
>> <cUserName> ,;
>> <cPassword> ,;
>> [<lShowError>] ) --> lSuccess
>>
>> Argumentos:
>> cLocal - Nome de um dispositivo local que será redirecionado para um
>> servidor (ex: "K:"). É a unidade que será mapeada.
>> cServer - Nome do dispositivo que será conectado (ex:
>> "\\SERVER05\MARKETING").
>> cUsername - Nome do usuario que acessará o dispositivo remoto
>> cPassword - Senha do usuario
>> lShowError - vide NetRedir do xharbour
>> */
>>
>> HB_FUNC ( F_NETREDIR2 )
>> {
>> DWORD dwResult;
>>
>> NETRESOURCE nr;
>> DWORD dwFlags;
>>
>> char *cLocalDev = hb_parcx( 1 );
>> char *cSharedRes = hb_parcx( 2 );
>> char *cUsername = hb_parcx( 3 );
>> char *cPassword = hb_parcx( 4 );
>> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
>> char szCommand[80];
>>
>> // Zero out the NETRESOURCE struct
>> memset(&nr, 0, sizeof (NETRESOURCE));
>>
>> // Assign our values to the NETRESOURCE structure.
>>
>> nr.dwType = RESOURCETYPE_ANY;
>> nr.lpLocalName = cLocalDev; // argv[1];
>> nr.lpRemoteName = cSharedRes; // argv[2];
>> nr.lpProvider = NULL;
>>
>> // Assign a value to the connection options
>> dwFlags = CONNECT_UPDATE_PROFILE;
>> //
>> // Call the WNetAddConnection2 function to assign
>> // a drive letter to the share.
>>
>> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>>
>> if( dwResult == NO_ERROR )
>> {
>> hb_retl( TRUE );
>> }
>> else
>> {
>> if ( bShowError )
>> {
>> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
>> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
>> WNetErrorHandler( dwResult, szCommand );
>> }
>> hb_retl( FALSE );
>> }
>>
>> }
>>
>> #pragma ENDDUMP
>>
>>
>>
>> "FabioNery" <desenv@s2info.com.br> escreveu na mensagem
>> news:h7rbuu$9gf$1@news.eternal-september.org...
>>> Hi, Mario.
>>>
>>> Try this:
>>>
>>> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor,
>>> baseada na função NetRedir do xHb
>>> Por: Fabio Nery da Silva
>>>
>>> Uso: F_NetRedir( <cLocal> ,;
>>> <cServer> ,;
>>> <cUserName> ,;
>>> <cPassword> ,;
>>> [<lShowError>] ) --> lSuccess
>>>
>>> Argumentos:
>>> cLocal - Nome de um dispositivo local que será redirecionado para um
>>> servidor (ex: "K:"). É a unidade que será mapeada.
>>> cServer - Nome do dispositivo que será conectado (ex:
>>> "\\SERVER05\MARKETING").
>>> cUsername - Nome do usuario que acessará o dispositivo remoto
>>> cPassword - Senha do usuario
>>> lShowError - vide NetRedir do xharbour
>>> */
>>>
>>> HB_FUNC ( F_NETREDIR2 )
>>> {
>>> DWORD dwResult;
>>>
>>> NETRESOURCE nr;
>>> DWORD dwFlags;
>>>
>>> char *cLocalDev = hb_parcx( 1 );
>>> char *cSharedRes = hb_parcx( 2 );
>>> char *cUsername = hb_parcx( 3 );
>>> char *cPassword = hb_parcx( 4 );
>>> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
>>> char szCommand[80];
>>>
>>> // Zero out the NETRESOURCE struct
>>> memset(&nr, 0, sizeof (NETRESOURCE));
>>>
>>> // Assign our values to the NETRESOURCE structure.
>>>
>>> nr.dwType = RESOURCETYPE_ANY;
>>> nr.lpLocalName = cLocalDev; // argv[1];
>>> nr.lpRemoteName = cSharedRes; // argv[2];
>>> nr.lpProvider = NULL;
>>>
>>> // Assign a value to the connection options
>>> dwFlags = CONNECT_UPDATE_PROFILE;
>>> //
>>> // Call the WNetAddConnection2 function to assign
>>> // a drive letter to the share.
>>>
>>> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>>>
>>> if( dwResult == NO_ERROR )
>>> {
>>> hb_retl( TRUE );
>>> }
>>> else
>>> {
>>> if ( bShowError )
>>> {
>>> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
>>> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
>>> WNetErrorHandler( dwResult, szCommand );
>>> }
>>> hb_retl( FALSE );
>>> }
>>>
>>> }
>>>
>>> #pragma ENDDUMP
>>>
>>> []´s
>>> FabioNery
>>>
>>>
>>> "Mario H. Sabado" <mhsabado@gmail.com> escreveu na mensagem
>>> news:h7o76s$vmm$1@news.eternal-september.org...
>>>> Hi,
>>>>
>>>> Has anyone using NetReDir() function with success connecting to Windows
>>>> 2003 server? I can see that there's no parameter for username that
>>>> could be causing the problem. Any other alternative to automate
>>>> network mapping from the application.
>>>>
>>>> Thanks,
>>>> Mario
>>>

>>
>>

>
>> Excuse me. Try this:
>>
>> #pragma BEGINDUMP
>>
>> #include "hbapi.h"
>> #include "hbapiitm.h"
>> #include "hbset.h"
>> #include "hbapierr.h"
>>
>> #include <windows.h>
>> #include <winnetwk.h>
>>
>> BOOL WINAPI WNetErrorHandler(DWORD dwErrorCode, LPSTR lpszFunction)
>> {
>> DWORD dwWNetResult, dwLastError;
>> CHAR szDescription[256];
>> CHAR szProvider[256];
>>
>> HB_ITEM_PTR pError;
>>
>> if (dwErrorCode != ERROR_EXTENDED_ERROR)
>> {
>> pError = hb_errRT_New(
>> ES_ERROR,
>> HB_ERR_SS_TOOLS,
>> 9999,
>> 9999,
>> "Windows Network operation failed",
>> lpszFunction,
>> (USHORT) dwErrorCode,
>> EF_NONE );
>> hb_errLaunch( pError );
>> hb_itemRelease( pError );
>> }
>> else
>> {
>> dwWNetResult = WNetGetLastError(&dwLastError, (LPSTR)
>> szDescription, sizeof(szDescription),
>> (LPSTR) szProvider,
>> sizeof(szProvider));
>>
>> if(dwWNetResult != NO_ERROR) {
>> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
>> "WNetGetLastError failed", "see OS error", (USHORT) dwWNetResult,
>> EF_NONE );
>> hb_errLaunch( pError );
>> hb_itemRelease( pError );
>> return FALSE;
>> }
>>
>> /*
>> extern PHB_ITEM HB_EXPORT hb_errRT_New(
>> USHORT uiSeverity,
>> char * szSubSystem,
>> ULONG ulGenCode,
>> ULONG ulSubCode,
>> char * szDescription,
>> char * szOperation,
>> USHORT uiOsCode,
>> USHORT uiFlags );
>> */
>> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
>> szDescription, szProvider, (USHORT) dwLastError, EF_NONE );
>> hb_errLaunch( pError );
>> hb_itemRelease( pError );
>> }
>>
>> return TRUE;
>> }
>>
>> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor,
>> baseada na função NetRedir do xHb
>> Por: Fabio Nery da Silva
>>
>> Uso: F_NetRedir( <cLocal> ,;
>> <cServer> ,;
>> <cUserName> ,;
>> <cPassword> ,;
>> [<lShowError>] ) --> lSuccess
>>
>> Argumentos:
>> cLocal - Nome de um dispositivo local que será redirecionado para um
>> servidor (ex: "K:"). É a unidade que será mapeada.
>> cServer - Nome do dispositivo que será conectado (ex:
>> "\\SERVER05\MARKETING").
>> cUsername - Nome do usuario que acessará o dispositivo remoto
>> cPassword - Senha do usuario
>> lShowError - vide NetRedir do xharbour
>> */
>>
>> HB_FUNC ( F_NETREDIR2 )
>> {
>> DWORD dwResult;
>>
>> NETRESOURCE nr;
>> DWORD dwFlags;
>>
>> char *cLocalDev = hb_parcx( 1 );
>> char *cSharedRes = hb_parcx( 2 );
>> char *cUsername = hb_parcx( 3 );
>> char *cPassword = hb_parcx( 4 );
>> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
>> char szCommand[80];
>>
>> // Zero out the NETRESOURCE struct
>> memset(&nr, 0, sizeof (NETRESOURCE));
>>
>> // Assign our values to the NETRESOURCE structure.
>>
>> nr.dwType = RESOURCETYPE_ANY;
>> nr.lpLocalName = cLocalDev; // argv[1];
>> nr.lpRemoteName = cSharedRes; // argv[2];
>> nr.lpProvider = NULL;
>>
>> // Assign a value to the connection options
>> dwFlags = CONNECT_UPDATE_PROFILE;
>> //
>> // Call the WNetAddConnection2 function to assign
>> // a drive letter to the share.
>>
>> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>>
>> if( dwResult == NO_ERROR )
>> {
>> hb_retl( TRUE );
>> }
>> else
>> {
>> if ( bShowError )
>> {
>> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
>> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
>> WNetErrorHandler( dwResult, szCommand );
>> }
>> hb_retl( FALSE );
>> }
>>
>> }
>>
>> #pragma ENDDUMP
>>
>>
>>
>> "FabioNery" <desenv@s2info.com.br> escreveu na mensagem
>> news:h7rbuu$9gf$1@news.eternal-september.org...
>>> Hi, Mario.
>>>
>>> Try this:
>>>
>>> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor,
>>> baseada na função NetRedir do xHb
>>> Por: Fabio Nery da Silva
>>>
>>> Uso: F_NetRedir( <cLocal> ,;
>>> <cServer> ,;
>>> <cUserName> ,;
>>> <cPassword> ,;
>>> [<lShowError>] ) --> lSuccess
>>>
>>> Argumentos:
>>> cLocal - Nome de um dispositivo local que será redirecionado para um
>>> servidor (ex: "K:"). É a unidade que será mapeada.
>>> cServer - Nome do dispositivo que será conectado (ex:
>>> "\\SERVER05\MARKETING").
>>> cUsername - Nome do usuario que acessará o dispositivo remoto
>>> cPassword - Senha do usuario
>>> lShowError - vide NetRedir do xharbour
>>> */
>>>
>>> HB_FUNC ( F_NETREDIR2 )
>>> {
>>> DWORD dwResult;
>>>
>>> NETRESOURCE nr;
>>> DWORD dwFlags;
>>>
>>> char *cLocalDev = hb_parcx( 1 );
>>> char *cSharedRes = hb_parcx( 2 );
>>> char *cUsername = hb_parcx( 3 );
>>> char *cPassword = hb_parcx( 4 );
>>> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
>>> char szCommand[80];
>>>
>>> // Zero out the NETRESOURCE struct
>>> memset(&nr, 0, sizeof (NETRESOURCE));
>>>
>>> // Assign our values to the NETRESOURCE structure.
>>>
>>> nr.dwType = RESOURCETYPE_ANY;
>>> nr.lpLocalName = cLocalDev; // argv[1];
>>> nr.lpRemoteName = cSharedRes; // argv[2];
>>> nr.lpProvider = NULL;
>>>
>>> // Assign a value to the connection options
>>> dwFlags = CONNECT_UPDATE_PROFILE;
>>> //
>>> // Call the WNetAddConnection2 function to assign
>>> // a drive letter to the share.
>>>
>>> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>>>
>>> if( dwResult == NO_ERROR )
>>> {
>>> hb_retl( TRUE );
>>> }
>>> else
>>> {
>>> if ( bShowError )
>>> {
>>> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
>>> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
>>> WNetErrorHandler( dwResult, szCommand );
>>> }
>>> hb_retl( FALSE );
>>> }
>>>
>>> }
>>>
>>> #pragma ENDDUMP
>>>
>>> []´s
>>> FabioNery
>>>
>>>
>>> "Mario H. Sabado" <mhsabado@gmail.com> escreveu na mensagem
>>> news:h7o76s$vmm$1@news.eternal-september.org...
>>>> Hi,
>>>>
>>>> Has anyone using NetReDir() function with success connecting to Windows
>>>> 2003 server? I can see that there's no parameter for username that
>>>> could be causing the problem. Any other alternative to automate
>>>> network mapping from the application.
>>>>
>>>> Thanks,
>>>> Mario
>>>

>>


Reply With Quote
  #7 (permalink)  
Old 09-05-2009, 01:33 AM
Mario H. Sabado
Guest
 
Posts: n/a
Default Re: NetReDir() Function

Thanks again Fabio! I just added the missing line to hbapierr.h.

Best regards,
Mario

FabioNery wrote:
> Mario,
>
> I don´t know C language. I found this code in microsoft msdn and try to
> modify to xhb. I found HB_ERR_SS_TOOLS in c:\xhb\include\hbapierr.h (I use
> xhb.com nov-2007.
>
>
Code:
>
> /*
>  * $Id: hbapierr.h,v 1.14 2007/02/13 19:02:24 druzus Exp $
>  */
>
> /*
>  * Harbour Project source code:
>  * Header file for the Error API
>  *
>  * Copyright 1999 Antonio Linares <alinares@fivetech.com>
>  * www - http://www.harbour-project.org
>  *
>  * This program is free software; you can redistribute it and/or modify
>  * it under the terms of the GNU General Public License as published by
>  * the Free Software Foundation; either version 2, or (at your option)
>  * any later version.
>  *
>  * This program is distributed in the hope that it will be useful,
>  * but WITHOUT ANY WARRANTY; without even the implied warranty of
>  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>  * GNU General Public License for more details.
>  *
>  * You should have received a copy of the GNU General Public License
>  * along with this software; see the file COPYING.  If not, write to
>  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
>  * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
>  *
>  * As a special exception, the Harbour Project gives permission for
>  * additional uses of the text contained in its release of Harbour.
>  *
>  * The exception is that, if you link the Harbour libraries with other
>  * files to produce an executable, this does not by itself cause the
>  * resulting executable to be covered by the GNU General Public License.
>  * Your use of that executable is in no way restricted on account of
>  * linking the Harbour library code into it.
>  *
>  * This exception does not however invalidate any other reasons why
>  * the executable file might be covered by the GNU General Public License.
>  *
>  * This exception applies only to the code released by the Harbour
>  * Project under the name Harbour.  If you copy code from other
>  * Harbour Project or Free Software Foundation releases into a copy of
>  * Harbour, as the General Public License permits, the exception does
>  * not apply to the code that you add in this way.  To avoid misleading
>  * anyone as to the status of such modified files, you must delete
>  * this exception notice from them.
>  *
>  * If you write modifications of your own for Harbour, it is your choice
>  * whether to permit this exception to apply to your modifications.
>  * If you do not wish that, delete this exception notice.
>  *
>  */
>
> #ifndef HB_APIERR_H_
> #define HB_APIERR_H_
>
> #include "hbapi.h"
> #include "error.ch"
>
> HB_EXTERN_BEGIN
>
> /* Error codes (returned from hb_errLaunch()) */
>
> #define E_BREAK                         0xFFFF
> #define E_RETRY                         1
> #define E_DEFAULT                       0
>
> /* Error flags */
>
> #define EF_NONE                         0
> #define EF_CANRETRY                     1
> #define EF_CANSUBSTITUTE                2
> #define EF_CANDEFAULT                   4
>
> /* oError:Severity */
>
> /* ... defined in error.ch */
>
> /* oError:SubSystem (commonly used) */
>
> #define HB_ERR_SS_BASE                  "BASE"
> #define HB_ERR_SS_TERMINAL              "TERM"
> #define HB_ERR_SS_DBCMD                 "DBCMD"
> #define HB_ERR_SS_TOOLS                 "TOOLS"
>
> /* oError:GenCode */
>
> /* ... defined in extend.ch */
>
> /* Internal error numbers */
>
> #define HB_ERR_IE_NOT_ENOUGH_MEM        1024
> #define HB_ERR_IE_ERR_RECOV_FAIL        1025
> #define HB_ERR_IE_UNREC_ERROR           1026
> #define HB_ERR_IE_GENERIC               1027
>
> #define HB_ERR_ARGS_BASEPARAMS          0xFFFFFFFF
> #define HB_ERR_ARGS_SELFPARAMS          0xFFFFFFFE
>
> /* pseudo function name in operation description */
> extern char hb_errFuncName;
>
> /* Standard API */
>
> extern char     HB_EXPORT * hb_errGetDescription    ( PHB_ITEM pError );
> extern char     HB_EXPORT * hb_errGetFileName       ( PHB_ITEM pError );
> extern USHORT   HB_EXPORT hb_errGetFlags          ( PHB_ITEM pError );
> extern USHORT   HB_EXPORT hb_errGetGenCode        ( PHB_ITEM pError );
> extern char     HB_EXPORT * hb_errGetOperation    ( PHB_ITEM pError );
> extern USHORT   HB_EXPORT hb_errGetOsCode         ( PHB_ITEM pError );
> extern USHORT   HB_EXPORT hb_errGetSeverity       ( PHB_ITEM pError );
> extern USHORT   HB_EXPORT hb_errGetSubCode        ( PHB_ITEM pError );
> extern char     HB_EXPORT * hb_errGetSubSystem    ( PHB_ITEM pError );
> extern USHORT   HB_EXPORT hb_errGetTries          ( PHB_ITEM pError );
> extern char     HB_EXPORT * hb_errGetProcName     ( PHB_ITEM pError );
> extern USHORT   HB_EXPORT hb_errGetProcLine       ( PHB_ITEM pError );
>
> #ifdef HB_THREAD_SUPPORT
> extern UINT     HB_EXPORT hb_errGetRunningThreads ( PHB_ITEM pError );
> extern HB_THREAD_T HB_EXPORT hb_errGetThreadId    ( PHB_ITEM pError );
> extern UINT     HB_EXPORT hb_errGetVmThreadId     ( PHB_ITEM pError );
> #endif
>
> extern USHORT   HB_EXPORT hb_errLaunch            ( PHB_ITEM pError );
> extern PHB_ITEM HB_EXPORT hb_errNew               ( void );
> extern PHB_ITEM HB_EXPORT hb_errPutArgs           ( PHB_ITEM pError, ULONG
> ulArgCount, ... );
> extern PHB_ITEM HB_EXPORT hb_errPutDescription    ( PHB_ITEM pError, const
> char * szDescription );
> extern PHB_ITEM HB_EXPORT hb_errPutFileName       ( PHB_ITEM pError, const
> char * szFileName );
> extern PHB_ITEM HB_EXPORT hb_errPutFlags          ( PHB_ITEM pError, USHORT
> uiFlags );
> extern PHB_ITEM HB_EXPORT hb_errPutGenCode        ( PHB_ITEM pError, USHORT
> uiGenCode );
> extern PHB_ITEM HB_EXPORT hb_errPutModuleName     ( PHB_ITEM pError, const
> char * szModuleName );
> extern PHB_ITEM HB_EXPORT hb_errPutOperation      ( PHB_ITEM pError, const
> char * szOperation );
> extern PHB_ITEM HB_EXPORT hb_errPutOsCode         ( PHB_ITEM pError, USHORT
> uiOsCode );
> extern PHB_ITEM HB_EXPORT hb_errPutSeverity       ( PHB_ITEM pError, USHORT
> uiSeverity );
> extern PHB_ITEM HB_EXPORT hb_errPutSubCode        ( PHB_ITEM pError, USHORT
> uiSubCode );
> extern PHB_ITEM HB_EXPORT hb_errPutSubSystem      ( PHB_ITEM pError, const
> char * szSubSystem );
> extern PHB_ITEM HB_EXPORT hb_errPutTries          ( PHB_ITEM pError, USHORT
> uiTries );
> extern PHB_ITEM HB_EXPORT hb_errPutProcName       ( PHB_ITEM pError, const
> char * szProcname );
> extern PHB_ITEM HB_EXPORT hb_errPutProcLine       ( PHB_ITEM pError, USHORT
> uiProcline );
> extern void     HB_EXPORT hb_errRelease           ( PHB_ITEM pError );
>
> #ifdef HB_THREAD_SUPPORT
> extern PHB_ITEM HB_EXPORT hb_errPutRunningThreads ( PHB_ITEM pError, UINT
> uiCount );
> extern PHB_ITEM HB_EXPORT hb_errPutThreadId       ( PHB_ITEM pError,
> HB_THREAD_T thId );
> extern PHB_ITEM HB_EXPORT hb_errPutVmThreadId     ( PHB_ITEM pError, UINT
> uiVmId );
> #endif
>
> extern void     HB_EXPORT hb_errRelease           ( PHB_ITEM pError );
>
> /* Harbour additions */
>
> extern void     HB_EXPORT hb_errInit              ( void );
> extern void     HB_EXPORT hb_errExit              ( void );
>
> extern PHB_ITEM HB_EXPORT hb_errLaunchSubst       ( PHB_ITEM pError );
>
> extern PHB_ITEM HB_EXPORT hb_errRT_New( USHORT uiSeverity, const char *
> szSubSystem,
>    ULONG  ulGenCode,
>    ULONG  ulSubCode,
>    const char * szDescription,
>    const char * szOperation,
>    USHORT uiOsCode,
>    USHORT uiFlags );
>
> extern PHB_ITEM HB_EXPORT hb_errRT_New_Subst( USHORT uiSeverity, const char
> * szSubSystem,
>    ULONG  ulGenCode,
>    ULONG  ulSubCode,
>    const char * szDescription,
>    const char * szOperation,
>    USHORT uiOsCode,
>    USHORT uiFlags );
>
> extern PHB_ITEM HB_EXPORT hb_errRT_SubstParams( const char *szSubSystem,
> ULONG ulGenCode, ULONG ulSubCode, const char * szDescription, const char *
> szOperation );
>
> extern USHORT   HB_EXPORT hb_errRT_BASE           ( ULONG ulGenCode, ULONG
> ulSubCode, const char * szDescription, const char * szOperation, ULONG
> ulArgCount, ... );
> extern USHORT   HB_EXPORT hb_errRT_BASE_Ext1      ( ULONG ulGenCode, ULONG
> ulSubCode, const char * szDescription, const char * szOperation, USHORT
> uiOsCode, USHORT uiFlags, ULONG ulArgCount, ... );
> extern PHB_ITEM HB_EXPORT hb_errRT_BASE_Subst     ( ULONG ulGenCode, ULONG
> ulSubCode, const char * szDescription, const char * szOperation, ULONG
> ulArgCount, ... );
> extern void     HB_EXPORT hb_errRT_BASE_SubstR    ( ULONG ulGenCode, ULONG
> ulSubCode, const char * szDescription, const char * szOperation, ULONG
> ulArgCount, ... );
> extern USHORT   HB_EXPORT hb_errRT_TERM           ( ULONG ulGenCode, ULONG
> ulSubCode, const char * szDescription, const char * szOperation, USHORT
> uiOSCode, USHORT uiFlags );
> extern USHORT   HB_EXPORT hb_errRT_DBCMD          ( ULONG ulGenCode, ULONG
> ulSubCode, const char * szDescription, const char * szOperation );
> extern USHORT   HB_EXPORT hb_errRT_DBCMD_Ext      ( ULONG ulGenCode, ULONG
> ulSubCode, const char * szDescription, const char * szOperation, USHORT
> uiFlags );
> extern USHORT   HB_EXPORT hb_errRT_TOOLS          ( ULONG ulGenCode, ULONG
> ulSubCode, const char * szDescription, const char * szOperation );
>
> extern void     HB_EXPORT hb_errInternal          ( ULONG ulIntCode, const
> char * szText, const char * szPar1, const char * szPar2 );
>
> /* Low-level error handling */
> struct HB_ERROR_INFO_;   /* forward declaration */
> #define HB_ERROR_HANDLE( hbfunc )   HB_ITEM_PTR hbfunc( struct
> HB_ERROR_INFO_ * ErrorInfo )
> typedef HB_ERROR_HANDLE( HB_ERROR_HANDLER );
> typedef HB_ERROR_HANDLER * HB_ERROR_HANDLER_PTR;
>
> typedef struct HB_ERROR_INFO_
> {
>    HB_ERROR_HANDLER_PTR Func;
>    HB_ITEM_PTR Error;
>    void * Cargo;
>    struct HB_ERROR_INFO_ * Previous;
>    HB_ITEM_PTR ErrorBlock;
> } HB_ERROR_INFO, * HB_ERROR_INFO_PTR;
>
> /*  set/get current error handler */
> extern HB_ERROR_INFO_PTR HB_EXPORT hb_errorHandler( HB_ERROR_INFO_PTR
> pNewHandler );
> extern PHB_ITEM hb_errorBlock( PHB_ITEM pNewErrorBlock );
>
> HB_EXTERN_END
>
> #endif /* HB_APIERR_H_ */
>
>
>
> []´s
> FabioNery
>
>
> "Mario H. Sabado" <mhsabado@gmail.com> escreveu na mensagem
> news:h7rei1$u52$1@news.eternal-september.org...
>> Hello Fabio,
>>
>> I have "Undefined symbol HB_ERR_SS_TOOLS" error. What am I missing?
>>
>> Thanks a lot for the help.
>>
>> Gracias,
>> Mario
>>
>> FabioNery wrote:
>> FabioNery wrote:
>>> Excuse me. Try this:
>>>
>>> #pragma BEGINDUMP
>>>
>>> #include "hbapi.h"
>>> #include "hbapiitm.h"
>>> #include "hbset.h"
>>> #include "hbapierr.h"
>>>
>>> #include <windows.h>
>>> #include <winnetwk.h>
>>>
>>> BOOL WINAPI WNetErrorHandler(DWORD dwErrorCode, LPSTR lpszFunction)
>>> {
>>> DWORD dwWNetResult, dwLastError;
>>> CHAR szDescription[256];
>>> CHAR szProvider[256];
>>>
>>> HB_ITEM_PTR pError;
>>>
>>> if (dwErrorCode != ERROR_EXTENDED_ERROR)
>>> {
>>> pError = hb_errRT_New(
>>> ES_ERROR,
>>> HB_ERR_SS_TOOLS,
>>> 9999,
>>> 9999,
>>> "Windows Network operation failed",
>>> lpszFunction,
>>> (USHORT) dwErrorCode,
>>> EF_NONE );
>>> hb_errLaunch( pError );
>>> hb_itemRelease( pError );
>>> }
>>> else
>>> {
>>> dwWNetResult = WNetGetLastError(&dwLastError, (LPSTR)
>>> szDescription, sizeof(szDescription),
>>> (LPSTR) szProvider,
>>> sizeof(szProvider));
>>>
>>> if(dwWNetResult != NO_ERROR) {
>>> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
>>> "WNetGetLastError failed", "see OS error", (USHORT) dwWNetResult,
>>> EF_NONE );
>>> hb_errLaunch( pError );
>>> hb_itemRelease( pError );
>>> return FALSE;
>>> }
>>>
>>> /*
>>> extern PHB_ITEM HB_EXPORT hb_errRT_New(
>>> USHORT uiSeverity,
>>> char * szSubSystem,
>>> ULONG ulGenCode,
>>> ULONG ulSubCode,
>>> char * szDescription,
>>> char * szOperation,
>>> USHORT uiOsCode,
>>> USHORT uiFlags );
>>> */
>>> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
>>> szDescription, szProvider, (USHORT) dwLastError, EF_NONE );
>>> hb_errLaunch( pError );
>>> hb_itemRelease( pError );
>>> }
>>>
>>> return TRUE;
>>> }
>>>
>>> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor,
>>> baseada na função NetRedir do xHb
>>> Por: Fabio Nery da Silva
>>>
>>> Uso: F_NetRedir( <cLocal> ,;
>>> <cServer> ,;
>>> <cUserName> ,;
>>> <cPassword> ,;
>>> [<lShowError>] ) --> lSuccess
>>>
>>> Argumentos:
>>> cLocal - Nome de um dispositivo local que será redirecionado para um
>>> servidor (ex: "K:"). É a unidade que será mapeada.
>>> cServer - Nome do dispositivo que será conectado (ex:
>>> "\\SERVER05\MARKETING").
>>> cUsername - Nome do usuario que acessará o dispositivo remoto
>>> cPassword - Senha do usuario
>>> lShowError - vide NetRedir do xharbour
>>> */
>>>
>>> HB_FUNC ( F_NETREDIR2 )
>>> {
>>> DWORD dwResult;
>>>
>>> NETRESOURCE nr;
>>> DWORD dwFlags;
>>>
>>> char *cLocalDev = hb_parcx( 1 );
>>> char *cSharedRes = hb_parcx( 2 );
>>> char *cUsername = hb_parcx( 3 );
>>> char *cPassword = hb_parcx( 4 );
>>> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
>>> char szCommand[80];
>>>
>>> // Zero out the NETRESOURCE struct
>>> memset(&nr, 0, sizeof (NETRESOURCE));
>>>
>>> // Assign our values to the NETRESOURCE structure.
>>>
>>> nr.dwType = RESOURCETYPE_ANY;
>>> nr.lpLocalName = cLocalDev; // argv[1];
>>> nr.lpRemoteName = cSharedRes; // argv[2];
>>> nr.lpProvider = NULL;
>>>
>>> // Assign a value to the connection options
>>> dwFlags = CONNECT_UPDATE_PROFILE;
>>> //
>>> // Call the WNetAddConnection2 function to assign
>>> // a drive letter to the share.
>>>
>>> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>>>
>>> if( dwResult == NO_ERROR )
>>> {
>>> hb_retl( TRUE );
>>> }
>>> else
>>> {
>>> if ( bShowError )
>>> {
>>> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
>>> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
>>> WNetErrorHandler( dwResult, szCommand );
>>> }
>>> hb_retl( FALSE );
>>> }
>>>
>>> }
>>>
>>> #pragma ENDDUMP
>>>
>>>
>>>
>>> "FabioNery" <desenv@s2info.com.br> escreveu na mensagem
>>> news:h7rbuu$9gf$1@news.eternal-september.org...
>>>> Hi, Mario.
>>>>
>>>> Try this:
>>>>
>>>> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor,
>>>> baseada na função NetRedir do xHb
>>>> Por: Fabio Nery da Silva
>>>>
>>>> Uso: F_NetRedir( <cLocal> ,;
>>>> <cServer> ,;
>>>> <cUserName> ,;
>>>> <cPassword> ,;
>>>> [<lShowError>] ) --> lSuccess
>>>>
>>>> Argumentos:
>>>> cLocal - Nome de um dispositivo local que será redirecionado para um
>>>> servidor (ex: "K:"). É a unidade que será mapeada.
>>>> cServer - Nome do dispositivo que será conectado (ex:
>>>> "\\SERVER05\MARKETING").
>>>> cUsername - Nome do usuario que acessará o dispositivo remoto
>>>> cPassword - Senha do usuario
>>>> lShowError - vide NetRedir do xharbour
>>>> */
>>>>
>>>> HB_FUNC ( F_NETREDIR2 )
>>>> {
>>>> DWORD dwResult;
>>>>
>>>> NETRESOURCE nr;
>>>> DWORD dwFlags;
>>>>
>>>> char *cLocalDev = hb_parcx( 1 );
>>>> char *cSharedRes = hb_parcx( 2 );
>>>> char *cUsername = hb_parcx( 3 );
>>>> char *cPassword = hb_parcx( 4 );
>>>> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
>>>> char szCommand[80];
>>>>
>>>> // Zero out the NETRESOURCE struct
>>>> memset(&nr, 0, sizeof (NETRESOURCE));
>>>>
>>>> // Assign our values to the NETRESOURCE structure.
>>>>
>>>> nr.dwType = RESOURCETYPE_ANY;
>>>> nr.lpLocalName = cLocalDev; // argv[1];
>>>> nr.lpRemoteName = cSharedRes; // argv[2];
>>>> nr.lpProvider = NULL;
>>>>
>>>> // Assign a value to the connection options
>>>> dwFlags = CONNECT_UPDATE_PROFILE;
>>>> //
>>>> // Call the WNetAddConnection2 function to assign
>>>> // a drive letter to the share.
>>>>
>>>> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>>>>
>>>> if( dwResult == NO_ERROR )
>>>> {
>>>> hb_retl( TRUE );
>>>> }
>>>> else
>>>> {
>>>> if ( bShowError )
>>>> {
>>>> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
>>>> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
>>>> WNetErrorHandler( dwResult, szCommand );
>>>> }
>>>> hb_retl( FALSE );
>>>> }
>>>>
>>>> }
>>>>
>>>> #pragma ENDDUMP
>>>>
>>>> []´s
>>>> FabioNery
>>>>
>>>>
>>>> "Mario H. Sabado" <mhsabado@gmail.com> escreveu na mensagem
>>>> news:h7o76s$vmm$1@news.eternal-september.org...
>>>>> Hi,
>>>>>
>>>>> Has anyone using NetReDir() function with success connecting to Windows
>>>>> 2003 server? I can see that there's no parameter for username that
>>>>> could be causing the problem. Any other alternative to automate
>>>>> network mapping from the application.
>>>>>
>>>>> Thanks,
>>>>> Mario
>>>
>>> Excuse me. Try this:
>>>
>>> #pragma BEGINDUMP
>>>
>>> #include "hbapi.h"
>>> #include "hbapiitm.h"
>>> #include "hbset.h"
>>> #include "hbapierr.h"
>>>
>>> #include <windows.h>
>>> #include <winnetwk.h>
>>>
>>> BOOL WINAPI WNetErrorHandler(DWORD dwErrorCode, LPSTR lpszFunction)
>>> {
>>> DWORD dwWNetResult, dwLastError;
>>> CHAR szDescription[256];
>>> CHAR szProvider[256];
>>>
>>> HB_ITEM_PTR pError;
>>>
>>> if (dwErrorCode != ERROR_EXTENDED_ERROR)
>>> {
>>> pError = hb_errRT_New(
>>> ES_ERROR,
>>> HB_ERR_SS_TOOLS,
>>> 9999,
>>> 9999,
>>> "Windows Network operation failed",
>>> lpszFunction,
>>> (USHORT) dwErrorCode,
>>> EF_NONE );
>>> hb_errLaunch( pError );
>>> hb_itemRelease( pError );
>>> }
>>> else
>>> {
>>> dwWNetResult = WNetGetLastError(&dwLastError, (LPSTR)
>>> szDescription, sizeof(szDescription),
>>> (LPSTR) szProvider,
>>> sizeof(szProvider));
>>>
>>> if(dwWNetResult != NO_ERROR) {
>>> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
>>> "WNetGetLastError failed", "see OS error", (USHORT) dwWNetResult,
>>> EF_NONE );
>>> hb_errLaunch( pError );
>>> hb_itemRelease( pError );
>>> return FALSE;
>>> }
>>>
>>> /*
>>> extern PHB_ITEM HB_EXPORT hb_errRT_New(
>>> USHORT uiSeverity,
>>> char * szSubSystem,
>>> ULONG ulGenCode,
>>> ULONG ulSubCode,
>>> char * szDescription,
>>> char * szOperation,
>>> USHORT uiOsCode,
>>> USHORT uiFlags );
>>> */
>>> pError = hb_errRT_New( ES_ERROR, HB_ERR_SS_TOOLS, 9999, 9999,
>>> szDescription, szProvider, (USHORT) dwLastError, EF_NONE );
>>> hb_errLaunch( pError );
>>> hb_itemRelease( pError );
>>> }
>>>
>>> return TRUE;
>>> }
>>>
>>> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor,
>>> baseada na função NetRedir do xHb
>>> Por: Fabio Nery da Silva
>>>
>>> Uso: F_NetRedir( <cLocal> ,;
>>> <cServer> ,;
>>> <cUserName> ,;
>>> <cPassword> ,;
>>> [<lShowError>] ) --> lSuccess
>>>
>>> Argumentos:
>>> cLocal - Nome de um dispositivo local que será redirecionado para um
>>> servidor (ex: "K:"). É a unidade que será mapeada.
>>> cServer - Nome do dispositivo que será conectado (ex:
>>> "\\SERVER05\MARKETING").
>>> cUsername - Nome do usuario que acessará o dispositivo remoto
>>> cPassword - Senha do usuario
>>> lShowError - vide NetRedir do xharbour
>>> */
>>>
>>> HB_FUNC ( F_NETREDIR2 )
>>> {
>>> DWORD dwResult;
>>>
>>> NETRESOURCE nr;
>>> DWORD dwFlags;
>>>
>>> char *cLocalDev = hb_parcx( 1 );
>>> char *cSharedRes = hb_parcx( 2 );
>>> char *cUsername = hb_parcx( 3 );
>>> char *cPassword = hb_parcx( 4 );
>>> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
>>> char szCommand[80];
>>>
>>> // Zero out the NETRESOURCE struct
>>> memset(&nr, 0, sizeof (NETRESOURCE));
>>>
>>> // Assign our values to the NETRESOURCE structure.
>>>
>>> nr.dwType = RESOURCETYPE_ANY;
>>> nr.lpLocalName = cLocalDev; // argv[1];
>>> nr.lpRemoteName = cSharedRes; // argv[2];
>>> nr.lpProvider = NULL;
>>>
>>> // Assign a value to the connection options
>>> dwFlags = CONNECT_UPDATE_PROFILE;
>>> //
>>> // Call the WNetAddConnection2 function to assign
>>> // a drive letter to the share.
>>>
>>> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>>>
>>> if( dwResult == NO_ERROR )
>>> {
>>> hb_retl( TRUE );
>>> }
>>> else
>>> {
>>> if ( bShowError )
>>> {
>>> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
>>> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
>>> WNetErrorHandler( dwResult, szCommand );
>>> }
>>> hb_retl( FALSE );
>>> }
>>>
>>> }
>>>
>>> #pragma ENDDUMP
>>>
>>>
>>>
>>> "FabioNery" <desenv@s2info.com.br> escreveu na mensagem
>>> news:h7rbuu$9gf$1@news.eternal-september.org...
>>>> Hi, Mario.
>>>>
>>>> Try this:
>>>>
>>>> /* F_NetRedir2 - Função para estabelecer uma conexao a um servidor,
>>>> baseada na função NetRedir do xHb
>>>> Por: Fabio Nery da Silva
>>>>
>>>> Uso: F_NetRedir( <cLocal> ,;
>>>> <cServer> ,;
>>>> <cUserName> ,;
>>>> <cPassword> ,;
>>>> [<lShowError>] ) --> lSuccess
>>>>
>>>> Argumentos:
>>>> cLocal - Nome de um dispositivo local que será redirecionado para um
>>>> servidor (ex: "K:"). É a unidade que será mapeada.
>>>> cServer - Nome do dispositivo que será conectado (ex:
>>>> "\\SERVER05\MARKETING").
>>>> cUsername - Nome do usuario que acessará o dispositivo remoto
>>>> cPassword - Senha do usuario
>>>> lShowError - vide NetRedir do xharbour
>>>> */
>>>>
>>>> HB_FUNC ( F_NETREDIR2 )
>>>> {
>>>> DWORD dwResult;
>>>>
>>>> NETRESOURCE nr;
>>>> DWORD dwFlags;
>>>>
>>>> char *cLocalDev = hb_parcx( 1 );
>>>> char *cSharedRes = hb_parcx( 2 );
>>>> char *cUsername = hb_parcx( 3 );
>>>> char *cPassword = hb_parcx( 4 );
>>>> BOOL bShowError = ( ISLOG(5) ? hb_parl(5) : FALSE );
>>>> char szCommand[80];
>>>>
>>>> // Zero out the NETRESOURCE struct
>>>> memset(&nr, 0, sizeof (NETRESOURCE));
>>>>
>>>> // Assign our values to the NETRESOURCE structure.
>>>>
>>>> nr.dwType = RESOURCETYPE_ANY;
>>>> nr.lpLocalName = cLocalDev; // argv[1];
>>>> nr.lpRemoteName = cSharedRes; // argv[2];
>>>> nr.lpProvider = NULL;
>>>>
>>>> // Assign a value to the connection options
>>>> dwFlags = CONNECT_UPDATE_PROFILE;
>>>> //
>>>> // Call the WNetAddConnection2 function to assign
>>>> // a drive letter to the share.
>>>>
>>>> dwResult = WNetAddConnection2(&nr, cPassword, cUsername, dwFlags);
>>>>
>>>> if( dwResult == NO_ERROR )
>>>> {
>>>> hb_retl( TRUE );
>>>> }
>>>> else
>>>> {
>>>> if ( bShowError )
>>>> {
>>>> snprintf( szCommand, 80, "F_NETREDIR2( \"%s\", \"%s\", \"%s\",
>>>> \"%s\" )", cLocalDev, cSharedRes, cUsername, cPassword );
>>>> WNetErrorHandler( dwResult, szCommand );
>>>> }
>>>> hb_retl( FALSE );
>>>> }
>>>>
>>>> }
>>>>
>>>> #pragma ENDDUMP
>>>>
>>>> []´s
>>>> FabioNery
>>>>
>>>>
>>>> "Mario H. Sabado" <mhsabado@gmail.com> escreveu na mensagem
>>>> news:h7o76s$vmm$1@news.eternal-september.org...
>>>>> Hi,
>>>>>
>>>>> Has anyone using NetReDir() function with success connecting to Windows
>>>>> 2003 server? I can see that there's no parameter for username that
>>>>> could be causing the problem. Any other alternative to automate
>>>>> network mapping from the application.
>>>>>
>>>>> Thanks,
>>>>> Mario

>

Reply With Quote
 
Reply

Popular Tags in the Forum
function, netredir

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off




All times are GMT. The time now is 06:48 PM.


Copyright ©2009

LinkBacks Enabled by vBSEO 3.3.0 RC2 © 2009, Crawlability, Inc.