Ich sitze nun schon 5 Stunden hier und versuche über C# und late binding den DOT-Pfad in Word einzustellen.
Ohne Latebindung gehts das schnell mit
wdApp.Options.set_DefaultFilePath(wd.WdDefaultFilePath.wdUserTemplatesPath, DotPath);
Aber mit Late Bindung bekomme ich es nicht hin!
Auslesen konnte ich es schon mit
object Options = wdType.InvokeMember("Options", System.Reflection.BindingFlags.GetProperty, null, wdApp, null);
object wdTemplatePath = GetEnumValue("WdDefaultFilePath", "wdUserTemplatesPath");
Object[] Parameters = new Object[1];
Parameters[0] = wdTemplatePath;
String Path = Options.GetType().InvokeMember("DefaultFilePath", BindingFlags.GetProperty, null, Options, Parameters).ToString();
Aber beim Schreiben komme ich nicht auf den Trichter. Versuchsweise mit
Object[] Parameters = new Object[1];
Parameters[0] = @"D:\\ProNotar\\KursDot";
Options.GetType().InvokeMember("DefaultFilePath", BindingFlags.SetProperty, null, Options, Parameters);
oder ähnlichen Versuchen komme ich nicht weiter.
Kann es sein, dass in den parameter sowohl der Typ der Option wie auch der Pfad selbst zusammen verwurschtelt werden ?
Wäre klasse, wenn ih mir hier nen Hint geben könntet!
Gruss, Nunz
Die Methode heißt doch **set_**DefaultFilePath! Und ob da BindingFlags.SetProperty funktioniert, weiß ich nicht. Es ist immerhin eine Methode, die aufgerufen wird, und nicht ein Property.
> Codejunky <
Hallo Junky,
Da bist du etwas auf den Holzweg geraten. Properties selbst sind quasi eine Illusion. Equivlente "get_" und "set_" Methoden existieren für jedes (beschreibare)Property. Normalerweise siehst du davon nix. Mach mal das Experiment bei einer Klasse mit bool Visible Property eine bool get_Visible(); Methode dazu zu schreiben, das wird nix.
In dem Fall sind get_ und set_ bei der generierten Interop DLL sichtbar da C# Properties mit Paramatern syntaktisch nicht unterstützt, bei Early Binding sprichst du ja nicht den COMServer direkt an sondern die Interop Wrapper DLL.
Bei nativem LateBinding gehst du nicht über einen Interop Wrapper sondern sprichst den COM Server direkt an, der weiss auch nix von get_ oder _set daher ist BindingFlags.SetProperty und einfach nur DefaultFilePath richtig.
Early Regards
Sebastian
Achso, war mir jetzt nicht klar, dass beim Late Binding der Aufruf nicht genauso erfolgt.
> Codejunky <