Wiki der Access Code Library

Gemeinsam zu mehr Effizienz in der Anwendungserstellung

AccUnit:Hinweise und Notizen zum Quellcode

Aus Access Code Library
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K
K
Zeile 1: Zeile 1:
* 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>
+
<source lang="csharp">void CallTestByName(string procName, [MarshalAs(UnmanagedType.IDispatch)] out object test2Add);</source>
 +
* ByRef-Übergabe mit InvokeMember und Application.Run: ParameterModifier verwenden - damit kann ByRef markiert werden
 +
<source lang="csharp">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);</source>

Version vom 16:45, 10. Aug. 2010

  • Object statt Variant in COM Interface: [MarshalAs(UnmanagedType.IDispatch)]
void CallTestByName(string procName, [MarshalAs(UnmanagedType.IDispatch)] out object test2Add);
  • ByRef-Übergabe mit InvokeMember und Application.Run: ParameterModifier verwenden - damit kann ByRef markiert werden
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);