Ich muss das Drucken von Outlook-Benutzereigenschaften unterdrücken, die programmatisch zu einer E-Mail-Nachricht hinzugefügt wurden. Ich hatte die folgende Frage gesehen, die eine Lösung für dot.net hier Suppressing Outlook Field Printing hat, aber ich habe Probleme, den Code nach Delphi zu übersetzen. Mein Hauptproblem ist die invokeMember Zeile, die ich rate, ich muss userproperty.invoke irgendwie in Delphi verwenden, aber ich bin ratlos darauf, wie ich die Parameter verwenden sollte, die die Aufrufmethode erfordert. Kann mir jemand helfen, die Lösung von dieser Frage in Delphi-Code zu übersetzen?Unterdrücken von Benutzereigenschaften Drucken mit Outlook-Nachrichten
0
A
Antwort
0
Dank mit Hilfe der Menschen von Addin-Express habe ich eine funktionierende Lösung ... das scheint für Outlook 2016 noch andere Outlook-Versionen zu testen. Das Problem war, dass ich nicht wusste, welche Parameter für die Aufruffunktion zu verwenden sind.
Ich poste meine Funktion hier
function TAddInModule.RemoveUserPropertyPrintFlag(
var aUserProperty: UserProperty): Boolean;
const
propID: integer = 107;
removePrinterFlag: integer = $4;
var
res: OleVariant;
disp : TDispParams;
flags: Integer;
dispIDs: array[0..0] of TDispID;
args: array [0..0] of TVariantArg;
begin
Result := False;
disp.cNamedArgs:= 0;
disp.cArgs:= 0;
if aUserProperty.Invoke(propID, GUID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, disp, @res, nil, nil) = S_OK then
begin
if TVarData(res).VType = varInteger then
begin
flags := TVarData(res).VInteger;
args[0].vt := VT_INT;
args[0].intVal := flags and (not removePrinterFlag);
disp.cArgs := 1;
disp.cNamedArgs := 1;
dispIDs[0]:= DISPID_PROPERTYPUT;
disp.rgdispidNamedArgs := @dispIDs;
disp.rgvarg := @args;
Result:= aUserProperty.Invoke(propID, GUID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, disp, nil, nil, nil) = S_OK;
end;
end;
end;
Der übersetzte Code aus der Antwort des anderen Stackoverflow delphi sollte so etwas wie diese (nicht getestet):
function TAddInModule.SuppressUserPropertyPrinting(mailItem: _MailItem) : HResult;
const
propID: integer = 107;
removePrinterFlag: integer = $4;
var
props: UserProperties;
prop: UserProperty;
i: integer;
res: OleVariant;
disp : TDispParams;
flags: Integer;
dispIDs: array[0..0] of TDispID;
args: array [0..0] of TVariantArg;
begin
props := mailItem.UserProperties;
if props.Count > 0 then begin
for i := 1 to props.Count do begin
prop := props.Item(i);
disp.cNamedArgs:= 0;
disp.cArgs:= 0;
Result:= prop.Invoke(propID, GUID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, disp, @res, nil, nil);
if TVarData(res).VType = varInteger then begin
flags := TVarData(res).VInteger;
args[0].vt := VT_INT;
args[0].intVal := flags and (not removePrinterFlag);
disp.cArgs := 1;
disp.cNamedArgs := 1;
dispIDs[0]:= DISPID_PROPERTYPUT;
disp.rgdispidNamedArgs := @dispIDs;
disp.rgvarg := @args;
Result:= prop.Invoke(propID, GUID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, disp, nil, nil, nil);
end;
prop := nil;
end;
end;
props := nil;
end;
0
Sie müssen IDispatch.Invoke()
in Delphi verwenden. Disp-ID ist 107 und der Wert muss eine Variante des Typs varInteger und der Wert 4 sein. Es gibt einige Beispiele für das Aufrufen von IDispatch.Invoke im VCL-Quellcode.
Wenn die Option Redemption eine Option ist, wird die Eigenschaft RDOUserProperty .Printable explizit verfügbar gemacht.
Verwandte Themen
- 1. unterdrücken Drucken jeder Zuordnung
- 2. Unterdrücken von Text beim Drucken in LaTeX
- 3. Unterdrücken stdout/stderr Drucken von Python-Funktionen
- 4. Firebase: Festlegen zusätzlicher Benutzereigenschaften
- 5. Meldungen unterdrücken, die von einer Konst-Methode drucken
- 6. Erhalten Sie Benutzereigenschaften von azure AD mit Graph API
- 7. Abrufen von Benutzereigenschaften aus einer Lookup-Spalte mit REST API
- 8. Unterdrücken von Doppelklick mit Script.aculo.us
- 9. Unterdrücken von PDO-Warnungen
- 10. So unterdrücken Sie SQLAlchemy Warnungen beim Drucken von Abfragen mit stmt.compile?
- 11. Unterdrücken von Doxygen-Warnungen
- 12. F # Unterdrücken von Warnungen
- 13. Unterdrücken von SBT Räumungswarnungen
- 14. WSO2 Identity Server Zusätzliche Benutzereigenschaften hinzufügen
- 15. Konsolenfehler mit XMLHttpRequest unterdrücken
- 16. Zugriff auf die Meteor-Benutzereigenschaften im Array?
- 17. Unterdrücken von PostSharp Multicast mit Attribut
- 18. Unterdrücken von Ausnahme von Task.Delay()
- 19. wie alle Benutzereigenschaften in django zeigen
- 20. Können wir Benutzereigenschaften aus Firebase Analytics löschen?
- 21. Ergebnisse von generiertem Code unterdrücken
- 22. Unterdrücken der Ausgabe von gc()
- 23. Unterdrücken von Warnmeldungen in XML
- 24. Unterdrücken von Microsoft Fakes Warnungen
- 25. Unterdrücken der Ausgabe von Basisklassenkonstruktor
- 26. Unterdrücken Warnung Ausgabe von Nütet.exe
- 27. Unterdrücken FindBugs Warnung mit findFragmentByTag
- 28. Unterdrücken der Ausgabe in R
- 29. Wie mit Anhang drucken, benutzerdefinierte Trennzeichen und unterdrücken Leerzeichen in Python 2?
- 30. Drucken von Instanzvariablen mit javasssist