(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…“) |
|||
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() }; |
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);