img
00:00
imgDRKB online - Использование WSAAsyncSelect в DLL
imgimgimg
  Общие вопросы
  Delphi IDE, компиллятор, отладчик, редактор
  Язык программирования Дельфи
  VCL
  Системные функции и WinAPI
  Базы данных
  Работа с файловой системой
  Репортинг, работа с принтером
  Работа с сетью, интернетом, протоколами
  Общие вопросы работы в сети, домены, workgroups, workstations
  Компоненты Indy
  Протоколы
  Работа с Email
  Создание Web приложений
  Работа с IE, интерфейсами WebBrowser
  Работа с HTML, клиентскими скриптами
  Работа с сокетами
  CrtSock - модуль для работы с сокетами в Delphi32
  Что такое сокет?
  Как передать картинку по сети через ServerSocket?
  Как запросить страницу с сайта?
  Посылка Raw IP-пакетов
  Как послать широковещательный UDP пакет?
  Отправка файлов при помощи TClientSocket/TServerSocket
  Как отправить веб форму на сервер?
  Использование компонента TServerSocket
  Программирование серверов на основе сокетов в Дельфи
  Определить, занят ли порт сокета
  Где TServerSocket и TClientSocket в Delphi 7?
  Использование WSAAsyncSelect в DLL
  do an application loader with TCP?
  Работа с интернетом
  Работа с графикой и мультимедиа
  Математика, алгоритмы
  Форматы файлов, данных. Конвертация форматов
  ActiveX, COM, DCOM, MIDAS, CORBA, интерфейсы, OLE, DDE
  Разработка приложений
  Kylix
  Delphi.Net
  Развлечения
  
  [drkb=3411] Комментариев: 0 
Использование WSAAsyncSelect в DLL


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

delphi
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.
Свой winsock2.pas я вчеpа кинул в RU.DELPHI.DB, если кто имеет такой из дpугих источников - свистните погpомче.

Автор: Alex Konshin
alexk@msmt.spb.su
(2:5030/217)


@Drkb::03556
Автор: StayAtHome
Взято с Vingrad.ru http://forum.vingrad.ru
Количество статей: 4366
 
Вход
Имя:
Пароль:
Запомнить
Регистрация Забыли пароль?
Мини-чат :)
Необходима регистрация
Архив мини-чата
19-11-2018 09:28
antonn
Ну и как успехи, написал? smiley
18-11-2018 09:05
Programmer
2 месяца оффлайн.
27-09-2018 18:45
Programmer
привет всем, я создаю свой сайт-ос
18-06-2018 01:11
m_j
Антоха, прувэт!
11-06-2018 23:21
Broyck
Можно ли найти откуда был запущен сайт? broyck@yandex.ru Жду обратную связь
31-05-2018 21:22
AliceGrou
да но у меня снег
22-05-2018 19:52
Programmer
уже май, готовы к лету
30-04-2018 23:32
AliceGrou
Ех щас бы в паука сыгратт
30-04-2018 23:31
AliceGrou
Точнее, а чего мы хотели
30-04-2018 23:30
AliceGrou
Ну да, а чего ты хотел?
Статистика
 СегодняВсего
Посетителей9121908504
Запросов42339305707237
Online
Пользователей0
Гостей41
imgimgimgimg
 
img
     00:00