![]() |
![]() |
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 |