Вверх ↑
Ответов: 1925
Рейтинг: 172
#1: 2018-07-24 22:54:39 ЛС | профиль | цитата
Добавлено:
*doEnumActive=Перечисляет все активные Internet соединения в Windows
*doHangUpByHandle=Обрывает связь соединения, чей Handle передан в потоке

Это мне понадобилось для того, чтобы обрывать соединение, установленное не через компонент. Стандартный метод doHandUp работает, только если подключение было через doDial, т.к. там сохраняется Handle соединения.
doEnumActive выдаёт Handle активных соединений, так что можно вырубить любое соединение.

В pas все правки помечены, просьба - проверить на разных ОС (XP SP3 - норм) и глянуть код - может, чего недоглядел.

Вообще, вызывает вопросы структура TRasConn, т.к. брал описание отсюда http://www.delphimaster.net/view/1-1105885062, но вот этот кусок кода не работает (ошибка 632, если смотреть отладку):

{$IFDEF WINVER_0x400_OR_GREATER}
szDeviceType: packed array[0..RAS_MaxDeviceType] of AnsiChar;
szDeviceName: packed array[0..RAS_MaxDeviceName] of AnsiChar;
{$ENDIF}
А работать начинает, только если убрать директивы.
Да и вообще, структура не полностью совпадает с MSDN (https://msdn.microsoft.com/en-us/library/windows/desktop/aa376725(v=vs.85).aspx), боюсь, не будет работать на старших версиях Win.

Вот SHA:

Add(ModemDial,4494975,441,203)
{
AutoClose=1
Point(doEnumActive)
Point(doHangUpByHandle)
Point(onEnumActive)
link(onEnumActive,11692024:doEvent1,[])
}
Add(Button,762503,266,224)
{
Left=75
Top=15
Caption="enum"
link(onClick,7256587:doEvent1,[])
}
Add(Message,6653944,609,266)
{
}
Add(MT_Array,15262784,560,217)
{
}
Add(ArrayEnum,2816248,560,266)
{
link(onItem,6653944:doMessage,[])
link(Array,15262784:Array,[])
}
Add(Hub,11692024,504,217)
{
OutCount=3
link(onEvent1,15262784:doLoad,[])
link(onEvent2,2816248:doEnum,[(539,230)(539,272)])
link(onEvent3,7882730:doValue,[(536,237)(536,335)])
}
Add(MT_MultiMem,7882730,553,329)
{
Count=7
link(onData,15138920:doString,[(617,335)(617,370)(541,370)(541,405)])
}
Add(FormatStr,15138920,553,399)
{
Mask="%1 (%2)"
link(onFString,12318385:doAdd,[])
link(Str1,7882730:Value1,[])
link(Str2,7882730:Value7,[(566,380)(601,380)])
}
Add(ListBox,12318385,637,399)
{
Left=20
Top=60
Width=135
Height=185
Point(onDblClick)
Point(String)
link(onDblClick,4243876:doSearch,[])
}
Add(BlockFind,4243876,693,413)
{
IncludeBlock=1
StartBlock="("
EndBlock=")"
link(onSearch,8077717:In,[])
link(Text,12318385:String,[(699,401)(681,401)(681,456)(664,456)])
}
Add(LineBreak,2834256,399,231)
{
link(Out,4494975:doHangUpByHandle,[])
Primary=[8077717,336,182]
}
Add(Hub,7256587,308,224)
{
link(onEvent1,10751507:In,[])
link(onEvent2,4494975:doEnumActive,[(382,237)(382,230)])
}
Add(LineBreak,3009073,595,406)
{
link(Out,12318385:doClear,[])
Primary=[10751507,-259,-182]
}

--- Добавлено в 2018-07-24 22:56:26

Вот файлы
карма: 9
0
файлы: 1ModemDial 1.1.rar [4.3KB] [395]
Редактировалось 1 раз(а), последний 2018-07-24 22:56:26