You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What steps will reproduce the problem?
1. Create Popup
2. Close Popup
3. Navigate anywhere or close program
What are the OS and IE versions?
Windows 7, IE9
What exceptions are thrown? If any, please copy and paste the exception dump.
InvokeOldHandler=>System.MissingMethodException: Method
'System.__ComObject.[DispID=0]' not found.
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args)
at csExWB.GenericElementEventHandler.InvokeOldHandler() in C:\Users\\Downloads\csExWBv2.0.0.2_Includes_ComUtilities\csExWBv2.0.0.2\csExWB\csExWB\Events\GenericElementEventHandler.cs:line 74
'SecureCrtLauncher.vshost.exe' (Managed (v4.0.30319)): Loaded
'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b
03f5f7f11d50a3a\System.Configuration.dll', Skipped loading symbols. Module is
optimized and the debugger option 'Just My Code' is enabled.
What is the expected output? What do you see instead?
Expected no error
Please use labels and text to provide additional information.
public void InvokeOldHandler()
{
if (m_oldhandler != null && m_oldhandler != System.DBNull.Value)
{
// Get a reference to the IDisplatch type
Type lIDispatch = Type.GetTypeFromCLSID(new System.Guid("{00020400-0000-0000-C000-000000000046}"));
// Invoke the default method "[DispID=0]"
try
{
------> lIDispatch.InvokeMember("[DispID=0]",
System.Reflection.BindingFlags.InvokeMethod, null, m_oldhandler, null);
}
catch (System.MissingMemberException e)
{
throw;
//System.Diagnostics.Debug.Print("InvokeOldHandler=>" + e.ToString());
}
}
}
Change line to:
lIDispatch.InvokeMember(String.Empty,
System.Reflection.BindingFlags.InvokeMethod, null, m_oldhandler, null);
per Microsofts documentation on how to invoke the default member...
http://msdn.microsoft.com/en-us/library/de3dhzwy.aspx
Original issue reported on code.google.com by robp1971 on 3 Aug 2011 at 7:03
The text was updated successfully, but these errors were encountered:
This invoke breaks "this" scope for JavaScript calls. When you invoke JS
handler this way, "this" keyword in it refers to wrong object and it may then
fail somewhere deeper in call chain. Replace marked line with:
return lIDispatch.InvokeMember("apply",
System.Reflection.BindingFlags.InvokeMethod, null, m_oldhandler, new object[] {
m_elem });
This calls old handler in scope of element setting "this" to correct value. I
fixed all my issues regarding this using this change.
Original comment by xkatu...@gmail.com on 19 Sep 2011 at 11:33
Original issue reported on code.google.com by
robp1971
on 3 Aug 2011 at 7:03The text was updated successfully, but these errors were encountered: