Что нового

[Сеть, интернет] Как вывести полученную капчу в GUI

phozik

Новичок
Сообщения
3
Репутация
0
Хочу вывести полученную капчу в GUI
Капча находится по ссылке:
Код:
http://www.urban-rivals.com/sub/captcha/button.php
Пытаюсь вывести полученный результат вот так:
Код:
$link = _WinHttpSimpleRequest($hConnect, 'GET', "/sub/captcha/button.php")
$Pic1 = GUICtrlCreatePic("", 656, 296, 110, 20)
GUICtrlSetImage($Pic1, $link)


Что я делаю не правильно? И как правильно это изображение вывести в GUI?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.






Добавлено:
Сообщение автоматически объединено:

phozik,
Попробуйте примерно так.
Код:
#include <GDIPlus.au3>
#include <Memory.au3>
#include <WinAPIEx.au3>;http://autoit-script.ru/index.php/topic,47.0.html


Global Const $STM_SETIMAGE = 0x0172
Global Const $STM_GETIMAGE = 0x0173
Global $hForm, $nPic, $hPic, $hBitmap, $hObj, $hImage, $hStream, $bData, $hData, $pData, $tData, $iWidth, $iHeight, $iLenght

Global $sLinks = 'http://www.urban-rivals.com/sub/captcha/button.php'
HttpSetProxy(1)
$bData = InetRead($sLinks, 17)
If @error Then Exit 13
$iLenght = BinaryLen($bData)
If Not $iLenght Then Exit
$hData = _MemGlobalAlloc($iLenght, 2)
$pData = _MemGlobalLock($hData)
$tData = DllStructCreate('byte[' & $iLenght & ']', $pData)
DllStructSetData($tData, 1, $bData)
_MemGlobalUnlock($hData)
$hStream = _WinAPI_CreateStreamOnHGlobal($hData)
_GDIPlus_Startup()
$hImage = _GDIPlus_BitmapCreateFromStream($hStream)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$iWidth = 100;_GDIPlus_ImageGetWidth($hImage)
$iHeight = 20;_GDIPlus_ImageGetHeight($hImage)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()

$hForm = GUICreate('captcha', $iWidth * 2, $iHeight * 2)
$nPic = GUICtrlCreatePic('', $iWidth / 2, $iHeight / 2)
$hPic = GUICtrlGetHandle($nPic)

_SendMessage($hPic, $STM_SETIMAGE, 0, $hBitmap)
$hObj = _SendMessage($hPic, $STM_GETIMAGE)
If $hObj <> $hBitmap Then
	_WinAPI_DeleteObject($hBitmap)
EndIf

GUISetState()

Do
Until GUIGetMsg() = -3

Func _GDIPlus_BitmapCreateFromStream($hStream)
	Local $aResult = DllCall($ghGDIPDll, 'uint', 'GdipCreateBitmapFromStream', 'ptr', $hStream, 'int*', 0)
	If @error Then
		Return SetError(@error, @extended, 0)
	EndIf
	Return $aResult[2]
EndFunc   ;==>_GDIPlus_BitmapCreateFromStream
 
Автор
P

phozik

Новичок
Сообщения
3
Репутация
0
Спасибо большое! У меня получилось!
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Ну да, сначала можно InetGet или WinHttpRequest.5.1 загрузить а потом вывести.
 
Верх