(Die Seite wurde neu angelegt: „* Object statt Variant in COM Interface: <code>[MarshalAs(UnmanagedType.IDispatch)]</code> <source lang="csharp">void CallTestByName(string procName, [MarshalAs(U…“) |
|||
(Der Versionsvergleich bezieht 1 dazwischenliegende Version mit ein.) | |||
Zeile 1: | Zeile 1: | ||
+ | AccUnit ist in C# geschrieben. Als Entwicklungsumgebung wird Visual Studio 2010 verwendet. | ||
+ | |||
+ | Hier einige Punkte: | ||
+ | |||
+ | === Object statt Variant in COM Interface === | ||
* Object statt Variant in COM Interface: <code>[MarshalAs(UnmanagedType.IDispatch)]</code> | * Object statt Variant in COM Interface: <code>[MarshalAs(UnmanagedType.IDispatch)]</code> | ||
<source lang="csharp">void CallTestByName(string procName, [MarshalAs(UnmanagedType.IDispatch)] out object test2Add); | <source lang="csharp">void CallTestByName(string procName, [MarshalAs(UnmanagedType.IDispatch)] out object test2Add); | ||
Zeile 5: | Zeile 10: | ||
object Parent { [param: MarshalAs(UnmanagedType.IDispatch)] set; [return: MarshalAs(UnmanagedType.IDispatch)] get; }</source> | object Parent { [param: MarshalAs(UnmanagedType.IDispatch)] set; [return: MarshalAs(UnmanagedType.IDispatch)] get; }</source> | ||
+ | |||
+ | |||
+ | === ByRef-Übergabe mit InvokeMember und Application.Run === | ||
* ByRef-Übergabe mit InvokeMember und Application.Run: ParameterModifier verwenden - damit kann ByRef markiert werden | * ByRef-Übergabe mit InvokeMember und Application.Run: ParameterModifier verwenden - damit kann ByRef markiert werden | ||
<source lang="csharp">object[] parameters = { getTestClassFactoryProcedureName(className), new Object() }; | <source lang="csharp">object[] parameters = { getTestClassFactoryProcedureName(className), new Object() }; | ||
Zeile 14: | Zeile 22: | ||
parameters, modifiers, null, null);</source> | parameters, modifiers, null, null);</source> | ||
- | + | === VBEIDE-Fenster mit ms.net erzeugen === | |
*:[http://www.mztools.com/articles/2006/MZ2006007.aspx HOWTO: Create a dockable toolwindow from a Visual Studio .NET add-in] | *:[http://www.mztools.com/articles/2006/MZ2006007.aspx HOWTO: Create a dockable toolwindow from a Visual Studio .NET add-in] |
AccUnit ist in C# geschrieben. Als Entwicklungsumgebung wird Visual Studio 2010 verwendet.
Hier einige Punkte:
[MarshalAs(UnmanagedType.IDispatch)]
void CallTestByName(string procName, [MarshalAs(UnmanagedType.IDispatch)] out object test2Add); object Fixture { [return: MarshalAs(UnmanagedType.IDispatch)] get; } object Parent { [param: MarshalAs(UnmanagedType.IDispatch)] set; [return: MarshalAs(UnmanagedType.IDispatch)] get; }
object[] parameters = { getTestClassFactoryProcedureName(className), new Object() }; ParameterModifier p = new ParameterModifier(2); p[1] = true; ParameterModifier[] modifiers = { p }; OfficeApplication.GetType().InvokeMember("Run", BindingFlags.InvokeMethod, null, OfficeApplication, parameters, modifiers, null, null);