Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];

Вниз

Как отловить WM_RASDIALEVENT?   Найти похожие ветки 

 
Separator ©   (2005-01-25 15:57) [0]


const
WM_RASDIALEVENT = $CCCD;

TfrmMain = class(TForm)
private
    procedure RasDialFunc(var Message: TMessage); message WM_RASDIALEVENT;


Ругается так: Illegal message method index


 
begin...end ©   (2005-01-25 16:04) [1]

> Separator ©   (25.01.05 15:57)

Из справки (Message methods):

A message method is created by including the message directive in a method declaration, followed by an integer constant between 1 and 49151 which specifies the message ID.


 
Separator ©   (2005-01-25 16:10) [2]

Это я понял, но как мне тогда быть?


 
begin...end ©   (2005-01-25 16:11) [3]

> [2] Separator ©   (25.01.05 16:10)

Уменьшить константу WM_RASDIALEVENT.


 
Separator ©   (2005-01-25 16:27) [4]

Но не я ведь её придумал. Я вообще использую модуль RAS, мне вызвать дозвон. Для этого я пишу так:

function TfrmMain.Dial;
var
   Err: Longint;
   RDParams: TRasDialParams;
begin
   Result:= false;
   RDParams.dwSize:= SizeOf(TRasDialParams);
   StringToArray(Name, RDParams.szEntryName);
   StringToArray(IntToStr(edNumber.AsInteger), RDParams.szPhoneNumber);
   StringToArray("", RDParams.szCallbackNumber);
   StringToArray(edUser.Text, RDParams.szUserName);
   StringToArray(edPswd.Text, RDParams.szPassword);
   StringToArray("", RDParams.szDomain);

   Err:= RasDial(nil, nil, RDParams, 0, @RasDialFuncF, fHRasConn);
   if Err = SUCCESS then Result:= true
end;


функция RasDial имеет такой код:

function RasDial(
   lpRasDialExt: LPRasDialExtensions;
   lpszPhoneBook: PChar;
   var params: TRasDialParams;
   dwNotifierType: Longword;
   lpNotifier: Pointer;
   var rasconn: THRasConn
   ): Longint;
begin
 if bRasAvail and (@_RasDialA <> nil) then
   Result := _RasDialA(lpRasDialExt, lpszPhoneBook, params, dwNotifierType,
     lpNotifier, rasconn)
 else
   Result := -1;
end;

В качестве параметра lpNotifier можно передать ссылку на процедуру, такого типа:

 void CALLBACK RasDialFunc(
   UINT unMSG,
   RASCONNSTATE rasconnstate,
   DWORD dwError
 );


RASCONNSTATE это просто Integer. Описываю функцию так:

function RasDialFuncF(const unMsg: UINT; const RasConnState: TRasConnState; const dwError: DWORD): Longint;


При запуске у меня вываливется окошко CPU с ошибкой Access Violation.
Что я делаю не правильно?


 
Jel ©   (2005-01-25 17:30) [5]

RasDialFuncF объяви как stdcall. Это правило касается любых callback-ов вызываемых из API.


 
Digitman ©   (2005-01-26 09:16) [6]


> Separator ©   (25.01.05 16:27) [4]
> Но не я ведь её придумал


понятно что не ты ..
но справку-то читать нужно внимательно, согласен ?

вот ты пишешь

RasDial(..., 0, @RasDialFuncF, ..);

раз этот параметр (dwNotifierType) равен нулю, значит при наступлении RAS-события будет вызываться callback-функция, адрес которой ты передал (@RasDialFuncF), т.е. никакие procedure RasDialFunc(var Message: TMessage); message WM_RASDIALEVENT; тебе вовсе не нужны



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.035 c
9-1098893371
Falcon(TFSoft)
2004-10-27 20:09
2005.02.06
Создание объектов


3-1104824144
tytus
2005-01-04 10:35
2005.02.06
Фильтрация данных.


4-1103554307
Bless
2004-12-20 17:51
2005.02.06
Как работает DefWindowProc?


4-1103123827
-=SS=-
2004-12-15 18:17
2005.02.06
Можно ли по ID просесса узнать хендл окна этого просесса ?


1-1106300737
Чапаев
2005-01-21 12:45
2005.02.06
out-параметры.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский