Jump to content
Sign in to follow this  
doudou

TypeLibInspector - OleView was yesterday

Recommended Posts

FF requires solely the correct encoding statement in 'tldoc-view.css' - this doesn't matter though because 'tldoc-view.html' is only used in internal view, which is embedded IE.

My default browser is FF and after exporting it will expose the result.

It's true, isn't it? This is the only reason to speak about FF style and encoding.

This ini works fine for me:

[Plugin]
name=HTML (my file)
category=export
type=XSLExport
[XSLExport]
ext=html
xslt=%tldxsldir%tldoc-html-single-my.xsl
splitOnBoundaries=0
copyResources=Icons,Images
displayResult=1
[CopyIcons]
src=%tldresdir%icons\*
dest=icons\
[CopyImages]
src=%tldxsldir%mine\images\*
dest=images\

The line of ini file:

xslt=mine\tldoc-html-single-my.xsl

is invalid (although tldoc-html-single-my.xsl exists in mine folder)

I'm copied tldoc-html-single-my.xsl into %tldxsldir% folder.

BTW au3 constants export works fine, too.


The point of world view

Share this post


Link to post
Share on other sites

It is not that simple. COM has its own globalization layer controlled by LCID and it can change not only the doc string but the appearance of a TypeLib/component entirely. The names of types, methods, properties can be different or even not present in a certain locale. Currently TypeLibDocumenter supports only the default locale (user/system) and I am not sure yet what shape the view on globalization layers should assume but it is definitely subject for a future release.

What is about SQLiteDB using for storage of COM docs. Then users could translate content directly in fields of tables.

See SQLite.au3 and SQLite Manager for FF.


The point of world view

Share this post


Link to post
Share on other sites

The line of ini file:

xslt=mine\tldoc-html-single-my.xsl

is invalid (although tldoc-html-single-my.xsl exists in mine folder)

It's perfectly valid, you need to modify the paths to includes and imports in the XSL of course or copy them to 'mine' folder as well.

UDFS & Apps:


DDEML.au3 - DDE Client + Server[*]
Localization.au3- localize your scripts[*]
TLI.au3 - type information on COM objects (TLBINF emulation)[*]
TLBAutoEnum.au3 - auto-import of COM constants (enums)[*]
AU3Automation - export AU3 scripts via COM interfaces
TypeLibInspector

- OleView was yesterday

Coder's last words before final release: WE APOLOGIZE FOR INCONVENIENCE 

Share this post


Link to post
Share on other sites

Version 0.0.2 relased (s. top post).


UDFS & Apps:


DDEML.au3 - DDE Client + Server[*]
Localization.au3- localize your scripts[*]
TLI.au3 - type information on COM objects (TLBINF emulation)[*]
TLBAutoEnum.au3 - auto-import of COM constants (enums)[*]
AU3Automation - export AU3 scripts via COM interfaces
TypeLibInspector

- OleView was yesterday

Coder's last words before final release: WE APOLOGIZE FOR INCONVENIENCE 

Share this post


Link to post
Share on other sites

It's perfectly valid, you need to modify the paths to includes and imports in the XSL of course or copy them to 'mine' folder as well.

This html-test.ini plugin works fine:

[Plugin]
name=HTML (test my file)
category=export
type=XSLExport
[XSLExport]
ext=html
xslt=mine\tldoc-html-single-my.xsl
splitOnBoundaries=0
copyResources=Icons,Images
displayResult=1
[CopyIcons]
src=%tldresdir%icons\*
dest=icons\
[CopyImages]
src=mine\images\*
dest=images\

with these files in folder conf/plugins/mine of TypeLibDocumenter root:

1. tldoc-defs.inc.xml
2. tldoc-html-common.inc.xsl
3. tldoc-html-functions.inc.xsl
4. tldoc-html-single-my.xsl

It seems I have some duplicates there. Is this structure folder optimal and clear for you?

:idea:


The point of world view

