Что нового

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

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
411
Как вернуть текст с кнопки? получилось только вернуть весь текст между тегом <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
Репутация
964
Re: Вернуть текст с кнопки

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

Viktor1703

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

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

Garrett

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

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

Viktor1703

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

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


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

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


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

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

Garrett

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

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

Viktor1703

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

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

Garrett

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

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

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
411
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
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
411
Думаю может написать 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, возвращение координат элемента
Ну и всё вроде бы, если будет актуальна тема, то буду продолжать делать.
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
411
Поставил обработку событий пока что для элемента 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

Скриншот:

 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
411
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
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
411
Не плохой интерфейс получается ;D
 

madmasles

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

Viktor1703

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

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


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

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

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

Garrett

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

Viktor1703

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

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Вы используете для отрисовки (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 страницу, она будет у вас некорректно отображаться.
 
Автор
Viktor1703

Viktor1703

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