Função RasDialDlgA (rasdlg.h)
A função RasDialDlg estabelece uma conexão RAS usando uma entrada de catálogo telefônico especificada e as credenciais do usuário conectado. A função exibe um fluxo de caixas de diálogo que indicam o estado da operação de conexão.
Sintaxe
BOOL RasDialDlgA(
[in] LPSTR lpszPhonebook,
[in] LPSTR lpszEntry,
[in] LPSTR lpszPhoneNumber,
[in] LPRASDIALDLG lpInfo
);
Parâmetros
[in] lpszPhonebook
Ponteiro para uma cadeia de caracteres terminada em nulo que especifica o caminho completo e o nome do arquivo de um arquivo de catálogo telefônico (PBK). Se esse parâmetro for NULL, a função usará o arquivo de catálogo telefônico padrão atual. O arquivo de agendamento telefônico padrão é aquele selecionado pelo usuário na folha de propriedades Preferências do Usuário da caixa de diálogo Rede Discada .
[in] lpszEntry
Ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome da entrada do catálogo telefônico para discar.
[in] lpszPhoneNumber
Ponteiro para uma cadeia de caracteres terminada em nulo que especifica um número de telefone que substitui os números armazenados na entrada do catálogo telefônico. Se esse parâmetro for NULL, RasDialDlg usará os números na entrada do catálogo telefônico.
[in] lpInfo
Ponteiro para uma estrutura RASDIALDLG que especifica parâmetros adicionais de entrada e saída. O membro dwSize dessa estrutura deve especificar sizeof(RASDIALDLG). Se ocorrer um erro, o membro dwError retornará um código de erro; caso contrário, ele retornará zero.
Retornar valor
Se a função estabelecer uma conexão RAS, o valor retornado será TRUE. Caso contrário, a função deverá retornar FALSE.
Se ocorrer um erro, RasDialDlg deverá definir o membro dwError da estrutura RASDIALDLG como um valor de Códigos de Erro de Roteamento e Acesso Remoto ou Winerror.h.
Comentários
A função RasDialDlg exibe uma série de caixas de diálogo semelhantes às caixas de diálogo que a caixa de diálogo main caixa de diálogo Rede Discada exibe quando o usuário seleciona o botão Discar. Use a função RasDialDlg para exibir uma interface do usuário padrão para uma operação de conexão sem apresentar a caixa de diálogo main catálogo telefônico. Por exemplo, o serviço de AutoDial ras usa essa função para estabelecer uma conexão usando a entrada do catálogo telefônico associada a um endereço remoto.
A função RasDialDlg exibe caixas de diálogo durante a operação de conexão para fornecer comentários ao usuário sobre o progresso da operação. Por exemplo, as caixas de diálogo podem indicar quando a operação está discando, quando está autenticando as credenciais do usuário no servidor remoto e assim por diante. As caixas de diálogo também fornecem um botão Cancelar para o usuário encerrar a operação.
RasDialDlg retorna quando a conexão é estabelecida ou quando o usuário cancela a operação.
O código de exemplo a seguir disca a entrada no catálogo telefônico padrão especificado pela variável lpszEntry.
#include <windows.h>
#include <stdio.h>
#include "ras.h"
#include "rasdlg.h"
#include <tchar.h>
#include "strsafe.h"
#define PHONE_NUMBER_LENGTH 7
#define DEVICE_NAME_LENGTH 5
#define DEVICE_TYPE_LENGTH 5
DWORD __cdecl wmain(){
DWORD dwError = ERROR_SUCCESS;
BOOL nRet = TRUE;
LPTSTR lpszEntry = L"EntryName";
LPTSTR lpszphonenumber = L"5555555";
LPTSTR lpszdevicename = L"Modem";
LPTSTR lpszdevicetype = RASDT_Modem;
// Allocate heap memory and initialize RASENTRY structure
LPRASENTRY lpentry = (LPRASENTRY)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(RASENTRY));
// Allocate heap memory and initialize RASDIALDLG structure
LPRASDIALDLG lpInfo = (LPRASDIALDLG) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(RASDIALDLG));
if (lpentry == NULL || lpInfo == NULL){
wprintf(L"HeapAlloc failed");
HeapFree(GetProcessHeap(), 0, lpentry);
HeapFree(GetProcessHeap(), 0, lpInfo);
return 0;
}
// The RASDIALDLG and RASENTRY dwSize members have to be initialized or the RasDialDlg()
// RasSetEntryProperties() APIs will fail below.
lpInfo->dwSize = sizeof(RASDIALDLG);
lpentry->dwSize = sizeof(RASENTRY);
lpentry->dwFramingProtocol = RASFP_Ppp;
lpentry->dwfOptions = 0;
lpentry->dwType = RASFP_Ppp;
dwError |= StringCchCopyN(lpentry->szLocalPhoneNumber, RAS_MaxPhoneNumber, lpszphonenumber, PHONE_NUMBER_LENGTH);
dwError |= StringCchCopyN(lpentry->szDeviceName, RAS_MaxDeviceName, lpszdevicename, DEVICE_NAME_LENGTH);
dwError |= StringCchCopyN(lpentry->szDeviceType, RAS_MaxDeviceType, lpszdevicetype, DEVICE_TYPE_LENGTH);
if (dwError != S_OK){
wprintf(L"Structure initialization failed: Error = %d\n", dwError);
HeapFree(GetProcessHeap(), 0, lpentry);
HeapFree(GetProcessHeap(), 0, lpInfo);
return 0;
}
// Validate the new entry's name
dwError = RasValidateEntryName(NULL, lpszEntry);
if (dwError != ERROR_SUCCESS){
wprintf(L"RasValidateEntryName failed: Error = %d\n", dwError);
HeapFree(GetProcessHeap(), 0, lpentry);
HeapFree(GetProcessHeap(), 0, lpInfo);
return 0;
}
// Create and set the new entry's properties
dwError = RasSetEntryProperties(NULL, lpszEntry, lpentry, lpentry->dwSize, NULL, 0);
if (dwError != ERROR_SUCCESS){
wprintf(L"RasSetEntryProperties failed: Error = %d\n", dwError);
HeapFree(GetProcessHeap(), 0, lpentry);
HeapFree(GetProcessHeap(), 0, lpInfo);
return 0;
}
// Connect using the new entry
nRet = RasDialDlg(NULL, lpszEntry, NULL, lpInfo);
if (nRet != TRUE){
wprintf(L"RasDialDlg failed: Error = %d\n", lpInfo->dwError);
}
// Clean up: delete the new entry
dwError = RasDeleteEntry(NULL, lpszEntry);
if (dwError != ERROR_SUCCESS){
wprintf(L"RasDeleteEntry failed: Error = %d\n", dwError);
}
HeapFree(GetProcessHeap(), 0, lpentry);
HeapFree(GetProcessHeap(), 0, lpInfo);
return 0;
}
Observação
O cabeçalho rasdlg.h define RasDialDlg como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | rasdlg.h |
Biblioteca | Rasdlg.lib |
DLL | Rasdlg.dll |