Share this post


Link to post
Share on other sites

with these files in folder conf/plugins/mine of TypeLibDocumenter root:

1. tldoc-defs.inc.xml
2. tldoc-html-common.inc.xsl
3. tldoc-html-functions.inc.xsl
4. tldoc-html-single-my.xsl

It seems I have some duplicates there. Is this structure folder optimal and clear for you?

:idea:

If you aren't going to make modifications to XSL includes you can reuse the ones built in TypeLibDocumenter, in this case you'll have to change the URI accordingly. The only problem is that <xsl:import/> and <xsl:include/> only support literal strings in href attribute and cannot be parametrized, therefore you will need 2 different versions, one for dev. environment:

<xsl:stylesheet>
<xsl:import href="../../../res/xsl/tldoc-html-common.inc.xsl"/>
<xsl:include href="../../../res/xsl/tldoc-html-functions.inc.xsl"/>
</xsl:stylesheet>

and one for distribution package:

<xsl:stylesheet>
<xsl:import href="../../xsl/tldoc-html-common.inc.xsl"/>
<xsl:include href="../../xsl/tldoc-html-functions.inc.xsl"/>
</xsl:stylesheet>

The idea behind custom plugins having all their dependencies in plugins sub-directory was to allow writing and distributing them independently from TypeLibInspector by people who might even have no idea about AutoIt.

You approach with tldoc-html-single-my.xsl in res/xsl is still OK but it has the disadvantage that it has to be packaged and distributed along with the application.

Edited by doudou

UDFS & Apps:


DDEML.au3 - DDE Client + Server[*]
Localization.au3- localize your scripts[*]
TLI.au3 - type information on COM objects (TLBINF emulation)[*]
TLBAutoEnum.au3 - auto-import of COM constants (enums)[*]
AU3Automation - export AU3 scripts via COM interfaces
TypeLibInspector

- OleView was yesterday

Coder's last words before final release: WE APOLOGIZE FOR INCONVENIENCE 

Share this post


Link to post
Share on other sites

You have a talent for making programs that I have no idea what they do!

Hmm... Shall I take it as offense or compliment?

If you are honestly curious about possible applications of TypeLibInspector I'll gladly provide some hints. However, if your remark was just your way to say: "I don't need this crap!" I would be wasting my breath (or finger motion).

Edited by doudou

UDFS & Apps:


DDEML.au3 - DDE Client + Server[*]
Localization.au3- localize your scripts[*]
TLI.au3 - type information on COM objects (TLBINF emulation)[*]
TLBAutoEnum.au3 - auto-import of COM constants (enums)[*]
AU3Automation - export AU3 scripts via COM interfaces
TypeLibInspector

- OleView was yesterday

Coder's last words before final release: WE APOLOGIZE FOR INCONVENIENCE 

Share this post


Link to post
Share on other sites

The idea behind custom plugins having all their dependencies in plugins sub-directory was to allow writing and distributing them independently from TypeLibDocumenter.

You are right. Thank you.

I'm waiting other template to wrap COM interfaces into Au3 code.

It will very useful to have some profound example for experience and skill accumulation.

This one can be the MS COM objects provided by known Microsoft Graph.exe, I think.

:idea:


The point of world view

Share this post


Link to post
Share on other sites

Just released version 0.0.3 of TypeLibDocumenter. Also added plugin for wrapper export for JaCoB (JAva-COm Bridge).


UDFS & Apps:


DDEML.au3 - DDE Client + Server[*]
Localization.au3- localize your scripts[*]
TLI.au3 - type information on COM objects (TLBINF emulation)[*]
TLBAutoEnum.au3 - auto-import of COM constants (enums)[*]
AU3Automation - export AU3 scripts via COM interfaces
TypeLibInspector

- OleView was yesterday

Coder's last words before final release: WE APOLOGIZE FOR INCONVENIENCE 

Share this post


Link to post
Share on other sites

Having released version 0.1.0 I decided to give the whole thing a prettier name, so from now on it's called TypeLibInspector.


UDFS & Apps:


DDEML.au3 - DDE Client + Server[*]
Localization.au3- localize your scripts[*]
TLI.au3 - type information on COM objects (TLBINF emulation)[*]
TLBAutoEnum.au3 - auto-import of COM constants (enums)[*]
AU3Automation - export AU3 scripts via COM interfaces
TypeLibInspector

- OleView was yesterday

Coder's last words before final release: WE APOLOGIZE FOR INCONVENIENCE 

Share this post


Link to post
Share on other sites

When I use typelib inspector for dll UIAutomationCore.dll I have the feeling it generates something incorrect

searching on

*getrootelement*

I only get the cached version

pretty sure there is a getRootElement function as its the desktop

see

see http://msdn.microsoft.com/en-us/library/windows/desktop/ee671544(v=vs.85).aspx

defect in type lib inspector?

Share this post


Link to post
Share on other sites

seems to be excluding when dispid is

QueryInterface dispid 1610612736;

AddRef: dispid 1610612737;

Release: dispid 1610612738;

GetTypeInfoCount dispid 1610678272;

GetTypeInfo dispid 1610678273;

GetIDsOfNames dispid 1610678274;

Invoke dispid 1610678275;

with uiautomationcore.dll this seems to misbehave

removed this line in TypeDoc.AU3

;~If "IUnknown" <> $info.Name And "IDispatch" <> $info.Name And StringInStr($TYPEDOC_STDMEMB_IGNORE, "|" & $objSubinfo.MemberId & "|") Then ContinueLoop

issue with enum not starting with right offset numbers in generated XML

should have for UIA_PatternIds;

[size=4] UIA_InvokePatternId = 10000,[/size]
UIA_SelectionPatternId = 10001,
UIA_ValuePatternId = 10002,
UIA_RangeValuePatternId = 10003,

now values start everytime on sequence of 1 whereas this is not the case

Edited by junkew

Share this post


Link to post
Share on other sites

seems to be excluding when dispid is

QueryInterface dispid 1610612736;

AddRef: dispid 1610612737;

Release: dispid 1610612738;

GetTypeInfoCount dispid 1610678272;

GetTypeInfo dispid 1610678273;

GetIDsOfNames dispid 1610678274;

Invoke dispid 1610678275;

with uiautomationcore.dll this seems to misbehave

removed this line in TypeDoc.AU3

;~If "IUnknown" <> $info.Name And "IDispatch" <> $info.Name And StringInStr($TYPEDOC_STDMEMB_IGNORE, "|" & $objSubinfo.MemberId & "|") Then ContinueLoop

This line is protection from TypeLibs that (illegally) declare methods of IDispatch/IUnknown as part of their own internal interfaces, if we don't ignore them here, we can end in an endless loop. Apparently uiautomationcore.dll is quite ill-programmed, what does OleView say on this topic?

UDFS & Apps:


DDEML.au3 - DDE Client + Server[*]
Localization.au3- localize your scripts[*]
TLI.au3 - type information on COM objects (TLBINF emulation)[*]
TLBAutoEnum.au3 - auto-import of COM constants (enums)[*]
AU3Automation - export AU3 scripts via COM interfaces
TypeLibInspector

- OleView was yesterday

Coder's last words before final release: WE APOLOGIZE FOR INCONVENIENCE 

Share this post


Link to post
Share on other sites

As I can see from screenshot, this is a great tool and just what I need.

But how to get this to run (win 8.1 x64, newest autoit) ?

When trying to run "TypeLibInspector64.au3" its missing  autolt_object.au3 and  TLI.au3  ok...understandable

downloaded absolutly everything from

'?do=embed' frameborder='0' data-embedContent>>

and

'?do=embed' frameborder='0' data-embedContent>>

and copied it in the directory of   "TypeLibInspector64.au3" but I still get a lot of errors as:

