問題タブ [comobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2371 参照

powershell - ComObject 名前空間アイテムをループするのではなく、特定のファイル名 (get-childitem) を使用してメタデータを抽出する方法

次のように、フォルダーをスクロールしてフォルダー内の各アイテムのメタデータを表示するための複数のコード スニペットを見つけました。

しかし、私のスクリプトでは、Get-ChildItem を使用してフォルダーをループし、選択したファイルに対して getDetailsOf() を使用して MS Office ドキュメントの作成者を抽出したいと考えています。

したがって、ファイル名 (例: $strFileName) を知っている場合、$objFolder.items() の各 $strFileName のループをスキップして、$sFileName の作成者のメタデータの詳細 ($a = 20) にアクセスできますか?

「New-Object -ComObject word.application」を使用してそれが行われるのを見たことがありますが、ドキュメントを開くと信じています。そのため、多くのファイルがユーザーによってロックされている大規模なファイル システムでは、これは遅くて苦痛になる可能性があります。

選択したファイル名の $objFolder.items() のインデックスにジャンプできますか?

0 投票する
0 に答える
162 参照

c# - Resharper が Worksheet オブジェクトについては「'NotNull' 属性でマークされたエンティティへの 'null' 割り当ての可能性」について不平を言うのはなぜですか?

Excel 相互運用アプリでいくつかの COM オブジェクトを解放する次のコードがあります。

別の場所で、そこで使用されているシートもリリースします。

これはすべて正常に機能しますが、Resharper Inspect > Code Issues in Solution は、Excel.Worksheet オブジェクトへの 2 回の ReleaseComObject() 呼び出しで「「NotNull」属性でマークされたエンティティへの「null」割り当ての可能性」を発見します (シートへの呼び出しではありません)。 、ワークブック、またはアプリケーション オブジェクト)。それらは次のように定義されます。

Worksheet がそれほど [非] 特別な理由は何ですか? さらに重要なことに、それらの ReleaseComObject() コードを削除する必要がありますか? そして、それらを解放する代わりに何か他のものを使用しますか?

注:ここのVVS による「Excel 相互運用オブジェクトを適切にクリーンアップする方法」という質問に対する受け入れられた回答は、474 の賛成票で、シートがこのようにリリースされていることを示してます...?!?

アップデート

さて、私は MethodMan のアドバイスに従いました (そのようなモニカで誰がそうしないでしょうか?) そして今、私は:

0 投票する
1 に答える
344 参照

excel - PowerShell - 複数の ComObjects の操作は不安定ですか?

テーブルを開いて Excel から Word にコピーするスクリプトを書いていますが、実行ごとに結果が異なります。最初はうまく機能しますが、数回実行すると、迷惑な赤いテキストが表示され始めます (特に、「呼び出しは呼び出し先によって拒否されました」と、$wordObject.Selection.TypeParagraph のような選択オブジェクトのメソッドは $wordObject.Selection が null 値になるため実行できません)。表現。

それらを閉じた後に ReleaseComObject を試みましたが、それでも問題が発生します

これは、同じセクションで 2 つの ComObject を使用しているからですか? 私のスクリプト構造は次のようなものです:

閉じて終了します。

ここにエラーがあります ここ に画像の説明を入力してください

何か案が?

*更新: 私のラップトップではなく、オフィスの PC ではスクリプトがエラーなしで実行されるのは奇妙です =.=

0 投票する
1 に答える
3923 参照

powershell - Powershell -comobject wscript.shell 改行構文

いくつかの変数を設定し、確認ボタンでそれらの変数を表示するウィンドウをポップアップ表示するスクリプトを作成しています。ウィンドウに移動して、テキストの後に 1 つの変数を表示することはできますが、通知ウィンドウの次の行に移動するための構文がわかりません。

`n のさまざまな組み合わせを試しましたが、わかりません。

前もって感謝します

0 投票する
1 に答える
77 参照

c# - ループ内で Range.Start にアクセスすると、Comparer のパフォーマンスが向上します

非常に奇妙な問題が発生しています。したがって、その背景には、WordContentControlと、そのコントロール内のコンテンツに関連する情報を格納するために使用するカスタム オブジェクトとの間のマッピングがあります。SortedList<ContentControl, OurCustomObject>このマッピングを維持するためにa を使用します。SortedList パーツは、コンテンツ コントロールに関連付けられたオブジェクトにすばやくアクセスできるだけでなく、次/前のコンテンツ コントロールを見つけるのにも役立ちます。

これを設定するには、次のようにします。

これはかなりうまくいくように見えましたが、最近、約 5000 のコンテンツ コントロールを含むドキュメントで試してみたところ、完全にクロール (SortedList のインスタンス化に 3 分以上) まで遅くなりました。

それだけでも十分に奇妙ですが、さらに奇妙なことはまだありませんでした。何が起こっているのかを把握するためにログを追加したところContentControl、リストでそれらを使用する前にそれぞれの開始をログに記録すると、最大 60 倍高速化されることがわかりました。(はい、ロギングを追加すると速度が上がりました!)。はるかに高速なコードは次のとおりです。

SortedList のコンストラクターArray.Sort<TKey, TValue>(keys, values, comparer);は、ディクショナリのキーと値を呼び出します。事前にループ内の Range オブジェクトにアクセスすると速度が向上する理由がわかりません。たぶん、それらがアクセスされる順序と関係がありますか?foreach ループは、ドキュメントに表示される順序でそれらにアクセスしますが、Array.Sort はあちこち飛び回ります..

編集:私がSortedListと言うとき、私はSystem.Collections.Generic.SortedList<TKey, TValue>. 私が使用しているコンストラクターのコードは次のとおりです。

0 投票する
1 に答える
3024 参照

c# - System.__ComObject を文字列に変換するには?

QVObject.GetType()を返しますSystem.__ComObject。この結果を として保存する方法はstring?

0 投票する
1 に答える
1172 参照

c# - アドイン アプリケーション全体で単一の Redemption.rdosession オブジェクトを保持する方法

私の Outlook アドインでは、新しい rdoSession オブジェクトを作成し、次のように rdoSession オブジェクトを使用する必要があるたびに mapi オブジェクトを設定します。

Redemption.RDOSession セッション = Redemption.RedemptionLoader.new_RDOSession(); session.MAPIOBJECT = outlookApplicaitonObject.Session.MAPIOBJECT;

静的な Redemption.rdoSession オブジェクトをグローバルに 1 つ持つ可能性はありますか? 静的な RdoSession オブジェクトを宣言しましたが、次の例外がスローされることがあります。

タイプ 'System.__ComObject' の COM オブジェクトをインターフェイス タイプ 'Redemption.IRDOSession' にキャストできません。IID '{E54C5168-AA8C-405F-9C14-A4037302BD9D}' を持つインターフェイスの COM コンポーネントでの QueryInterface 呼び出しが次のエラーにより失敗したため、この操作は失敗しました: タイプ ライブラリ/DLL の読み込み中にエラーが発生しました。(HRESULT からの例外: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))

この理由は何ですか?私がやろうとしていることは可能ですか?