Форум: "WinAPI";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
ВнизRAS.ConnectionStatus Найти похожие ветки
← →
yegor (2004-07-18 13:21) [0]Есть ли уже что-нибудь готовое для перевода статуса соединения в осмысленную строку? Что-нибудь наподобие RasGetErrorString. Порылся по MSDN-у и гуглу - пока не нашёл.
← →
Ihor Osov'yak © (2004-07-18 14:52) [1]хм. RAS.ConnectionStatus - это откуда, из каких парафий?
Ps. Если имелось ввиду структура RASCONNSTATUS, декларированная в Ras.h,
то такм всего два энумератора, имеющих по два значения, и два массива символов, говорящих об имени девайса и его типе.. Символы и так осмисленные, а для енумератов - case рулит. Или if. Учитывая всего три возможных состояния (подключено, отключено, или ошибка при получении инфо, тем более, что ошибок может быть всего две)
var
status:RASCONNSTATUS;
readMe: string;
...
readMe := "что-то не то.. ";
case status.dwError of
0: case status.RASCONNSTATE of
RASCS_Connected: readMe := "соединились";
RASCS_Disconnected: readMe := "увы, лето прошло-пролетело и осень настала..";
end;
ERROR_NOT_ENOUGH_MEMORY: readMe := " что-то с памятью моею сталось..";
ERROR_INVALID_HANDLE: readMe := "Вы, это, не надо... всякую дребедень сунуть.. ";
end;
← →
yegor (2004-07-18 15:19) [2]>имеющих по два значения
С dwError проблем нет. Есть RasGetErrorString. А вот со статусом есть. Там ещё куча промежуточных значений типа
RASCS_OpenPort = 0;
RASCS_PortOpened = 1;
RASCS_ConnectDevice = 2;
RASCS_DeviceConnected = 3;
RASCS_AllDevicesConnected = 4;
RASCS_Authenticate = 5;
RASCS_AuthNotify = 6;
и т. д.
Мне не сложно написать вывод имени константы или даже самому нарисовать описания. Хочется чего-нибудь уже готового, стандартного. :-)
← →
yegor (2004-07-18 15:23) [3]PS. Кстати dwError - не совсем то, что Вы пишете. Это не то же, что результат вызова WinAPI функции, а например, может быть сообщением о ненайденном устройстве или о провале авторизации, ещё там что...
← →
Ihor Osov'yak © (2004-07-18 15:52) [4]блин, так нужно же конкретно говорить, в каком контексте RASCONNSTATUS рассматривается.
Я привел пример в контексте RasGetConnectionStatus. если вам нужно в контексте callback-ов для ассинхроного RasDial - то так и нужно говорить. А есть еще и другие контексты. Там статусов допустимых немгого больше. Но тоже энумераторы.
Стандартного средства получения строки, кажется, нет.
В мсдн есть подробное описание энумераторвр, можно кейсы рисовать..
Несколько лет мне встречалось что-то подобное на нижеследующее (ссылку на оригинал не имею, c первого взгляда очень похоже на правду):function GetRasCSString(State: integer): String;
var
S:string;
begin
S:="";
case State of
RASCS_OpenPort:
S:="Открытие порта";
RASCS_PortOpened:
S:="Порт открыт";
RASCS_ConnectDevice:
S:="Дозвон по текущему номеру";
RASCS_DeviceConnected:
S:="Устройство соединилось";
RASCS_AllDevicesConnected:
S:="Все устройства соединились";
RASCS_Authenticate:
S:="Начало опознания";
RASCS_AuthNotify:
S:="Установление подлинности";
RASCS_AuthRetry:
S:="Повторение установления подлинности";
RASCS_AuthCallback:
S:="Повторный вызов установления подлинности";
RASCS_AuthChangePassword:
S:="Изменение пароля установления подлинности";
RASCS_AuthProject:
S:="Проект установления подлинности";
RASCS_AuthLinkSpeed:
S:="Быстродействие связи установление подлинности";
RASCS_AuthAck:
S:="Подтвеждение установления подлинности";
RASCS_ReAuthenticate:
S:="Повторное опознание и установление подлинности";
RASCS_Authenticated:
S:="Опознанный пароль";
RASCS_PrepareForCallback:
S:="Подготовка к повторному вызову";
RASCS_WaitForModemReset:
S:="Ожидание сброса модема";
RASCS_WaitForCallback:
S:="Ожидание повторного вызова";
RASCS_Projected:
S:="Запроектированный";
RASCS_StartAuthentication:
S:="Начало установления подлинности";
RASCS_CallbackComplete:
S:=" Полный повторный вызов";
RASCS_LogonNetwork:
S:="Регистрация в сети";
RASCS_Interactive:
S:="Интерактивный";
RASCS_RetryAuthentication:
S:="Повтор установления подлинности";
RASCS_CallbackSetByCaller:
S:="Повторный вызов, установленный к вызывающему оператору";
RASCS_PasswordExpired:
S:="Пароль истек";
RASCS_Connected:
S:="Соединение";
RASCS_Disconnected:
S:="Разъединение";
end;
Result:=S;
end;
← →
yegor (2004-07-18 16:54) [5]Ладно, спасибо за русские описания сообщений. Думаю, тема закрыта. :-)
P.S. Advanced Dialer выводит в своей консольке сообщения о статусе на английском, значит, сам придумывает. :-)
← →
Ihor Osov'yak © (2004-07-18 17:39) [6]> Advanced Dialer выводит в своей консольке сообщения о статусе на английском, значит, сам придумывает.
Может и так. А может и нет. Проанализируйте, что он там импортирует, в частности из rasapi32.dll, может что интересное и обнаружите. Если обнаружите - сюда сообщите. Также можете сделать поиск соотв. строк в бинарике Advanced Dialer, если они там будут присутствовать - тогда и импорта анализировать не нужно.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.033 c