[R] HTMLayout objet COM

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

[R] HTMLayout objet COM

#1

Message par Habibsbib »

Bonjour à tous.

J'ai un problème avec l'utilisation de l'objet COM HTMLayout qui permet d'exécuter un code HTML sous forme de GUI (les contrôles peuvent encore être utilisés depuis le programme principal), je suis parvenu à enregistrer la DLL AxHTMLayout afin de pouvoir utiliser l'objet AxHTMLayout.Engine.1.
Je suis sous Windows 7, j'installe donc ma DLL grâce à la commande suivante :

Code : Tout sélectionner

\windows\syswow64\regsvr32 C:\..\AxHTMLayout.dll
RegSVR32 me dit que tout s'est bien passé.
Je me sers alors de ce script en AutoIt comme première tentative :

Code : Tout sélectionner

#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Const $BE_BUTTON_CLICK = 0
Const $BE_BUTTON_PRESS = 1
Const $BE_BUTTON_STATE_CHANGED = 2
Const $BE_EDIT_VALUE_CHANGING = 3
Const $BE_EDIT_VALUE_CHANGED = 4
Const $BE_SELECT_SELECTION_CHANGED = 5
Const $BE_SELECT_STATE_CHANGED = 6
Const $BE_POPUP_REQUEST = 7
Const $BE_POPUP_READY = 8
Const $BE_POPUP_DISMISSED = 9
Const $BE_MENU_ITEM_ACTIVE = 10
Const $BE_MENU_ITEM_CLICK = 11
Const $BE_CONTEXT_MENU_SETUP = 15
Const $BE_CONTEXT_MENU_REQUEST = 16
Const $BE_VISIUAL_STATUS_CHANGED = 17
Const $BE_HYPERLINK_CLICK = 128
Const $BE_TABLE_HEADER_CLICK = $BE_HYPERLINK_CLICK + 1 ;129
Const $BE_TABLE_ROW_CLICK = $BE_TABLE_HEADER_CLICK + 1 ;130
Const $BE_TABLE_ROW_DBL_CLICK = $BE_TABLE_ROW_CLICK + 1 ;131
Const $BE_ELEMENT_COLLAPSED = 144
Const $BE_ELEMENT_EXPANDED = $BE_ELEMENT_COLLAPSED + 1 ;145
Const $BE_ACTIVATE_CHILD = $BE_ELEMENT_EXPANDED + 1 ;146
Const $BE_DO_SWITCH_TAB = $BE_ACTIVATE_CHILD ;146
Const $BE_INIT_DATA_VIEW = $BE_DO_SWITCH_TAB + 1 ;147
Const $BE_ROWS_DATA_REQUEST = $BE_INIT_DATA_VIEW + 1 ;148
Const $BE_UI_STATE_CHANGED = $BE_ROWS_DATA_REQUEST + 1 ;149
Const $BE_FORM_SUBMIT = $BE_UI_STATE_CHANGED + 1 ;150
Const $BE_FORM_RESET = $BE_FORM_SUBMIT + 1 ;151
Const $BE_DOCUMENT_COMPLETE = $BE_FORM_RESET + 1 ;152
Const $BE_HISTORY_PUSH = $BE_DOCUMENT_COMPLETE + 1 ;153
Const $BE_HISTORY_DROP = $BE_HISTORY_PUSH + 1 ;154
Const $BE_HISTORY_PRIOR = $BE_HISTORY_DROP + 1 ;155
Const $BE_HISTORY_NEXT = $BE_HISTORY_PRIOR + 1 ;156
Const $BE_HISTORY_STATE_CHANGED = $BE_HISTORY_NEXT + 1 ;157
Const $BE_FIRST_APPLICATION_EVENT_CODE = 256


$Form1 = GUICreate("Form1", 800, 550, 10, 50, $WS_POPUP, $WS_EX_LAYERED)
$size = WinGetClientSize($Form1)
GUISetBkColor(0xABCDEF)
$Obj1 = ObjCreate("AxHTMLayout.Engine.1")
$Obj1_ctrl = GUICtrlCreateObj($Obj1, 0, 0, $size[0], $size[1])
$Oevent = ObjEvent($Obj1, "event_")
_WinAPI_SetLayeredWindowAttributes($Form1, 0xABCDEF, 250)
GUISetState(@SW_SHOW)
$Obj1.Load('file://' & @ScriptDir & '\sliding-list.htm')

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_SECONDARYUP
            Exit
    EndSwitch
