Что нового

Обработка HTML кода в AutoIt'e

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Как вернуть текст с кнопки? получилось только вернуть весь текст между тегом <body></body>

AutoIt:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$hForm	= GUICreate("JavaSript and AutoIt", 800, 600, -1, -1, $DS_MODALFRAME)
$HTML = WebCreate(0, 0, 800, 600)
WebSetCode($HTML, WebOpenHTML(@ScriptDir & "\AutoIt.html"))
WebSetBkColor($HTML, 0xECE9D8)
GUISetState()

MsgBox(0, '', WebCtrlGetData($HTML, 1))

While 1
	Switch WebGetMsg($HTML)
	    Case 1
		    MsgBox(0, "JavaScript", "Кнопка 1")
		Case 2
			MsgBox(0, "JavaScript", "Кнопка 2")
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd	

Func WebCreate($Left, $Top, $Width, $Height)
    Local $hObj = ObjCreate("Shell.Explorer.2")
    GUICtrlCreateObj($hObj, $Left, $Top, $Width, $Height)
	$hObj.navigate("about:blank", 0, "", "", "")
	Return $hObj
EndFunc	

Func WebGetMsg($hObj)
	If Not IsObj($hObj) Then
		Return 0
	Else
		Return $hObj.document.title()
	EndIf	
EndFunc

Func WebCtrlGetData($hObj, $iCtrl)
	Return $hObj.document.body.outerHTML
EndFunc	

Func WebSetCode($hObj, $Html)
	If Not IsObj($hObj) Then
		Return 0
	Else
        $hObj.document.Write($Html)
	    $hObj.document.close()
        Return 1
	EndIf	
EndFunc

Func WebGetCode($hObj)
	If Not IsObj($hObj) Then
		Return 0
	Else
	    Return $hObj.document.documentElement.outerHTML()
	EndIf	
EndFunc

Func WebSetBkColor($hObj, $Color)
	If Not IsObj($hObj) Then
		Return 0
	Else
	    $hObj.document.bgColor = "#" & Hex($Color, 6)
		Return 1
	EndIf	
EndFunc	

Func WebGetBkColor($hObj)
	If Not IsObj($hObj) Then
		Return 0
	Else
	    Return Binary("0x" & StringTrimLeft($hObj.document.bgColor(), 1))
	EndIf	
EndFunc	

Func WebOpenHTML($iFile)
	$hFile = FileOpen($iFile)
	$hRead = FileRead($hFile)
	FileClose($hFile)
    Return $hRead 
EndFunc

Html:
Код:
<html>                                                                             
  <head>                                                                           
    <meta http-equiv=;Content-Type' content='text/html; charset=windows-1251'>     
    <meta http-equiv='MSThemeCompatible' content='Yes'>                            
    <title>0</title>                                                               
  </head>                                                                          
                                                                                   
  <script type='text/javascript'>                                                  
  function AutoItEvent(Value)                                                      
    {                                                                              
     document.title = Value;                                                       
     setTimeout('document.title = 0;', 10);                                        
    }                                                                              
  </script>                                                                        
                                                                                   
  <body style='border:none' scroll='no' >                                          
     <input name=1 value='Кнопка 1' onclick='AutoItEvent(1);' type='button'/>  
     <input name=2 value='Кнопка 2' onclick='AutoItEvent(2);' type='button'/>  
     <input name=3 value=' Выход '  onclick='AutoItEvent(-3);' type='button'/>           	
  </body>                                                                          
</html>


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

Спасибо, разобрался.

Код:
Func WebCtrlGetData($hObj, $iCtrl)
	$oInputs = _IETagNameGetCollection($hObj, "input")
	For $oInput In $oInputs
		If (String($oInput.name) = $iCtrl) Then
			Return $oInput.Value
		EndIf
	Next	
EndFunc
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: Вернуть текст с кнопки

А зачем цикл?
Всё гораздо проще.
Код:
Func WebCtrlGetData($hObj, $iCtrl)
    $oElement = _IEGetObjByName($hObj, $iCtrl)
	Return $oElement.value
EndFunc
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Re: Вернуть текст с кнопки

Я просто соединяю AutoIt, html и JavaScript и получаю значения из html файла в скрипт AutoIt'a, а в самом AutoIt'e пишу команду на определённое значение которое вернул html
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: Вернуть текст с кнопки

Viktor1703, я понял вашу затею :smile:
Просто если элемент имеет атрибут name то легче и быстрее будет обратиться к нему по имени, нежили перебирать всю коллекцию.
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Re: Вернуть текст с кнопки

Это да, но я изменил атрибут name на id чтоб элемент в javaScript имел свой id как в AutoIt'e


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

Вот кое что уже получилось...


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

Мне дальше помощь нужна в развитии данной UDF, на счёт неё есть много вопросов, будет ли правильно, если создам тему в 'общении'?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: Вернуть текст с кнопки