"...possibly used before declaration"   and  "undefined fcn errors"

 

Can't you provide a step by steb instruction for dummys. Or better provide a compiled version for those who trust you and do not need the insights of those dozend files?

 

this would be abolutly great. Thanks a  thousand.

Blues


My UDF: [topic='156155']_shellExecuteHidden[/topic]

Share this post


Link to post
Share on other sites

I compiled with latest AutoIT version 3.3.10.2 and lots of compile issues 

fixed in app.au3 see code changed below

and added the search path in the registry to the location of the needed packages
There is a special registry value that can be created at "HKEY_CURRENT_USERSoftwareAutoIt v3AutoIt" called "Include". It should be a REG_SZ (string) value. The contents of this value are a semi-colon delimited list of directories that should be searched for files when resolving #include's in addition to the standard locations.

..downloadsau3_TLIDirect_1.0.6;..downloadsAutoItObject Package 1.2.8.3

fixes in start of app.au3 file

; ------------------------------------------------------------------------------
;
; Version:        0.1.0
; AutoIt Version: 3.3.4.0
; Language:       English
; Author:         doudou
; License:        GNU/GPL, s. LICENSE.txt
; Description:    Main executable for TypeLibInspector.
; $Revision: 1.4 $
; $Date: 2010/07/29 14:24:18 $
;
; ------------------------------------------------------------------------------

;~ All below moved to top before includes
Global $app_objTLI = 0 ; moved up
Global $app_objIE = 0 ; moved up
Global $app_optResDir = @ScriptDir & "\..\..\res\" ; moved up
If @compiled Then $app_optResDir = @ScriptDir & "\" ; moved up
Global $app_optIconDir = $app_optResDir & "icons\" ; moved up
Global $app_history = 0 ; moved up
Global $app_historyCurr = -1 ; moved up
Global $app_objTypeLib = 0 ; moved up
;~ end moved up

Global $frmMain_status
Global $node
Global $frmMain

#NoTrayIcon
Opt("TrayIconHide", 1)

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <GuiStatusBar.au3>
#include <GuiTreeView.au3>
#include <GuiImageList.au3>
#include <GuiMenu.au3>

#include <WinAPILangConstants.au3>  ; added
#include <TLIInterfaces.au3>        ; added

#include <TLI.au3>

Global Const $APPMB_FATAL   = BitOr($MB_OK, $MB_ICONHAND)         ; moved up
Global Const $APPMB_ERROR   = BitOr($MB_OK, $MB_ICONEXCLAMATION)  ; moved up
Global Const $APPMB_INFO    = BitOr($MB_OK, $MB_ICONASTERISK)     ; moved up
Global Const $APPMB_YESNO   = BitOr($MB_YESNO, $MB_ICONQUESTION)  ; moved up

#include "Product.au3"
#include "Utils.au3"
#include "TypeDoc.au3"
#include "FrmMain.au3"
#include "Plugin.au3"
#include "PagingStack.au3"

Global Const $PROGID_MSXMLDOC   = "MSXML2.DOMDocument"
Global Const $OBJ_NULL  = 0

Global Const $APP_PARAM_SELTYPE     = "--selectType="

Global $app_tviRoot = 0
Global $app_hImlTypes = 0

Global $app_objXSLProc = 0
Global $app_objFoundNodes = 0
Global $app_iFindNext = 0
Global $app_strFind =""
Global $app_objError = ObjEvent("AutoIt.Error", "App_OnError")

Global $app_objIEEvent = 0

Global $app_historyNav = False

Global $app_optXSLDir = $app_optResDir & "xsl\"

Global $app_optUseTLBINF = 1
Global $app_optHistoryMax = 10

Main()
Edited by junkew

Share this post


Link to post
Share on other sites

Thanks Universalist, spent ages trying to get this to work about 6 months ago, but got nowhere fast.

Followed your instructions and have successfully produced the exe.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...