WEnd

Func event_onControlEvent($element, $eventtype, $reason, $handled)
    ConsoleWrite($eventtype & @CRLF)
    If $eventtype = $BE_HYPERLINK_CLICK Then
        If $element.attribute("id") = "CloseGui" Then Exit
    EndIf
    If $eventtype = $BE_BUTTON_CLICK Then
        If $element.attribute("id") = "buttonclick" Then MsgBox("", "Button Test", "Button Click Event")
    EndIf
    If $eventtype = $BE_ELEMENT_COLLAPSED Then
        ConsoleWrite('Collapsed: ' & $element.attribute("id") & @CRLF)
    EndIf
    If $eventtype = $BE_ELEMENT_EXPANDED Then
        ConsoleWrite('Expanded: ' & $element.attribute("id") & @CRLF)
    EndIf

EndFunc   ;==>event_onControlEvent

Func event_DocumentLoaded()
    $O2event = ObjEvent($Obj1.root, "event_", "_IElementEvents")
EndFunc   ;==>event_DocumentLoaded
Et on me dit que la variable $Obj1 n'est pas un objet valide.
Je vérifie alors avec un IsObj() que AXHtml.Engine.1 est bien fonctionnel, et là surprise : l'objet n'existe pas.
Même après des recherches, je ne trouve pas le nom de l'objet OLE correspondant à la DLL AXHTMLayout.

Merci d'avance.
Modifié en dernier par Habibsbib le ven. 03 juin 2011 11:17, modifié 1 fois.
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [..] HTMLayout objet COM

#2

Message par Habibsbib »

Personne ?
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] HTMLayout objet COM

#3

Message par zeshrek »

2 choses.
Tout d'abord : Sujet: Règles et Mentions Légales du site autoitscript.fr.
Tlem a écrit :- Il est strictement interdit de :
[...]
[*] Flooder. Vous ne devez pas poster plusieurs messages à la suite. Utilisez la fonction "Éditer mon message" si vous voulez changer son contenu.
Si votre message disparait de la première page et que vous n'avez pas eu de réponses, vous avez le "droit" d'ajouter un message 24 heures plus tard pour le ramener en première page (on appelle cela "faire un UP"). Les modérateurs le tolèrent, mais à condition uniquement que 24h minimum se soient écoulées depuis votre dernier message.
Et entre hier a 19h et ce matin a 8h, y a pas le compte !


Enfin, ta DLL on ne sait pas d'ou elle vient, et on ne l'a pas forcément aussi, ce qui fait qu'on a pas la possibilité de faire des tests. En même temps pourquoi faire des tests, vu que tu ne demandes rien. Je ne vois aucune question dans le premier post. Pas le moindre petit point d'interrogation.
Si tu demandes rien, ne te plains pas que personne ne te réponde...
Si vis pacem para bellum
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] HTMLayout objet COM

#4

Message par Tlem »

Je n'ai lu que rapidement, mais peut être que le problème à sa réponse ici : http://www.autoitscript.fr/forum/viewto ... 594#p48594

voir #1908 pour la 3.3.7.8.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [..] HTMLayout objet COM

#5

Message par Habibsbib »

Merci, je crois que c'était un problème de compatibilité effectivement.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] HTMLayout objet COM

#6

Message par Tlem »

zeshrek a écrit :entre hier a 19h et ce matin a 8h, y a pas le compte !
Effectivement, je n'y avais pas prêté attention.

Cher(s) membre(s,) essayez de respecter le plus souvent possible les règles de ce forum. Ces règles ne sont pas là pour vous embêter, mais pour que ce forum ne devienne pas un grand n'importe quoi ou chacun fait ce qu'il veut. :!:
Ayez aussi du respect pour les autres membres (admin, modo, membre émérite et membre classique, etc ...), car ce sont eux qui vous apporte leur aide.
En floodant un forum, vous déclenchez un nombre important de réaction en chaîne, donc pesez vos actions et soyez respectueux des autres.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [R] HTMLayout objet COM

#7

Message par Habibsbib »

Désolé pour ça.
En fait je crois que c'est un problème avec l'UDF, GMib n' a pas mis à jour depuis la dernière version, du coup quand il appelle la DLL avec DllCall, ce ne sont plus les bons paramètres.
Dommage qu'il n'ait pas la vieille DLL..
Répondre