К списку форумов К списку вопросов
Про Dual-Up...
wishmaster
09.04.2004 - 10:30
Подкажите как можно получить хендел соединения которое установленно сторонней программой, т.е. моя прога выдает что порт уже открыт как мне его закрыть.
SBoyko
1 - 09.04.2004 - 11:00
Может Dial-up?
Хендл соединения - это что такое?
Если "прога выдает что порт уже открыт" почему она его не может закрыть?
Big Duck
2 - 09.04.2004 - 11:03
Вот кусок кода использующий RasApi (на фоксе правда, но это не важно) творчески переработав можно на дэлфи переписать.
cHrasConn=DoubleWordSize(412)+;
DoubleWordSize(0)+;
padr(chr(0), 256+1)+;
padr(chr(0), 16+1)+;
padr(chr(0), 128+1)+" "
maxI = 10 && 10 -достаточное колличество подключений (а вооще max -256)
dime M(maxI)
for I = 1 to maxI
  M(I) = cHrasConn
endfor
nSizeH = 412 * maxI && 412 -длинна записи cHrasConn
nCountH = 0
nRes = RasEnumConnections(@M,@nSizeH,@nCountH) && Список всех Connect
if nRes # 0
  Message_Error(nRes,'RasEnumConnections')
else
  for I=1 to nCountH && nCountH -кол.актив Connect из RasEnumConnection
    nConn = IntegerWordSize(substr(M(I),5,4))
    nRes = RasHangUp(nConn)
      wait window at 20,60 timeout(1)'Отключение:'+alltrim(substr(M(I),9,256))
    if nRes # 0
      Message_Error(nRes,'RasGetSubEntryHandle')
    endif
  endfor
endif
************************* Процедура конвертации числа с INTEGER в DWORD
procedure DoubleWordSize
parameters Integer_word_size
private I,Double_word_size
Double_word_size = ''
FOR I = 1 TO 4
Double_word_size = Double_word_size + CHR(Integer_word_size % 256)
Integer_word_size = INT(Integer_word_size / 256)
endfor
RETURN Double_word_size
Big Duck
3 - 09.04.2004 - 11:04
************************ Процедура конвертации числа с DWORD в INTEGER
procedure IntegerWordSize
parameters Double_word_size
private I,Integer_word_size
  Integer_word_size = 0
  for I = 1 to 4 Integer_word_size=Integer_word_size+256**(I-1)*asc(substr(Double_word_size,I,1))
  endfor
RETURN Integer_word_size
*
*********************************** Процедура вывода сообщения ошибки
procedure Message_Error
parameters pnError,pmError
  cError=space(256)
  if !empty(RasGetErrorString(pnError,@cError,len(cError)))
    messagebox('Неизвестная ошибка',16,'Ошибка '+pmError+' '+str(pnError))
  else
    messagebox(alltrim(cError),16,'Ошибка '+pmError+' '+str(pnError))
  endif
wishmaster
4 - 09.04.2004 - 11:15
Да в заголовке очепятка, звыняйте...
Освобождаю так: RasHangUp(hRas);
Но если ранее соединение устанавливалось и небыло коректно завершено то ошибка вылезает, хотя соединение не активно.
А получить хочу параметр hRas который указывает на конкретное соединение.
Прогу тестирую на W98

К списку вопросов на форуме Программирование

>>