Viktor1703, какова ваша основная задача?
Может лучше посмотреть в сторону HTMLayout
Кстати неплохо бы было бы написать достойную UDF под HTMLayout.dll. На офф. форуме кто-то писал под эту dll UDF, но она не внушает, неудобная в использование. :(
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Re: Вернуть текст с кнопки

Моя задача написать интерфейс на Html, JavaScript, PHP, а команды выполнять через AutoIt, из Html я возвращаю значения а вот в html с AutoIt'a, ещё не додумался как, например туже кнопку передвинуть или ещё что - то....то есть заточить Html, JavaScript, PHP под AutoIt
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: Вернуть текст с кнопки

Viktor1703 [?]
Мне дальше помощь нужна в развитии данной UDF, на счёт неё есть много вопросов, будет ли правильно, если создам тему в 'общении'?
Думаю, будет логичнее развивать эту тему, тем более она в своем разделе. Просто придумайте более осмысленный заголовок вашей теме, и переименуйте её.
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Re: Вернуть текст с кнопки

Хорошо


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

Написал ещё одну функцию которая перемещает элемент на заданные координаты:

Код:
Func WebCtrlSetPos($hObj, $id, $Left, $Top, $Width, $Height)
	$hObj.document.getElementById($id).style.Left = $Left & 'px' 
	$hObj.document.getElementById($id).style.Top = $Top & 'px' 
	$hObj.document.getElementById($id).style.width = $Width & 'px' 
	$hObj.document.getElementById($id).style.Height = $Height & 'px' 
EndFunc


И следом ещё одна

Код:
Func WebCtrlGetPos($hObj, $id)
	Local $Array[4]
	$Array[0] = StringTrimRight($hObj.document.getElementById($id).style.Left, 2)
	$Array[1] = StringTrimRight($hObj.document.getElementById($id).style.Top, 2)
	$Array[2] = StringTrimRight($hObj.document.getElementById($id).style.width, 2)
	$Array[3] = StringTrimRight($hObj.document.getElementById($id).style.Height, 2)
	Return $Array
EndFunc


И ещё

Код:
Func WebCtrlSetColor($hObj, $id, $Color)
    $hObj.document.getElementById($id).style.Color = "#" & Hex($Color, 6)
EndFunc

Func WebCtrlGetColor($hObj, $id)
	If IsObj($hObj) Then
        Return "0x" & StringTrimLeft($hObj.document.getElementById($id).style.Color, 1)
	Else
        Return 0
    EndIf		
EndFunc
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Думаю может написать UDF? Попробовал, вроде получается.

Пример:
Код:
#include <GUIConstantsEX.au3>
#include <WindowsConstants.au3>
#Include <GUIHtml.au3>

$hForm = GUICreate('_GUICtrlHtml_Create', 500, 300)
$oHtml = _GUICtrlHtml_Create(0, 0, 500, 300)
_GUICtrlHtml_SetEvent($oHtml, 'document', 'oncontextmenu', 'return false')
_GUICtrlHtml_SetGradient($oHtml, 0xFF0000, 0x000000, 1)
_GUICtrlHtml_SetScroll($oHtml, False)
_GUICtrlHtml_SetCursor($oHtml, 'hand')
_GUICtrlHtml_CreateElementImage($oHtml, 'image1', @ScriptDir & '\скриншот.jpg', 190, 60, 120, 120)
_GUICtrlHtml_CreateElementEdit($oHtml, 'Edit1', '_GUICtrlHtml_CreateEdit', 0, 250, 500, 50)
_GUICtrlHtml_SetElementGradient($oHtml, 'Edit1', 0xFFFFFF, 0x000000)
_GUICtrlHtml_SetElementColor($oHtml, 'Edit1', 0xFF0000)
_GUICtrlHtml_SetElementBorder($oHtml, 'Edit1', '2px solid #0FF00F')
_GUICtrlHtml_SetElementTransparent($oHtml, 'Edit1', Random(0, 100, 1))
GUISetState()

Sleep(1000)
_GUICtrlHtml_SetElementPos($oHtml, 'Edit1', 0, 250, 400, 50)

$iPos = _GUICtrlHtml_GetElementPos($oHtml, 'Edit1')
MsgBox(0, '', 'Left: ' & $iPos[0] & @CRLF & 'Top: ' & $iPos[1] & @CRLF & 'Width: ' & $iPos[2] & @CRLF & 'Height: ' & $iPos[3])
			  
AdlibRegister('Trans', 100)

While 1
	Switch GUIGetMsg()
	    Case $GUI_EVENT_CLOSE
		    Exit
	EndSwitch	
Wend

Func Trans()
	_GUICtrlHtml_SetElementTransparent($oHtml, 'image1', Random(0, 100, 1))
EndFunc

GUIHtml.au3
Код:
Global $iError = False, $oEvent = ObjEvent('AutoIt.Error', '__com_getError')

Func _GUICtrlHtml_Create($iLeft, $iTop, $iWidth, $iHeight)
	Local $oIE = ObjCreate('Shell.Explorer.2')
	If (Not IsObj($oIE)) Then
		Return SetError(-1, 0, 0)
	EndIf	
	GUICtrlCreateObj($oIE, $iLeft, $iTop, $iWidth, $iHeight)
	$oIE.Navigate('about:blank')
	$oIE.Document.Write(__code_Page())
	$oIE.Document.Close()
	If $iError Then
		Return SetError(-2, 0, 0)
	EndIf	
	Return $oIE
EndFunc	

Func _GUICtrlHtml_SetBkColor($hObj, $iColor)
	$hObj.Document.BgColor = '#' & Hex($iColor, 6)
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetGradient($hObj, $iStartColor, $iEndColor, $iType = 0)
	$hObj.Document.Body.Style.Filter = 'progid:DXImageTransform.Microsoft.gradient(startColorstr="#' & Hex($iStartColor, 6) & '", endColorstr="#' & Hex($iEndColor, 6) & '", gradientType="' & $iType & '")'
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetCursor($hObj, $sCursor)
	$hObj.Document.Body.Style.Cursor = $sCursor
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_CreateElementImage($hObj, $sName, $sImage, $iLeft, $iTop, $iWidth, $iHeight)
	Local $sImg = '<img src="' & $sImage & '" id="' & $sName & '" style="position: absolute; left: ' & $iLeft & 'px; top:' & $iTop & 'px; width: ' & $iWidth & 'px; height: ' & $iHeight & 'px;"></img>'
	Local $sBody = $hObj.Document.Body.InnerHTML
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf
	If ($sBody == 0) Then 
		$sBody = ''
	EndIf	
    $hObj.Document.Body.InnerHTML = $sBody & $sImg
	If (@error Or $iError) Then
		Return SetError(-2, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_CreateElementEdit($hObj, $Id, $sText, $iLeft, $iTop, $iWidth, $iHeight)
	Local $sTextArea = '<textarea id="' & $Id & '" style="position: absolute; left: ' & $iLeft & 'px; top:' & $iTop & 'px; width: ' & $iWidth & 'px; height: ' & $iHeight & 'px;">' & $sText & '</textarea>'
	Local $sBody = $hObj.Document.Body.InnerHTML
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf
	If ($sBody == 0) Then 
		$sBody = ''
	EndIf	
    $hObj.Document.Body.InnerHTML = $sBody & $sTextArea
	If (@error Or $iError) Then
		Return SetError(-2, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetElementTransparent($hObj, $Id, $iTransparent)
	$hObj.document.getElementById($Id).Style.Filter = 'alpha(opacity=' & $iTransparent & ')'
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetElementGradient($hObj, $Id, $iStartColor, $iEndColor, $iType = 0)
    $hObj.document.getElementById($Id).Style.Filter  = 'progid:DXImageTransform.Microsoft.gradient(startColorstr="#' & Hex($iStartColor, 6) & '", endColorstr="#' & Hex($iEndColor, 6) & '", gradientType="' & $iType & '")'
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetElementBorder($hObj, $Id, $sState)
    $hObj.document.getElementById($Id).style.border = $sState
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetElementColor($hObj, $Id, $iColor)
    $hObj.document.getElementById($Id).Style.Color  = '#' & Hex($iColor, 6)
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_GetElementColor($hObj, $id)
    Local $iColor = '0x' & StringTrimLeft($hObj.document.getElementById($id).style.Color, 1)
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return $iColor   
EndFunc

Func _GUICtrlHtml_SetElementPos($hObj, $id, $Left, $Top, $Width, $Height)
    $hObj.document.getElementById($id).style.Left = $Left & 'px'
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
    $hObj.document.getElementById($id).style.Top = $Top & 'px' 
	If (@error Or $iError) Then
		Return SetError(-2, 0, 0)
	EndIf	
    $hObj.document.getElementById($id).style.width = $Width & 'px' 
	If (@error Or $iError) Then
		Return SetError(-3, 0, 0)
	EndIf	
    $hObj.document.getElementById($id).style.Height = $Height & 'px' 
	If (@error Or $iError) Then
		Return SetError(-4, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_GetElementPos($hObj, $id)
    Local $aRect[4]
    $aRect[0] = StringTrimRight($hObj.document.getElementById($id).style.Left, 2)
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf
    $aRect[1] = StringTrimRight($hObj.document.getElementById($id).style.Top, 2)
	If (@error Or $iError) Then
		Return SetError(-2, 0, 0)
	EndIf
    $aRect[2] = StringTrimRight($hObj.document.getElementById($id).style.width, 2)
	If (@error Or $iError) Then
		Return SetError(-3, 0, 0)
	EndIf
    $aRect[3] = StringTrimRight($hObj.document.getElementById($id).style.Height, 2)
	If (@error Or $iError) Then
		Return SetError(-4, 0, 0)
	EndIf
    Return $aRect
EndFunc


Func _GUICtrlHtml_SetScroll($hObj, $iFlag = True)
	If (Not $iFlag) Then
		$iFlag = 'no'
	Else
		$iFlag = 'yes'
	EndIf	
	$hObj.Document.Body.Scroll = $iFlag
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetEvent($hObj, $sHtmlFor, $sEvent, $sScript)
	Local $oScript = $hObj.Document.CreateElement('script')
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	With $oScript
		.Defer = True
		.Language = 'jscript'
		.Type = 'text/javascript'
		.HtmlFor = $sHtmlFor
		.Event = $sEvent
		.Text = $sScript
	EndWith
	$hObj.Document.All.Tags('head').Item(0).AppendChild($oScript)
	If (@error Or $iError) Then
		Return SetError(-2, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func __code_Page()
	Local $sHtml = ''
	    $sHtml &= '<html>' & @CRLF
	    $sHtml &= '  <head>' & @CRLF
        $sHtml &= '    <style type="text/css">' & @CRLF
 	    $sHtml &= '      body {' & @CRLF
		$sHtml &= '        border: 0px;' & @CRLF
		$sHtml &= '        padding:0px;' & @CRLF
        $sHtml &= '        margin: 0px;' & @CRLF
	    $sHtml &= '      }' & @CRLF
	    $sHtml &= '    </style>' & @CRLF
	    $sHtml &= '  </head>' & @CRLF
	    $sHtml &= '  <body scroll="no">' & @CRLF
        $sHtml &= '  </body>' & @CRLF
        $sHtml &= '</html>'
	Return $sHtml
EndFunc

Func __com_getError()
    If (Not $oEvent.Number) Then
		$iError = False
    Else 
		$iError = True
	EndIf
EndFunc

Скрин:


Пока что поддерживается
1. создание элементов картинка и textarea
2. градиент всего объекта, или отдельного элемента
3. Прозрачность элементов
4. Отключение/включение контекстного меню объекта
5. Отключение/включение сакроллинга объекта
6. Установка курсора (пока что на сам объект IE)
7. Установка бордюра элемента
8. Установка положения элемента в объекте IE, возвращение координат элемента
Ну и всё вроде бы, если будет актуальна тема, то буду продолжать делать.
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Поставил обработку событий пока что для элемента Button, пока что обрабатывается событие OnClick, каждый созданный элемент имеет свой идентификатор по которому можно обращаться к элементу

Пример:
Код:
#include <GUIConstantsEX.au3>
#include <WindowsConstants.au3>
#Include <GUIHtml.au3>

$hForm = GUICreate('Test AutoIt+Html', 500, 330)
$oHtml = _GUICtrlHtml_Create(0, 0, 350, 330)
_GUICtrlHtml_SetGradient($oHtml, 0x404040, 0x000000)
_GUICtrlHtml_SetScroll($oHtml, False)
_GUICtrlHtml_SetBorder($oHtml, '1px solid #404040')

$iEdit = _GUICtrlHtml_CreateElementEdit($oHtml, '', 0, 310, 350, 20)
_GUICtrlHtml_SetElementGradient($oHtml, $iEdit, 0x000000, 0x404040)
_GUICtrlHtml_SetElementColor($oHtml, $iEdit, 0xFFFFFF)
_GUICtrlHtml_SetElementBorder($oHtml, $iEdit, '0px')
_GUICtrlHtml_SetElementScroll($oHtml, $iEdit, False)

$iButton = _GUICtrlHtml_CreateElementButton($oHtml, 'Настройки', 0, 290, 60, 18)
_GUICtrlHtml_SetElementGradient($oHtml, $iButton, 0x404040, 0x000000)
_GUICtrlHtml_SetElementBorder($oHtml, $iButton, '0px')
_GUICtrlHtml_SetElementColor($oHtml, $iButton, 0xFFFFFF)
_GUICtrlHtml_SetElementFont($oHtml, $iButton, 'bold 10px arial,serif')
_GUICtrlHtml_SetElementCursor($oHtml, $iButton, 'hand')

$oList = _GUICtrlHtml_Create(350, 0, 150, 330)
_GUICtrlHtml_SetEvent($oList, 'document', 'oncontextmenu', 'return false')
_GUICtrlHtml_SetGradient($oList, 0x404040, 0x000000)
_GUICtrlHtml_SetScroll($oList, False)
_GUICtrlHtml_SetBorder($oList, '1px solid #404040')
GUISetState()

While 1
	
	Switch _GUICtrlHtml_GetEvent($oHtml)
	    Case $iButton
		    MsgBox(0, 'JScript', 'Event Elements')
	EndSwitch
		
	Switch GUIGetMsg()
	    Case $GUI_EVENT_CLOSE
		    Exit
	EndSwitch	
Wend

GUIHtml.au3:
Код:
Global $iElementId = 1, $iError = False, $oEvent = ObjEvent('AutoIt.Error', '__com_getError')

Func _GUICtrlHtml_Create($iLeft, $iTop, $iWidth, $iHeight)
	Local $oIE = ObjCreate('Shell.Explorer.2')
	If (Not IsObj($oIE)) Then
		Return SetError(-1, 0, 0)
	EndIf	
	GUICtrlCreateObj($oIE, $iLeft, $iTop, $iWidth, $iHeight)
	$oIE.Navigate('about:blank')
	$oIE.Document.Write(__code_Page())
	$oIE.Document.Close()
	If $iError Then
		Return SetError(-2, 0, 0)
	EndIf	
	Return $oIE
EndFunc	

Func _GUICtrlHtml_SetBorder($hObj, $sState)
    $hObj.document.body.style.border = $sState
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetBkColor($hObj, $iColor)
	$hObj.Document.BgColor = '#' & Hex($iColor, 6)
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetGradient($hObj, $iStartColor, $iEndColor, $iType = 0)
	$hObj.Document.Body.Style.Filter = 'progid:DXImageTransform.Microsoft.gradient(startColorstr="#' & Hex($iStartColor, 6) & '", endColorstr="#' & Hex($iEndColor, 6) & '", gradientType="' & $iType & '")'
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetCursor($hObj, $sCursor)
	$hObj.Document.Body.Style.Cursor = $sCursor
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_CreateElementImage($hObj, $sImage, $iLeft, $iTop, $iWidth, $iHeight)
	$iElementId += 1
	Local $sImg = '<img src="' & $sImage & '" id="' & $iElementId & '" style="position: absolute; left: ' & $iLeft & 'px; top:' & $iTop & 'px; width: ' & $iWidth & 'px; height: ' & $iHeight & 'px;"></img>'
	Local $sBody = $hObj.Document.Body.InnerHTML
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-1, 0, 0)
	EndIf
	If ($sBody == 0) Then 
		$sBody = ''
	EndIf	
    $hObj.Document.Body.InnerHTML = $sBody & $sImg
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-2, 0, 0)
	EndIf	
	Return $iElementId
EndFunc

Func _GUICtrlHtml_CreateElementEdit($hObj, $sText, $iLeft, $iTop, $iWidth, $iHeight)
	$iElementId += 1
	Local $sTextArea = '<textarea id="' & $iElementId & '" style="position: absolute; left: ' & $iLeft & 'px; top:' & $iTop & 'px; width: ' & $iWidth & 'px; height: ' & $iHeight & 'px;">' & $sText & '</textarea>'
	Local $sBody = $hObj.Document.Body.InnerHTML
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-1, 0, 0)
	EndIf
	If ($sBody == 0) Then 
		$sBody = ''
	EndIf	
    $hObj.Document.Body.InnerHTML = $sBody & $sTextArea
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-2, 0, 0)
	EndIf	
	Return $iElementId
EndFunc	

Func _GUICtrlHtml_CreateElementButton($hObj, $sText, $iLeft, $iTop, $iWidth, $iHeight)
	$iElementId += 1
	Local $sTextArea = '<input type="Button" value="' & $sText & '" id="' & $iElementId & '" style="position: absolute; left: ' & $iLeft & 'px; top:' & $iTop & 'px; width: ' & $iWidth & 'px; height: ' & $iHeight & 'px;" onfocus="this.blur();" onclick="document.title=' & $iElementId & ';"></input>'
	Local $sBody = $hObj.Document.Body.InnerHTML
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-1, 0, 0)
	EndIf
	If ($sBody == 0) Then 
		$sBody = ''
	EndIf	
    $hObj.Document.Body.InnerHTML = $sBody & $sTextArea
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-2, 0, 0)
	EndIf	
	Return $iElementId
