Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 3 апреля!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Что нужно давать WSAAsyncSelect в качестве параметра handle

Автор: Nomadic

Что нужно давать WSAAsyncSelect в качестве параметра handle, если тот запускается и используется в dll (init), и никакой формы (у которой можно было бы взять этот handle) в этой dll не создается?


 const
   WM_ASYNCSELECT = WM_USER + 0;
 
 type
   TNetConnectionsManager = class(TObject)
   protected
     FWndHandle: HWND;
     procedure WndProc(var MsgRec: TMessage);
     ...
   end;
 
 constructor TNetConnectionsManager.Create
 begin
   inherited Create;
   FWndHandle := AllocateHWnd(WndProc);
   ...
 end;
 
 destructor TNetConnectionsManager.Destroy;
 begin
   ...
     if FWndHandle <> 0 then
     DeallocateHWnd(FWndHandle);
   inherited Destroy;
 end;
 
 procedure TNetConnectionsManeger.WndProc(var MsgRec: TMessage);
 begin
   with MsgRec do
     if Msg = WM_ASYNCSELECT then
       WMAsyncSelect(MsgRec)
     else
       DefWindowProc(FWndHandle, Msg, wParam, lParam);
 end;
 

Hо pекомендую посмотpеть WinSock2, в котоpом можно:


 WSAEventSelect( FSocket, FEventHandle, FD_READ or FD_CLOSE );
 WSAWaitForMultipleEvents( ... );
 WSAEnumNetworkEvents( FSocket, FEventHandle, lpNetWorkEvents );
 

То есть, обойтись без окон и без очеpеди сообщений windows, а заодно иметь возможность pаботать и с IPX/SPX, и с netbios.




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS