Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
Что опять не так? »
путаешь указатели с данными
Код: Выделить весь код
$ExtraPuTTY = EnvGet("ExtraPuTTY") ; путь к программе
$thConn = DllStructCreate("ulong") ; структура описателя соединения
If $ExtraPuTTY == "" Then Exit MsgBox(16, "Script Error!", "Переменная окружения ExtraPuTTY не задана!")
$hDll = DllOpen($ExtraPuTTY & "\ExtraPuTTY.dll")
If $hDll=-1 Then Exit MsgBox(16, "Script Error!", "Файл ExtraPuTTY.DLL не найден!")

$aRet = DllCall($hDll, "int", "Connexion", _
    "str", "94.100.177.6", "ptr", DllStructGetPtr($thConn), _
    "str", "", "str", "", "int", 0, _
    "int", 0, "int", 110, _
    "int", 0, "ptr", 0 )
If @error Then MsgBox(16, "DllCall Error!", @error &":"& @extended)
$hConn = DllStructGetData($thConn, 1) ; Получаем описатель соединения
ConsoleWrite("Результат выполнения ф-ции Connexion = "& $aRet[0] &@CRLF)

$iMax = 1024                                          ; размер буфера
$tBuf = DllStructCreate("char["& $iMax &"]")          ; буфер
$tpBuf = DllStructCreate("ptr")                       ; указатель на буфер
DllStructSetData($tpBuf, 1, DllStructGetPtr($tBuf))   ; устанавливаем указатель

$aRet = DllCall($hDll, "int", "SendRcvData", _
    "ulong", $hConn, "str", "USER ivan@mybox.ru", _
    "str", "", "str", "", "long", 1000, _
    "int", DllStructGetPtr($tpBuf), "int", $iMax, _
    "int", 0)
ConsoleWrite("Результат выполнения ф-ции SendRcvData = "& $aRet[0] &@CRLF)
ConsoleWrite("Содержимое буфера:"& DllStructGetData($tBuf,1) &@CRLF)

; Закрываем соединение
If $hConn <> 0 Then
    DllCall($hDll, "int", "CloseConnexion", "ulong", $hConn)
EndIf
З.Ы. в комплекте идет скомпиленый пример "SampleConnexion.exe" - полезная тулза для ручной установки соединения и проверки всех TELNET-команд
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:17, 07-08-2009 | #12