EndFunc

Func _GUICtrlHtml_GetEvent($hObj)
	Local $iEvent = $hObj.document.title
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	$hObj.document.title = 'event'
	Return $iEvent
EndFunc

Func _GUICtrlHtml_SetElementCursor($hObj, $Id, $sCursor)
	$hObj.Document.getElementById($Id).Style.Cursor = $sCursor
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetElementTransparent($hObj, $Id, $iTransparent)
	$hObj.document.getElementById($Id).Style.Filter = 'alpha(opacity=' & $iTransparent & ')'
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetElementGradient($hObj, $Id, $iStartColor, $iEndColor, $iType = 0)
    $hObj.document.getElementById($Id).Style.Filter  = 'progid:DXImageTransform.Microsoft.gradient(startColorstr="#' & Hex($iStartColor, 6) & '", endColorstr="#' & Hex($iEndColor, 6) & '", gradientType="' & $iType & '")'
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetElementBorder($hObj, $Id, $sState)
    $hObj.document.getElementById($Id).style.border = $sState
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetElementScroll($hObj, $Id, $iFlag = True)
	If (Not $iFlag) Then
		$iFlag = 'hidden'
	Else
		$iFlag = 'show'
	EndIf	
	$hObj.document.getElementById($Id).style.overflow = $iFlag
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetElementColor($hObj, $Id, $iColor)
    $hObj.document.getElementById($Id).Style.Color  = '#' & Hex($iColor, 6)
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetElementFont($hObj, $Id, $sFont)
    $hObj.document.getElementById($Id).Style.Font = $sFont
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_GetElementColor($hObj, $id)
    Local $iColor = '0x' & StringTrimLeft($hObj.document.getElementById($id).style.Color, 1)
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return $iColor   
EndFunc

Func _GUICtrlHtml_SetElementPos($hObj, $id, $Left, $Top, $Width, $Height)
    $hObj.document.getElementById($id).style.Left = $Left & 'px'
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
    $hObj.document.getElementById($id).style.Top = $Top & 'px' 
	If (@error Or $iError) Then
		Return SetError(-2, 0, 0)
	EndIf	
    $hObj.document.getElementById($id).style.width = $Width & 'px' 
	If (@error Or $iError) Then
		Return SetError(-3, 0, 0)
	EndIf	
    $hObj.document.getElementById($id).style.Height = $Height & 'px' 
	If (@error Or $iError) Then
		Return SetError(-4, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_GetElementPos($hObj, $id)
    Local $aRect[4]
    $aRect[0] = StringTrimRight($hObj.document.getElementById($id).style.Left, 2)
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf
    $aRect[1] = StringTrimRight($hObj.document.getElementById($id).style.Top, 2)
	If (@error Or $iError) Then
		Return SetError(-2, 0, 0)
	EndIf
    $aRect[2] = StringTrimRight($hObj.document.getElementById($id).style.width, 2)
	If (@error Or $iError) Then
		Return SetError(-3, 0, 0)
	EndIf
    $aRect[3] = StringTrimRight($hObj.document.getElementById($id).style.Height, 2)
	If (@error Or $iError) Then
		Return SetError(-4, 0, 0)
	EndIf
    Return $aRect
EndFunc


Func _GUICtrlHtml_SetScroll($hObj, $iFlag = True)
	If (Not $iFlag) Then
		$iFlag = 'no'
	Else
		$iFlag = 'yes'
	EndIf	
	$hObj.Document.Body.Scroll = $iFlag
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetEvent($hObj, $sHtmlFor, $sEvent, $sScript)
	Local $oScript = $hObj.document.CreateElement('script')
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	With $oScript
		.Defer = True
		.Language = 'jscript'
		.Type = 'text/javascript'
		.HtmlFor = $sHtmlFor
		.Event = $sEvent
		.Text = $sScript
	EndWith
	$hObj.Document.All.Tags('head').Item(0).AppendChild($oScript)
	If (@error Or $iError) Then
		Return SetError(-2, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func __code_Page()
	Local $sHtml = ''
	    $sHtml &= '<html>' & @CRLF
	    $sHtml &= '  <head>' & @CRLF
		$sHtml &= '    <title>event</title>' & @CRLF
        $sHtml &= '    <style type="text/css">' & @CRLF
 	    $sHtml &= '      body {' & @CRLF
		$sHtml &= '        border: 0px;' & @CRLF
		$sHtml &= '        padding:0px;' & @CRLF
        $sHtml &= '        margin: 0px;' & @CRLF
	    $sHtml &= '      }' & @CRLF
	    $sHtml &= '    </style>' & @CRLF
	    $sHtml &= '  </head>' & @CRLF
	    $sHtml &= '  <body scroll="no">' & @CRLF
        $sHtml &= '  </body>' & @CRLF
        $sHtml &= '</html>'
	Return $sHtml
EndFunc

Func __com_getError()
    If (Not $oEvent.Number) Then
		$iError = False
    Else 
		$iError = True
	EndIf
EndFunc

Скриншот:

 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Re: Обработка HTML кода в AutoIt\'e

Вот и нашлась проблема, как в тег <div> засунуть кнопку.. точнее я это сделал, и по идее всё должно работать, но кнопка которая находится в <div> не обрабатывается, при нажатии должен вылезти MsgBox(). :scratch:

Пример:
Код:
#include <GUIConstantsEX.au3>
#include <WindowsConstants.au3>
#Include <GUIHtml.au3>

Global $iShow = False

$hForm = GUICreate('Test AutoIt+Html', 500, 330)
$oHtml = _GUICtrlHtml_Create(0, 0, 350, 330)
_GUICtrlHtml_SetGradient($oHtml, 0x404040, 0x000000)
_GUICtrlHtml_SetScroll($oHtml, False)
_GUICtrlHtml_SetBorder($oHtml, '1px solid #404040')

$iEdit = _GUICtrlHtml_CreateElementEdit($oHtml, '', 0, 310, 350, 20)
_GUICtrlHtml_SetElementGradient($oHtml, $iEdit, 0x000000, 0x404040)
_GUICtrlHtml_SetElementColor($oHtml, $iEdit, 0xFFFFFF)
_GUICtrlHtml_SetElementBorder($oHtml, $iEdit, '0px')
_GUICtrlHtml_SetElementScroll($oHtml, $iEdit, False)

$iButton = _GUICtrlHtml_CreateElementButton($oHtml, 'Настройки', 5, 290, 60, 18)
_GUICtrlHtml_SetElementGradient($oHtml, $iButton, 0x404040, 0x000000)
_GUICtrlHtml_SetElementBorder($oHtml, $iButton, '0px')
_GUICtrlHtml_SetElementColor($oHtml, $iButton, 0xFFFFFF)
_GUICtrlHtml_SetElementFont($oHtml, $iButton, 'bold 10px arial,serif')
_GUICtrlHtml_SetElementCursor($oHtml, $iButton, 'hand')

$iDiv = _GUICtrlHtml_CreateElementContainer($oHtml, 5, 85, 337, 200)
_GUICtrlHtml_SetElementGradient($oHtml, $iDiv, 0x404040, 0x000000)
_GUICtrlHtml_SetElementBorder($oHtml, $iDiv, '1px solid #404040')
_GUICtrlHtml_SetElementState($oHtml, $iDiv, 'hidden')

$aTest = _GUICtrlHtml_CreateElementButton($oHtml, 'Test', 5, 5, 60, 20, $iDiv)
_GUICtrlHtml_SetElementGradient($oHtml, $aTest, 0x404040, 0x000000)
_GUICtrlHtml_SetElementBorder($oHtml, $aTest, '0px')
_GUICtrlHtml_SetElementColor($oHtml, $aTest, 0xFFFFFF)
_GUICtrlHtml_SetElementFont($oHtml, $aTest, 'bold 10px arial,serif')

$oList = _GUICtrlHtml_Create(350, 0, 150, 330)
_GUICtrlHtml_SetEvent($oList, 'document', 'oncontextmenu', 'return false')
_GUICtrlHtml_SetGradient($oList, 0x404040, 0x000000)
_GUICtrlHtml_SetScroll($oList, False)
_GUICtrlHtml_SetBorder($oList, '1px solid #404040')
GUISetState()

While 1
	Switch _GUICtrlHtml_GetEventClick($oHtml)
	    Case $iButton
		    If (Not $iShow) Then
			    _GUICtrlHtml_SetElementState($oHtml, $iDiv, 'visible')
				$iShow = True
			Else
				_GUICtrlHtml_SetElementState($oHtml, $iDiv, 'hidden')
				$iShow = False
			EndIf
		Case $aTest
            MsgBox(0, '', 'Container example')			
	EndSwitch
		
	Switch GUIGetMsg()
	    Case $GUI_EVENT_CLOSE
		    Exit
	EndSwitch	
Wend

GUIHtml.au3
Код:
Global $iElementId = 1, $iError = False, $oEvent = ObjEvent('AutoIt.Error', '__com_getError')

Func _GUICtrlHtml_Create($iLeft, $iTop, $iWidth, $iHeight)
	Local $oIE = ObjCreate('Shell.Explorer.2')
	If (Not IsObj($oIE)) Then
		Return SetError(-1, 0, 0)
	EndIf	
	GUICtrlCreateObj($oIE, $iLeft, $iTop, $iWidth, $iHeight)
	$oIE.Navigate('about:blank')
	$oIE.Document.Write(__code_Page())
	$oIE.Document.Close()
	If $iError Then
		Return SetError(-2, 0, 0)
	EndIf	
	Return $oIE
EndFunc	

Func _GUICtrlHtml_SetBorder($hObj, $sState)
    $hObj.document.body.style.border = $sState
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetBkColor($hObj, $iColor)
	$hObj.Document.BgColor = '#' & Hex($iColor, 6)
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetGradient($hObj, $iStartColor, $iEndColor, $iType = 0)
	$hObj.Document.Body.Style.Filter = 'progid:DXImageTransform.Microsoft.gradient(startColorstr="#' & Hex($iStartColor, 6) & '", endColorstr="#' & Hex($iEndColor, 6) & '", gradientType="' & $iType & '")'
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetCursor($hObj, $sCursor)
	$hObj.Document.Body.Style.Cursor = $sCursor
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_CreateElementImage($hObj, $sImage, $iLeft, $iTop, $iWidth, $iHeight)
	$iElementId += 1
	Local $sImg = '<img src="' & $sImage & '" id="' & $iElementId & '" style="position: absolute; left: ' & $iLeft & 'px; top:' & $iTop & 'px; width: ' & $iWidth & 'px; height: ' & $iHeight & 'px;"></img>'
	Local $sBody = $hObj.Document.Body.InnerHTML
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-1, 0, 0)
	EndIf
	If ($sBody == 0) Then 
		$sBody = ''
	EndIf	
    $hObj.Document.Body.InnerHTML = $sBody & $sImg
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-2, 0, 0)
	EndIf	
	Return $iElementId
EndFunc

Func _GUICtrlHtml_CreateElementEdit($hObj, $sText, $iLeft, $iTop, $iWidth, $iHeight)
	$iElementId += 1
	Local $sTextArea = '<textarea id="' & $iElementId & '" style="position: absolute; left: ' & $iLeft & 'px; top:' & $iTop & 'px; width: ' & $iWidth & 'px; height: ' & $iHeight & 'px;">' & $sText & '</textarea>'
	Local $sBody = $hObj.Document.Body.InnerHTML
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-1, 0, 0)
	EndIf
	If ($sBody == 0) Then 
		$sBody = ''
	EndIf	
    $hObj.Document.Body.InnerHTML = $sBody & $sTextArea
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-2, 0, 0)
	EndIf	
	Return $iElementId
EndFunc	

Func _GUICtrlHtml_CreateElementButton($hObj, $sText, $iLeft, $iTop, $iWidth, $iHeight, $iContainer = -1)
	$iElementId += 1
	Local $sButton = '<input type="button" value="' & $sText & '" id="' & $iElementId & '" style="position: absolute; left: ' & $iLeft & 'px; top:' & $iTop & 'px; width: ' & $iWidth & 'px; height: ' & $iHeight & 'px;" onfocus="this.blur();" onclick="document.title=' & $iElementId & ';"></input>'
	If ($iContainer = -1) Then
	    Local $sHtml = $hObj.document.Body.InnerHTML
	ElseIf $iContainer Then
        Local $sHtml = $hObj.document.getElementById($iContainer).InnerHTML		
	EndIf	
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-1, 0, 0)
	EndIf
	If ($sHtml == 0) Then 
		$sHtml = ''
	EndIf	
	If ($iContainer = -1) Then
        $hObj.document.Body.InnerHTML = $sHtml & $sButton
	ElseIf $iContainer Then
        $hObj.document.getElementById($iContainer).InnerHTML = $sHtml & $sButton 
	EndIf	
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-2, 0, 0)
	EndIf	
	Return $iElementId
