G
Guest
It appears that I cannot correctly install the AxWebBrowser in VS2005.
I can instantiate an "AxWebBrowser browser" and refer to its members,
properties, and methods. I'm having trouble with the AxWebBrowser.Document:
When I print browser.Document.GetType().ToString() at runtime, I get
"mshtml.HTMLDocumentClass". But The VS2005 compiler does not recognize the
member AxWebBrowser.Document as anything other than a System.Object -- e.g.,
"Define doc As mshtml.HTMLDocumentClass = browser.Document" will fail to
compile with "Type 'mshtml.HTMLDocumentClass' is not defined."
When I try to install the missing component(s) via "aximp" and "tlbimp",
there seems to be no effect whatsoever. The commands I run in the project
directory, in a VS.NET Command Prompt, are:
aximp c:\windows\system32\shdocvw.dll
tlbimp mshtml.tlb
The only suspicious behavior that goes on during the installation itself is
a short list of warnings generated by tlbimp. They are as follows:
TlbImp : warning TI0000 : At least one of the arguments for
'IActiveIMMApp.GetDe faultIMEWnd' cannot be marshaled by the runtime
marshaler. Such arguments will therefore be passed as a pointer and may
require unsafe code to manipulate.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0010.hbmpChecked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0010.hbmpUnchecked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0010.hbmpItem'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '_userBITMAP.pBuffer'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0011.hbmpChecked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0011.hbmpUnchecked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0011.hbmpItem'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '_FLAGGED_BYTE_BLOB.abData'.
Type library imported to MSHTML.dll
Whether or not these warnings are significant enough to prevent proper
installation, I do not know. In any event, the control doesn't seem to be
getting installed correctly at all. Any advice on doing this correctly or
determing the point of failure of this component's installation in the dev
environment?
--------
Bonus points: I am afraid I'm missing the bigger picture with typecasting in
VB .NET 2.0. Even though the compiler thinks AxWebBrowser.Document is a
simple Object, it still lets me reference members within it that only exist
in mshtml.HTMLDocumentClass. That is, it doesn't complain that System.Object
has no such member as "documentelement". In fact, I've even tried nonsense
strings like "foobar" -- anything goes! The compiler will allow me to
pretend that AxWebBrowser.Document has any imaginary members I want it to
have, and then waits until runtime to see if I'm right. If the member does
exist, then great, the runtime environment hands it to me as a plain
System.Object. (From there, I can even continue printing out
GetType().ToString(). In this manner I've learned of the existence of a
whole slew of classes I should have but don't have, such as
mshtml.HTMLHtmlElementClass.) Otherwise -- that is, if the member doesn't
exist ("foobar" or what have you) -- it hangs forever trying to search for
it. My questions are:
1) Why is the compiler so relaxed about missing datatypes, coercing them
upwards into Objects instead of complaining that they're missing?
2) Why does the compiler get so lenient about nonexistent members whenever
this happens?
3) Why does VB .NET hang whenever it can't find something, rather than
gracefully reporting the problem (e.g., by throwing an exception)?
I can instantiate an "AxWebBrowser browser" and refer to its members,
properties, and methods. I'm having trouble with the AxWebBrowser.Document:
When I print browser.Document.GetType().ToString() at runtime, I get
"mshtml.HTMLDocumentClass". But The VS2005 compiler does not recognize the
member AxWebBrowser.Document as anything other than a System.Object -- e.g.,
"Define doc As mshtml.HTMLDocumentClass = browser.Document" will fail to
compile with "Type 'mshtml.HTMLDocumentClass' is not defined."
When I try to install the missing component(s) via "aximp" and "tlbimp",
there seems to be no effect whatsoever. The commands I run in the project
directory, in a VS.NET Command Prompt, are:
aximp c:\windows\system32\shdocvw.dll
tlbimp mshtml.tlb
The only suspicious behavior that goes on during the installation itself is
a short list of warnings generated by tlbimp. They are as follows:
TlbImp : warning TI0000 : At least one of the arguments for
'IActiveIMMApp.GetDe faultIMEWnd' cannot be marshaled by the runtime
marshaler. Such arguments will therefore be passed as a pointer and may
require unsafe code to manipulate.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0010.hbmpChecked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0010.hbmpUnchecked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0010.hbmpItem'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '_userBITMAP.pBuffer'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0011.hbmpChecked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0011.hbmpUnchecked'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '__MIDL___MIDL_itf_mshtml_0256_0011.hbmpItem'.
TlbImp : warning TI0000 : The type library importer could not convert the
signat ure for the member '_FLAGGED_BYTE_BLOB.abData'.
Type library imported to MSHTML.dll
Whether or not these warnings are significant enough to prevent proper
installation, I do not know. In any event, the control doesn't seem to be
getting installed correctly at all. Any advice on doing this correctly or
determing the point of failure of this component's installation in the dev
environment?
--------
Bonus points: I am afraid I'm missing the bigger picture with typecasting in
VB .NET 2.0. Even though the compiler thinks AxWebBrowser.Document is a
simple Object, it still lets me reference members within it that only exist
in mshtml.HTMLDocumentClass. That is, it doesn't complain that System.Object
has no such member as "documentelement". In fact, I've even tried nonsense
strings like "foobar" -- anything goes! The compiler will allow me to
pretend that AxWebBrowser.Document has any imaginary members I want it to
have, and then waits until runtime to see if I'm right. If the member does
exist, then great, the runtime environment hands it to me as a plain
System.Object. (From there, I can even continue printing out
GetType().ToString(). In this manner I've learned of the existence of a
whole slew of classes I should have but don't have, such as
mshtml.HTMLHtmlElementClass.) Otherwise -- that is, if the member doesn't
exist ("foobar" or what have you) -- it hangs forever trying to search for
it. My questions are:
1) Why is the compiler so relaxed about missing datatypes, coercing them
upwards into Objects instead of complaining that they're missing?
2) Why does the compiler get so lenient about nonexistent members whenever
this happens?
3) Why does VB .NET hang whenever it can't find something, rather than
gracefully reporting the problem (e.g., by throwing an exception)?