Outlookアイテムのユーザープロパティの印刷をプログラムによってメールアイテムに追加しないようにする必要があります。私はdot.netのための解決策を持っている次の質問を見たSuppressing Outlook Field Printingしかし、私は問題をコードをデルファイに翻訳している。私の主な問題は、invokememberラインです。私は、デルファイで何らかの方法でuserproperty.invokeを使用する必要があると思いますが、invokeメソッドが必要とするパラメータをどのように使うべきかについてはわかりません。誰かがその質問からの解決策をデルファイのコードに翻訳するのを助けることができますか?Outlookのメールアイテムでユーザープロパティ印刷を抑制する
0
A
答えて
0
アドインエクスプレスの人々の助けを借りてありがとう、私は働くソリューションを持っています...それはOutlook2016のために働くようですが、まだ他のOutlookバージョンをテストする必要があります。問題は、私はinvoke関数に使用するパラメータがわからないことでした。
私は他のstackoverflowの答えからデルフォイが変換されたコードは、このような何か(テストしていない)でなければなりません
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;
ここに私の機能を掲示しています:
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
デルファイでIDispatch.Invoke()
を使用する必要があります。 Disp idは107で、値はvarInteger型の値と4の値の型でなければなりません。VCLソースコードでIDispatch.Invokeを呼び出す例がかなりあります。
Redemptionを使用する場合は、オプションでRDOUserProperty .Printableプロパティを明示的に公開します。
関連する問題
- 1. 抑制Outlookのポップアップアクセス
- 2. 印刷抑制 - パラレルパッケージを削除する方法
- 3. Outlookアドインのメールアイテムのマーク
- 4. Outlookメールアイテムのコンテンツタイプを取得する
- 5. Pythonでリストを印刷するときの印刷形式を制御する
- 6. VBA Outlookでメールアイテムを開き、テキストとして保存するコード
- 7. Outlookのメールアイテムの選択を変更するC#
- 8. Outlookのメールアイテムのサイズを取得する方法は?
- 9. Outlookのエクスチェンジユーザー用のVBスクリプトでのユーザープロパティの取得
- 10. 新しいメールアイテムにOutlookの署名を追加する
- 11. IE7での印刷サイズの制御
- 12. IdとOutlook REST APIを使用してメールアイテムを取得する
- 13. VSTOで開封する前にOutlookの電子メールアイテムを変更する方法
- 14. iReportで抑制する
- 15. cppcheckインライン非適合抑制を抑制する方法は?
- 16. インラインニットの制御桁の印刷
- 17. Outlook 2007でVBAを使ってプログラムで文書を印刷する
- 18. OutlookのメールアイテムをC#コードで読み取れないとマークする
- 19. AirPrint:TLSをサポートするプリンタにのみ印刷を制限する
- 20. 出力を抑制する
- 21. SSLエラーを抑制する
- 22. Webkitで印刷するときのCSS改ページの制御
- 23. MySql:印刷する行の数を制限する方法
- 24. 強制的にHTMLで背景イメージを印刷するには?
- 25. プログラムで強制的に重複を印刷する
- 26. VSTOを使用してOutlookメールアイテムを照会
- 27. Outlook VBAベースのメールリスナー - メールアイテムの件名が表示されない
- 28. Windowsで印刷プレビューのない文書を印刷するストアアプリケーション
- 29. ASP.NET印刷機能:そのスタイルでasp.netコントロールを印刷する
- 30. 各印刷ページでGridViewのヘッダーを印刷する方法