EndFunc

Func _GUICtrlHtml_CreateElementContainer($hObj, $iLeft, $iTop, $iWidth, $iHeight)
	$iElementId += 1
	Local $sDiv = '<div id="' & $iElementId & '" style="position: absolute; left: ' & $iLeft & 'px; top:' & $iTop & 'px; width: ' & $iWidth & 'px; height: ' & $iHeight & 'px;" onclick="document.title=' & $iElementId & ';"></div>'
	Local $sBody = $hObj.Document.Body.InnerHTML
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-1, 0, 0)
	EndIf
	If ($sBody == 0) Then 
		$sBody = ''
	EndIf	
    $hObj.Document.Body.InnerHTML = $sBody & $sDiv
	If (@error Or $iError) Then
		$iElementId -= 1
		Return SetError(-2, 0, 0)
	EndIf	
	Return $iElementId
EndFunc

Func _GUICtrlHtml_GetEventClick($hObj)
	Local $iEvent = $hObj.document.title
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	$hObj.document.title = 'event'
	Return $iEvent
EndFunc

Func _GUICtrlHtml_SetElementCursor($hObj, $Id, $sCursor)
	$hObj.Document.getElementById($Id).Style.Cursor = $sCursor
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetElementState($hObj, $Id, $sState)
	$hObj.document.getElementById($Id).Style.visibility = $sState
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetElementTransparent($hObj, $Id, $iTransparent)
	$hObj.document.getElementById($Id).Style.Opacity = 0.9
	$hObj.document.getElementById($Id).Style.Filter = 'alpha(opacity=' & $iTransparent & ')'
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_SetElementGradient($hObj, $Id, $iStartColor, $iEndColor, $iType = 0)
    $hObj.document.getElementById($Id).Style.Filter  = 'progid:DXImageTransform.Microsoft.gradient(startColorstr="#' & Hex($iStartColor, 6) & '", endColorstr="#' & Hex($iEndColor, 6) & '", gradientType="' & $iType & '")'
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetElementBorder($hObj, $Id, $sState)
    $hObj.document.getElementById($Id).style.border = $sState
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetElementScroll($hObj, $Id, $iFlag = True)
	If (Not $iFlag) Then
		$iFlag = 'hidden'
	Else
		$iFlag = 'show'
	EndIf	
	$hObj.document.getElementById($Id).style.overflow = $iFlag
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetElementColor($hObj, $Id, $iColor)
    $hObj.document.getElementById($Id).Style.Color  = '#' & Hex($iColor, 6)
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetElementFont($hObj, $Id, $sFont)
    $hObj.document.getElementById($Id).Style.Font = $sFont
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_GetElementColor($hObj, $id)
    Local $iColor = '0x' & StringTrimLeft($hObj.document.getElementById($id).style.Color, 1)
    If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return $iColor   
EndFunc

Func _GUICtrlHtml_SetElementPos($hObj, $id, $Left, $Top, $Width, $Height)
    $hObj.document.getElementById($id).style.Left = $Left & 'px'
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
    $hObj.document.getElementById($id).style.Top = $Top & 'px' 
	If (@error Or $iError) Then
		Return SetError(-2, 0, 0)
	EndIf	
    $hObj.document.getElementById($id).style.width = $Width & 'px' 
	If (@error Or $iError) Then
		Return SetError(-3, 0, 0)
	EndIf	
    $hObj.document.getElementById($id).style.Height = $Height & 'px' 
	If (@error Or $iError) Then
		Return SetError(-4, 0, 0)
	EndIf	
	Return 1
EndFunc

Func _GUICtrlHtml_GetElementPos($hObj, $id)
    Local $aRect[4]
    $aRect[0] = StringTrimRight($hObj.document.getElementById($id).style.Left, 2)
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf
    $aRect[1] = StringTrimRight($hObj.document.getElementById($id).style.Top, 2)
	If (@error Or $iError) Then
		Return SetError(-2, 0, 0)
	EndIf
    $aRect[2] = StringTrimRight($hObj.document.getElementById($id).style.width, 2)
	If (@error Or $iError) Then
		Return SetError(-3, 0, 0)
	EndIf
    $aRect[3] = StringTrimRight($hObj.document.getElementById($id).style.Height, 2)
	If (@error Or $iError) Then
		Return SetError(-4, 0, 0)
	EndIf
    Return $aRect
EndFunc


Func _GUICtrlHtml_SetScroll($hObj, $iFlag = True)
	If (Not $iFlag) Then
		$iFlag = 'no'
	Else
		$iFlag = 'yes'
	EndIf	
	$hObj.Document.Body.Scroll = $iFlag
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func _GUICtrlHtml_SetEvent($hObj, $sHtmlFor, $sEvent, $sScript)
	Local $oScript = $hObj.document.CreateElement('script')
	If (@error Or $iError) Then
		Return SetError(-1, 0, 0)
	EndIf	
	With $oScript
		.Defer = True
		.Language = 'jscript'
		.Type = 'text/javascript'
		.HtmlFor = $sHtmlFor
		.Event = $sEvent
		.Text = $sScript
	EndWith
	$hObj.Document.All.Tags('head').Item(0).AppendChild($oScript)
	If (@error Or $iError) Then
		Return SetError(-2, 0, 0)
	EndIf	
	Return 1
EndFunc	

Func __code_Page()
	Local $sHtml = ''
	    $sHtml &= '<html>' & @CRLF
	    $sHtml &= '  <head>' & @CRLF
		$sHtml &= '    <META Http-equiv="MSThemeCompatible" content="yes">' & @CRLF
		$sHtml &= '    <title>event</title>' & @CRLF
        $sHtml &= '    <style type="text/css">' & @CRLF
 	    $sHtml &= '      body {' & @CRLF
		$sHtml &= '        border: 0px;' & @CRLF
		$sHtml &= '        padding:0px;' & @CRLF
        $sHtml &= '        margin: 0px;' & @CRLF
	    $sHtml &= '      }' & @CRLF
	    $sHtml &= '    </style>' & @CRLF
	    $sHtml &= '  </head>' & @CRLF
	    $sHtml &= '  <body scroll="no">' & @CRLF
        $sHtml &= '  </body>' & @CRLF
        $sHtml &= '</html>'
	Return $sHtml
EndFunc

Func __com_getError()
    If (Not $oEvent.Number) Then
		$iError = False
    Else 
		$iError = True
	EndIf
EndFunc

Скриншот:



При нажатии на кнопку "настройки" появляется <div> с кнопкой "test", но кнопка "test" не срабатывает при нажатии на неё, толи обработчик не успевает, толи ещё что - то, попробывал без Switch через консоль посмотреть, консоль показала что при нажатии на эту кнопку, возвращается значение 5, то есть оно работает, а если через Switch то не срабатывает. :stars:


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

Нашёл причину, я в <div> поставил OnClick, точнее забыл его убрать, теперь всё работает ;D
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
Viktor1703,
Симпатично. :smile:
ИМХО, интересная библиотека должна получиться.
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Re: Обработка HTML кода в AutoIt\'e

Да, я тоже так думаю, добавлю тени для элементов, а вот с закруглением углов нужно будет помучатся, мне Garrett показывал как их можно сделать с помощью картинок, я нашёл пример в интернете как это сделать без графики, но пока что рано думать о эффектах, нужно допилить всю основу, элементы, обработчики и т.д. и т.п. а потом браться за эффекты, возможностей будет куча.. :smile:


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

А такое видали ;D

Нажмите на кнопку "Команды", откроется <Div>, зажмите мышь на той полосе где написано "Пример" и перемещайте ;D
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Viktor1703
Мне нравится ваше упорство :ok:
Но вы должны понять что Shell.Explorer.2 это не WebKit и даже не IE7.
В конечном итоге, вы будите, разочарованы, особенно в плане применения CSS.
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Ммм... в смысле не везде будет работать этот пример? зависит от версии IE?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Вы используете для отрисовки (rendering) Shell.Explorer.2.
Shell.Explorer.2 это примитивный браузер (базовое ядро IE), который позволяет отрисовать HTML контент в приложениях на разных ЯП. К сожалению Shell.Explorer.2 не меняется с обновлением версий Internet Explorer`а.
В свою очередь спецификации HTML, CSS, XML постоянно претерпевают изменения (в лучшую сторону). Под эти изменения разработчики IE, Opera, Chrome, FireFox и т.д. улучшают ядра своих браузеров, дабы они поддерживали их, но Shell.Explorer.2 остается без изменений.
Поэтому если вы загрузите в Shell.Explorer.2 современную навороченную DHTML страницу, она будет у вас некорректно отображаться.
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Нет, ни чего навороченного не будет, всё в меру возможности Shell.Explorer.2, и так не плохо получается, а для более красивых эффектов буду изворачиваться как смогу, но чтоб работало везде, только что накидал пример кнопки (аккордеон) :smile:
 
Верх