Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

RasDial

2.1K
28 января 2003 года
BOSS
19 / / 28.01.2003
Люди!! :o Пытаюсь звонилку сотворить. Использовал этот пример:

#include <ras.h>
#include <raserror.h>
...........
RASDIALPARAMS rdParams; // Параметры для RAS
HRASCONN hRasConn; // Информация о соединении
..............
//----------------------------------------------------------------------
// Удаленный доступ
bool TForm1::DialUp(TObject *Sender)
{
rdParams.dwSize = sizeof(RASDIALPARAMS);
rdParams.szEntryName[0] = '\0';
lstrcpy( rdParams.szPhoneNumber, Phone.c_str());
rdParams.szCallbackNumber[0] = '\0';
lstrcpy( rdParams.szUserName, LoginI.c_str());
lstrcpy( rdParams.szPassword, Password.c_str());
rdParams.szDomain[0] = '\0';
hRasConn = NULL;
DWORD dwRet = RasDial( NULL, NULL, &rdParams, 0L, NULL, &hRasConn );
if ( dwRet == 0 )
return true;

char szBuf[256];
if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 )
wsprintf( (LPSTR)szBuf, "Undefined RAS Dial Error (%ld).", dwRet );
RasHangUp( hRasConn );
MessageDlg((LPSTR)szBuf, mtError, TMsgDlgButtons() << mbOK, 0);
return false;
}
//-------------------------------------------.................
// набрать номер
if (!DialUp(this)) {
ConnectBar->SimpleText = "Соединение НЕ установлено";
return;
}

// Проверить состояние
RASCONNSTATUS rs;
rs.dwSize = sizeof(RASCONNSTATUS);
RasGetConnectStatus(hRasConn, &rs);
if (rs.rasconnstate == RASCS_Connected)
ConnectBar->SimpleText = "Соединение установлено";
...............
// Разорвать связь
RasHangUp(hRasConn);
..............


И все компилится но RasDial возвращает ошибку 610 - неверно задан буфер. Подскажите вчем дело и как исправить а то я совсем ничего не понимаю... :D
358
28 января 2003 года
moonmike
423 / / 18.10.2002
Скорее всего дело в том что:
char szBuff[256];
а надо
char *szBuff[256];
так как тебе в функцию надо LPSTR(Long Pointer to String) передать
2.1K
28 января 2003 года
BOSS
19 / / 28.01.2003
Цитата:
Originally posted by moonmike
Скорее всего дело в том что:
char szBuff[256];
а надо
char *szBuff[256];
так как тебе в функцию надо LPSTR(Long Pointer to String) передать



Нет... к сожалению ошибка выпадает до определения
char *szBuff[256]. (даже так выдает ошибку) :)

ошибка 610 - как результат выполнения функции RasDial:
DWORD dwRet = RasDial( NULL, NULL, &rdParams, 0L, NULL, &hRasConn );

просто дальше char *szBuff[256] это текстовое определение ошибки... :)


Вот так будет правильно?

rdParams.szEntryName[0] = '\0';
lstrcpy( rdParams.szPhoneNumber, "9955555");
rdParams.szCallbackNumber[0] = '\0';
lstrcpy( rdParams.szUserName, "guest");
lstrcpy( rdParams.szPassword, "mtu");
rdParams.szDomain[0] = '\0';


можетгденить тут ошибка?
:???:

1.9K
28 января 2003 года
ILS
100 / / 28.01.2003
Цитата:
Originally posted by BOSS


Нет... к сожалению ошибка выпадает до определения
char *szBuff[256]. (даже так выдает ошибку) :)

ошибка 610 - как результат выполнения функции RasDial:
DWORD dwRet = RasDial( NULL, NULL, &rdParams, 0L, NULL, &hRasConn );

просто дальше char *szBuff[256] это текстовое определение ошибки... :)


Вот так будет правильно?

rdParams.szEntryName[0] = '\0';
lstrcpy( rdParams.szPhoneNumber, "9955555");
rdParams.szCallbackNumber[0] = '\0';
lstrcpy( rdParams.szUserName, "guest");
lstrcpy( rdParams.szPassword, "mtu");
rdParams.szDomain[0] = '\0';


можетгденить тут ошибка?
:???:

1.9K
28 января 2003 года
ILS
100 / / 28.01.2003
Все гораздо глубже (в файле ras.h) не корректно определяется соответствие версии виндов с размерами структур. Происходит это для 98-ых, в ХР все будет работать.
Один из способов обхода (не помню уж где нашел):
//-----------------------------------------------
#define OLDWINVER WINVER
#undef WINVER
#define WINVER 0x400
//"насильно" подсовываем номер версии
#include <ras.h>
#include <raserror.h>
// include any other RAS headers you need
#undef WINVER
#define WINVER OLDWINVER
#undef OLDWINVER
//-------------------------------------------------
PS Sorry for prev-s message ;-(
2.1K
29 января 2003 года
BOSS
19 / / 28.01.2003
РАБОТАЕТ!!!! УРАА!!! Спасибо большое! :D
Конечно придется на поток сажать, а то тормозит всю прогу но зато работает!
2.1K
31 января 2003 года
BOSS
19 / / 28.01.2003
:sad: опять проблема блин. если дозваниваюсь по примеру указанному вначеле, то почемуто не могу зайти на сайты не провайдера. какбудто по гостевому зашел. (но это не так) Можь подскажете в чем глюк? :-?
1.9K
31 января 2003 года
ILS
100 / / 28.01.2003
Думается, RAS тут не при чем.
Адрес-то вообще ping-уется ?
2.1K
01 февраля 2003 года
BOSS
19 / / 28.01.2003
Цитата:
Originally posted by ILS
Думается, RAS тут не при чем.
Адрес-то вообще ping-уется ?



Как я могу себя пропинговать то?? :(

может не все настройки были указаны?

rdParams.szEntryName[0] = '\0';
rdParams.szDomain[0] = '\0';

сюда точно эти значения должны быть вставлены? :-?

1.9K
03 февраля 2003 года
ILS
100 / / 28.01.2003
rdParams.szEntryName[0] = '\0';
rdParams.szDomain[0] = '\0';

сюда точно эти значения должны быть вставлены? :-? [/QUOTE]
szEntryName - в твоем случае берется по умолчанию.
я у себя перебираю все зарегестрированные (так что разницы быть не должно)
посмотри на мою библтотечную функцию - м.б. поможет...
//---------------------------------------------------------------------------
int __fastcall ConnectToName(AnsiString User,AnsiString Pswrd,AnsiString cnct)
{
RASDIALPARAMS rdp;
setmem(&rdp.dwSize,sizeof(RASDIALPARAMS),0);
rdp.dwSize=sizeof(RASDIALPARAMS);
strcpy( rdp.szEntryName, cnct .c_str());//,"Tюхфшэхэшх");
strcpy( rdp.szUserName, User .c_str());
strcpy( rdp.szPassword, Pswrd.c_str());
////
HRASCONN hRas=NULL;
DWORD er=RasDial(
NULL ,// LPRASDIALEXTENSIONS lpRasDialExtensions, // pointer to function extensions data
NULL ,// LPTSTR lpszPhonebook, // pointer to full path and filename of phone-book file
&rdp ,// LPRASDIALPARAMS lpRasDialParams, // pointer to calling parameters data
NULL ,// DWORD dwNotifierType, // specifies type of RasDial event handler
NULL ,// LPVOID lpvNotifier, // specifies a handler for RasDial events
// Zaglushka ,// LPVOID lpvNotifier, // specifies a handler for RasDial events
&hRas // LPHRASCONN lphRasConn // pointer to variable to receive connection handle
);
if(er){ if(hRas)
RasHangUp(hRas);
/*
An application should not call RasHangUp and then immediately exit.
The connection state machine needs time to properly terminate. If the system
prematurely terminates the state machine, the state machine may fail
to properly close a port, leaving the port in an inconsistent state.
A simple way to avoid this problem is to call Sleep(3000) after returning
from RasHangUp; after that pause, the application can exit. A more
responsive way to avoid the problem is, after returning from RasHangUp,
to call RasGetConnectStatus(hrasconn) and Sleep(0) in a loop until
RasGetConnectStatus returns ERROR_INVALID_HANDLE.
*/ RASCONNSTATUS rStat;
rStat.dwSize=sizeof(rStat);
while( RasGetConnectStatus(hRas, &rStat)!=ERROR_INVALID_HANDLE)
Sleep(0);
}
return er;
}
2.1K
26 июня 2003 года
BOSS
19 / / 28.01.2003
под 2000, Me, XP пашет...
1.9K
28 июня 2003 года
ILS
100 / / 28.01.2003
Цитата:
Originally posted by BOSS
под 2000, Me, XP пашет...


Честно говорю - не ковырял я твоего примера (вообще удивился, что тема все жива). Скорее всего, в тот самый блок обхода надо приинклюдить еще файл.
К примеру, если из упомянутого места:
#include <ras.h>
#include <raserror.h>
удалить <raserror.h>, то функция сообщения об ошибке будет отрыгаться тем же самым сообщением.
Так что - смотри в каком файле у тебя описана функция и вставляй его за #include <raserror.h>.
Думаю - заработает

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог