Re: Stumped: Now stuck with RegAsm...

Unfortunately, this is, indeed, complex stuff.  I'm glad to help.  Yes,
the files should be put in the same folder as jfw.exe.

FYI -- HomerKit includes a .NET based COM library, lbc.dll/tlb (Layout
by Code).  Inno Setup code to install and register it is contained in
the kitsetup.iss file used to create the kitsetup.exe installer.  A copy
of kitsetup.iss is placed in the Homer subfolder of the user script
folder.  The file can also be found within the zip archive at
http://www.Empowermentzone.com/kitsetup.zip

Jamal
On Thu, 27
Sep 2007, Bryan Garaventa wrote:

> Date: Thu, 27 Sep 2007 07:32:56 -0700
> From: Bryan Garaventa <bryan@xxxxxxxxxxxxxxxxxxx>
> Reply-To: programmingblind@xxxxxxxxxxxxx
> To: programmingblind@xxxxxxxxxxxxx
> Subject: Re: Stumped: Now stuck with RegAsm...
>
> Ah, so would this be best put in the JAWS folder where jfw.exe resides,
> since I'll be trying to access the com object from a script?
>
> This is all new to me, so it's still fairly confusing.
>
>
> ----- Original Message -----
> From: "Jamal Mazrui" <empower@xxxxxxxxx>
> To: <programmingblind@xxxxxxxxxxxxx>
> Sent: Thursday, September 27, 2007 4:50 AM
> Subject: Re: Stumped: Now stuck with RegAsm...
>
>
> > tlbexp and regasm are for making a .NET assembly act like a COM library to
> > a programming language that does not understand .NET.  If you want to be
> > able to use a library you create with both .NET and traditional Win32
> > applications, I think you will need to call different versions from each.
> > Call the native .NET assembly from a .NET application, and the COM
> > callable wrapper from a non-.NET application.  It is easiest if the
> > COM-callable wrapper files (.dll and .tlb) are placed in the same
> > directory as the traditional Win32 executable -- otherwise, the files need
> > to be installed in the Global Assembly Cache (GAC).
> >
> > Jamal
> > On Wed, 26 Sep
> > 2007, Bryan Garaventa wrote:
> >
> >> Date: Wed, 26 Sep 2007 17:06:21 -0700
> >> From: Bryan Garaventa <bryan@xxxxxxxxxxxxxxxxxxx>
> >> Reply-To: programmingblind@xxxxxxxxxxxxx
> >> To: programmingblind@xxxxxxxxxxxxx
> >> Subject: Re: Stumped: Now stuck with RegAsm...
> >>
> >> OK, I managed to find the RegAsm.exe v2 which will add my dll
> >> successfully
> >> to the registry.
> >>
> >> My dll is within it's own folder on the hd, including the correct RegAsm
> >> executable.
> >> When I run RegAsm using the following syntax from the command line...
> >> C:\UltraModuleMaker\RegAsm.exe DementedGofer.dll /tlb:DementedGofer.tlb
> >> All works fine, the DementedGofer.tlb is created, and the registry
> >> entries
> >> are added successfully.
> >>
> >> Now, when I go to a new VB.net project, click Add Reference from the
> >> Project
> >> menu, and click the Com tab, the dll is listed there as I assume it
> >> should
> >> be... The name and version number are within the list.
> >>
> >> So, now, when I click my DementedGofer, I get the following error
> >>
> >> Microsoft Visual Studio
> >> A reference to 'DementedGofer' could not be added. graphic 15  The
> >> ActiveX
> >> type library 'c:\ultramodulemaker\DementedGofer.tlb' was exported from a
> >> .NET
> >> assembly and cannot be added as a reference.
> >> Add a reference to the .NET assembly instead.
> >> OK
> >>
> >> I feel like throwing my DementedGofer out the window.
> >>
> >>
> >>
> >> ----- Original Message -----
> >> From: "Jamal Mazrui" <empower@xxxxxxxxx>
> >> To: <programmingblind@xxxxxxxxxxxxx>
> >> Sent: Wednesday, September 26, 2007 11:00 AM
> >> Subject: Re: Stumped: JAWS GetObject function for current browser window?
> >>
> >>
> >> > I'm not sure whether regasm.exe is part of the .NET Framework, itself,
> >> > or part of the SDK.  If you have not installed the .NET 2.0 SDK,
> >> > perhaps
> >> > try searching for that file.  In thinking about this further though, it
> >> > is also possible that Visual Studio installs the file.    The license
> >> > may allow you to distribute the file with a .NET application -- not
> >> > sure, but it would make sense.
> >> >
> >> > Another alternative would be to create a command-line utility that
> >> > takes
> >> > two quoted parameters corresponding to the URL and file.  A script or
> >> > application can run the file synchronously (waiting for it to return).
> >> >
> >> > Jamal
> >> > On
> >> > Wed, 26 Sep 2007, Bryan Garaventa wrote:
> >> >
> >> >> Date: Wed, 26 Sep 2007 08:42:16 -0700
> >> >> From: Bryan Garaventa <bryan@xxxxxxxxxxxxxxxxxxx>
> >> >> Reply-To: programmingblind@xxxxxxxxxxxxx
> >> >> To: programmingblind@xxxxxxxxxxxxx
> >> >> Subject: Re: Stumped: JAWS GetObject function for current browser
> >> >> window?
> >> >>
> >> >> Thanks, I wasn't aware of that.
> >> >>
> >> >> Is regasm.exe part of Windows, as regsvr32.exe is?
> >> >>
> >> >> I would need to ensure that the dll can be easily installed on client
> >> >> machines, with relatively little instruction. None would be best,
> >> >> since
> >> >> the
> >> >> dll would be a hidden part of the application.
> >> >>
> >> >> Thanks,
> >> >>
> >> >> Bryan
> >> >> ----- Original Message -----
> >> >> From: "Jamal Mazrui" <empower@xxxxxxxxx>
> >> >> To: <programmingblind@xxxxxxxxxxxxx>
> >> >> Sent: Wednesday, September 26, 2007 7:11 AM
> >> >> Subject: Re: Stumped: JAWS GetObject function for current browser
> >> >> window?
> >> >>
> >> >>
> >> >> >a .NET DLL can be converted to a COM library using the tlbexp.exe
> >> >> >utility
> >> >> > of the .NET 2.0 SDK, and that library can be registered on a
> >> >> > computer
> >> >> > using the regasm.exe utility.
> >> >> >
> >> >> > Jamal
> >> >> > On Tue, 25 Sep 2007, Bryan Garaventa wrote:
> >> >> >
> >> >> >> Date: Tue, 25 Sep 2007 14:05:41 -0700
> >> >> >> From: Bryan Garaventa <bryan@xxxxxxxxxxxxxxxxxxx>
> >> >> >> Reply-To: programmingblind@xxxxxxxxxxxxx
> >> >> >> To: programmingblind@xxxxxxxxxxxxx
> >> >> >> Subject: Re: Stumped: JAWS GetObject function for current browser
> >> >> >> window?
> >> >> >>
> >> >> >> Thanks for taking a look. I had a similar idea, so figured I'd try
> >> >> >> to
> >> >> >> stick
> >> >> >> with what I knew. Here is what I've done.
> >> >> >>
> >> >> >> I created a VB.net Class Lib project, and added a function for
> >> >> >> returning
> >> >> >> an
> >> >> >> object of shdocvw.WebBrowser.
> >> >> >> It takes two parameters, one is the url of the document object to
> >> >> >> find,
> >> >> >> and
> >> >> >> the other is the WebBrowser object placeholder.
> >> >> >> The function loops through all instances of shellWindows, finding
> >> >> >> each
> >> >> >> instance of shdocvw.InternetExplorer.
> >> >> >> Then it compares the vals of IEInstance.LocationURL to Url within
> >> >> >> the
> >> >> >> first
> >> >> >> parameter, and if a match is found, assigns the IEInstance to the
> >> >> >> second
> >> >> >> object parameter of shdocvw.WebBrowser.
> >> >> >> Lastly, it returns the value. Here is the class code if you would
> >> >> >> like
> >> >> >> to
> >> >> >> see the exact method.
> >> >> >>
> >> >> >> Public Class BangBangDuck
> >> >> >>
> >> >> >> Dim Sws As New SHDocVw.ShellWindows
> >> >> >>
> >> >> >> Dim IE As SHDocVw.InternetExplorer
> >> >> >>
> >> >> >> Public Function ParseIEInstances(ByVal Url As String, ByVal
> >> >> >> BrowserObject
> >> >> >> As
> >> >> >> SHDocVw.WebBrowser) As SHDocVw.WebBrowser
> >> >> >>
> >> >> >> For Each IE In Sws
> >> >> >>
> >> >> >> If IE.LocationURL Is Url Then
> >> >> >>
> >> >> >> BrowserObject = IE
> >> >> >>
> >> >> >> End If
> >> >> >>
> >> >> >> Next
> >> >> >>
> >> >> >> Return BrowserObject
> >> >> >>
> >> >> >> End Function
> >> >> >>
> >> >> >> End Class
> >> >> >>
> >> >> >>
> >> >> >> My idea was to include this as an ActiveX com component, which I
> >> >> >> could
> >> >> >> then
> >> >> >> instantiate and use within JAWS by passing the desired parameters.
> >> >> >>
> >> >> >> Ah but I didn't anticipate the brilliance of Microsoft! Who, in
> >> >> >> their
> >> >> >> infinite wisdom, now makes it impossible to create an ActiveX dll
> >> >> >> using
> >> >> >> their new and improved VB.net...
> >> >> >>
> >> >> >> This is so insanely frustrating. I'm 99% sure that this method will
> >> >> >> work
> >> >> >> (unless I'm totally off), as long as I can register the dll as an
> >> >> >> ActiveX
> >> >> >> com component.
> >> >> >>
> >> >> >> Arg, guess I'll just have to find a copy of VB6 somewhere, create
> >> >> >> an
> >> >> >> ActiveX
> >> >> >> project, import my new shiny vb.net dll, and hopefully, God
> >> >> >> willing,
> >> >> >> nothing
> >> >> >> else will go wrong.
> >> >> >>
> >> >> >> (I'll probably feel better after lunch...)
> >> >> >>
> >> >> >> Thanks again for the input, it really does help.
> >> >> >>
> >> >> >> Best wishes,
> >> >> >>
> >> >> >> Bryan
> >> >> >>
> >> >> >> ----- Original Message -----
> >> >> >> From: "Jamal Mazrui" <empower@xxxxxxxxx>
> >> >> >> To: <programmingblind@xxxxxxxxxxxxx>
> >> >> >> Sent: Tuesday, September 25, 2007 1:22 PM
> >> >> >> Subject: Re: Stumped: JAWS GetObject function for current browser
> >> >> >> window?
> >> >> >>
> >> >> >>
> >> >> >> > Thanks for that info about the IE object model.  I tried the
> >> >> >> > Snapshot
> >> >> >> > object, converting the sample.vbs example to JAWS script.  For
> >> >> >> > some
> >> >> >> > reason, the script does not create the image file on disk, even
> >> >> >> > though
> >> >> >> > the object is instantiated.
> >> >> >> >
> >> >> >> > I think the following technique would work.  Have the JAWS script
> >> >> >> > run a
> >> >> >> > .vbs file with cscript.exe, passing it parameters for the URL to
> >> >> >> > capture
> >> >> >> > and the file to create, and waiting for it to complete.  The URL
> >> >> >> > of
> >> >> >> > the
> >> >> >> > current page in IE can be obtained from a property of the
> >> >> >> > document
> >> >> >> > object.
> >> >> >> >
> >> >> >> > The Homer script library
> >> >> >> > http://www.EmpowermentZone.com/kitsetup.exe
> >> >> >> > includes convenience functions that could help with some of these
> >> >> >> > steps,
> >> >> >> > though they can also be coded from scratch.  Let me know if you
> >> >> >> > have
> >> >> >> > further questions.
> >> >> >> >
> >> >> >> > Jamal
> >> >> >> > On Mon, 24 Sep 2007, Bryan Garaventa wrote:
> >> >> >> >
> >> >> >> >> Date: Mon, 24 Sep 2007 10:03:16 -0700
> >> >> >> >> From: Bryan Garaventa <bryan@xxxxxxxxxxxxxxxxxxx>
> >> >> >> >> Reply-To: programmingblind@xxxxxxxxxxxxx
> >> >> >> >> To: programmingblind@xxxxxxxxxxxxx
> >> >> >> >> Subject: Re: Stumped: JAWS GetObject function for current
> >> >> >> >> browser
> >> >> >> >> window?
> >> >> >> >>
> >> >> >> >> I thought so at first as well, but it doesn't appear to work.
> >> >> >> >>
> >> >> >> >> What I need to do is create a JAWS script that can take
> >> >> >> >> screenshots
> >> >> >> >> of
> >> >> >> >> a
> >> >> >> >> webpage at runtime. Unfortunately the standard Print screen
> >> >> >> >> method
> >> >> >> >> doesn't
> >> >> >> >> work, because it only captures the visible area of the screen,
> >> >> >> >> and
> >> >> >> >> the
> >> >> >> >> entire web page has to be captured without reloading the page
> >> >> >> >> from
> >> >> >> >> the
> >> >> >> >> current IE instance.
> >> >> >> >>
> >> >> >> >> I found an ActiveX component that claims to do this, called HTML
> >> >> >> >> Snapshot
> >> >> >> >> ( http://www.guangmingsoft.net/htmlsnapshot/help.htm ), which
> >> >> >> >> can
> >> >> >> >> apparently
> >> >> >> >> take the entire image of a web page at one time. Adding to the
> >> >> >> >> appeal
> >> >> >> >> of
> >> >> >> >> this method, is that the ActiveX is redistributable, which is
> >> >> >> >> necessary
> >> >> >> >> for
> >> >> >> >> this project.
> >> >> >> >>
> >> >> >> >> Specifically, the ActiveX method I would need to use within the
> >> >> >> >> script
> >> >> >> >> appears to be SnapWebBrowser(). However, this method requires a
> >> >> >> >> browser
> >> >> >> >> object of type IDispatch. I've tried passing the JAWS
> >> >> >> >> IEGetCurrentDocument
> >> >> >> >> return for this argument, but with no luck. It looks like the
> >> >> >> >> method
> >> >> >> >> requires the use of an IE instance that reveals it's ActiveX
> >> >> >> >> directly.
> >> >> >> >>
> >> >> >> >> I've been doing a lot of research in this area, and made some
> >> >> >> >> discoveries
> >> >> >> >> that may help solve the issue if possible.
> >> >> >> >>
> >> >> >> >> First has to do with the MSDN's reference regarding Internet
> >> >> >> >> Explorer
> >> >> >> >> Architecture (
> >> >> >> >> http://msdn2.microsoft.com/en-us/library/aa741312.aspx ),
> >> >> >> >> which says...
> >> >> >> >>
> >> >> >> >> Internet Explorer Architecture
> >> >> >> >>
> >> >> >> >> A description of each of these six components follows:
> >> >> >> >>
> >> >> >> >> list of 6 items
> >> >> >> >> . IExplore.exe is at the top level, and is the Internet Explorer
> >> >> >> >> executable.
> >> >> >> >> It is a small application that relies on the other main
> >> >> >> >> components
> >> >> >> >> of
> >> >> >> >> Internet Explorer to do the work of rendering, navigation,
> >> >> >> >> protocol
> >> >> >> >> implementation, and so on.
> >> >> >> >> . Browsui.dll provides the user interface to Internet Explorer.
> >> >> >> >> Often
> >> >> >> >> referred to as the "chrome," this DLL includes the Internet
> >> >> >> >> Explorer
> >> >> >> >> address
> >> >> >> >> bar, status bar, menus, and so on.
> >> >> >> >> . Shdocvw.dll provides functionality such as navigation and
> >> >> >> >> history,
> >> >> >> >> and
> >> >> >> >> is
> >> >> >> >> commonly referred to as the WebBrowser control . This DLL
> >> >> >> >> exposes
> >> >> >> >> ActiveX
> >> >> >> >> Control interfaces, enabling you to easily host the DLL in a
> >> >> >> >> Microsoft
> >> >> >> >> Windows application using frameworks such as Microsoft Visual
> >> >> >> >> Basic,
> >> >> >> >> Microsoft Foundation Classes (MFC), Active Template Library
> >> >> >> >> (ATL),
> >> >> >> >> or
> >> >> >> >> Microsoft .NET Windows Forms. When your application hosts the
> >> >> >> >> WebBrowser
> >> >> >> >> control, it obtains all the functionality of Internet Explorer
> >> >> >> >> except
> >> >> >> >> for
> >> >> >> >> the user interface provided by Browseui.dll. This means that you
> >> >> >> >> will
> >> >> >> >> need
> >> >> >> >> to provide your own implementations of toolbars and menus.
> >> >> >> >> . Mshtml.dll is at the heart of Internet Explorer and takes care
> >> >> >> >> of
> >> >> >> >> its
> >> >> >> >> HTML
> >> >> >> >> and Cascading Style Sheets (CSS) parsing and rendering
> >> >> >> >> functionality.
> >> >> >> >> Mshtml.dll is sometimes referred to by its code name, "Trident".
> >> >> >> >> Mshtml.dll
> >> >> >> >> exposes interfaces that enable you to host it as an active
> >> >> >> >> document
> >> >> >> >> .
> >> >> >> >> Other
> >> >> >> >> applications such as Microsoft Word, Microsoft Excel, Microsoft
> >> >> >> >> Visio,
> >> >> >> >> and
> >> >> >> >> many non-Microsoft applications also expose active document
> >> >> >> >> interfaces
> >> >> >> >> so
> >> >> >> >> they can be hosted by shdocvw.dll. For example, when a user
> >> >> >> >> browses
> >> >> >> >> from
> >> >> >> >> an
> >> >> >> >> HTML page to a Word document, mshtml.dll is swapped out for the
> >> >> >> >> DLL
> >> >> >> >> provided
> >> >> >> >> by Word, which then renders that document type. Mshtml.dll may
> >> >> >> >> be
> >> >> >> >> called
> >> >> >> >> upon to host other components depending on the HTML document's
> >> >> >> >> content,
> >> >> >> >> such
> >> >> >> >> as scripting engines (for example, Microsoft JScript or Visual
> >> >> >> >> Basic
> >> >> >> >> Scripting Edition (VBScript)), ActiveX controls, XML data, and
> >> >> >> >> so
> >> >> >> >> on.
> >> >> >> >> . Urlmon.dll offers functionality for MIME handling and code
> >> >> >> >> download.
> >> >> >> >> . WinInet.dll is the Windows Internet Protocol handler. It
> >> >> >> >> implements
> >> >> >> >> the
> >> >> >> >> HTTP and File Transfer Protocol (FTP) protocols along with cache
> >> >> >> >> management.
> >> >> >> >> list end
> >> >> >> >>
> >> >> >> >> There's quite a bit more in depth info, but this shows the
> >> >> >> >> essentials.
> >> >> >> >>
> >> >> >> >> At first, I thought, by returning the top level object,
> >> >> >> >> "IExplore.exe",
> >> >> >> >> this
> >> >> >> >> would solve the problem, but not so from a JAWS script.
> >> >> >> >>
> >> >> >> >> What I actually need to return is the current WebBrowser object,
> >> >> >> >> which
> >> >> >> >> would
> >> >> >> >> require the use of Shdocvw. I believe this would do the trick.
> >> >> >> >>
> >> >> >> >> The directions for accomplishing this, has been a bit harder to
> >> >> >> >> track
> >> >> >> >> down.
> >> >> >> >> Finally though, I think I've found something that might help
> >> >> >> >> with
> >> >> >> >> this
> >> >> >> >> as
> >> >> >> >> well, though I haven't been able to apply it directly using a
> >> >> >> >> JAWS
> >> >> >> >> script.
> >> >> >> >>
> >> >> >> >> It is a forum entry named "FOUND! how to attach to running
> >> >> >> >> instances
> >> >> >> >> of
> >> >> >> >> Internet Explorer" from dBforums. (
> >> >> >> >> http://www.dbforums.com/showthread.php?threadid=867088 )
> >> >> >> >>
> >> >> >> >> Specifically it refers to Python, but I think it may be possible
> >> >> >> >> to
> >> >> >> >> convert
> >> >> >> >> the principles to a JAWS script... I hope anyway.
> >> >> >> >>
> >> >> >> >> Please let me know if you have any insights, I'd welcome them.
> >> >> >> >>
> >> >> >> >> Best wishes,
> >> >> >> >>
> >> >> >> >> Bryan
> >> >> >> >>
> >> >> >> >> ----- Original Message -----
> >> >> >> >> From: "Jamal Mazrui" <empower@xxxxxxxxx>
> >> >> >> >> To: <programmingblind@xxxxxxxxxxxxx>
> >> >> >> >> Sent: Monday, September 24, 2007 9:05 AM
> >> >> >> >> Subject: Re: Stumped: JAWS GetObject function for current
> >> >> >> >> browser
> >> >> >> >> window?
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> >I must be missing something here.  Doesn't IEGetCurrentDocument
> >> >> >> >> >return a
> >> >> >> >> > COM object for the current web page in IE?  How does this not
> >> >> >> >> > meet
> >> >> >> >> > the
> >> >> >> >> > need?
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >> > Jamal
> >> >> >> >> >
> >> >> >> >> > __________
> >> >> >> >> > View the list's information and change your settings at
> >> >> >> >> > http://www.freelists.org/list/programmingblind
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >>
> >> >> >> >> __________
> >> >> >> >> View the list's information and change your settings at
> >> >> >> >> http://www.freelists.org/list/programmingblind
> >> >> >> >>
> >> >> >> > __________
> >> >> >> > View the list's information and change your settings at
> >> >> >> > http://www.freelists.org/list/programmingblind
> >> >> >> >
> >> >> >> >
> >> >> >>
> >> >> >> __________
> >> >> >> View the list's information and change your settings at
> >> >> >> http://www.freelists.org/list/programmingblind
> >> >> >>
> >> >> > __________
> >> >> > View the list's information and change your settings at
> >> >> > http://www.freelists.org/list/programmingblind
> >> >> >
> >> >> >
> >> >>
> >> >> __________
> >> >> View the list's information and change your settings at
> >> >> http://www.freelists.org/list/programmingblind
> >> >>
> >> > __________
> >> > View the list's information and change your settings at
> >> > http://www.freelists.org/list/programmingblind
> >> >
> >> >
> >>
> >> __________
> >> View the list's information and change your settings at
> >> http://www.freelists.org/list/programmingblind
> >>
> > __________
> > View the list's information and change your settings at
> > http://www.freelists.org/list/programmingblind
> >
> >
>
> __________
> View the list's information and change your settings at
> http://www.freelists.org/list/programmingblind
>
__________
View the list's information and change your settings at 
http://www.freelists.org/list/programmingblind

Other related posts: