問題タブ [ole]

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 投票する
1 に答える
610 参照

javascript - iDispatch DISPATCH_PROPERTYGET を使用した IE で許可が拒否されました

ATL を使用して記述した ActiveX コントロールがあり、やや深刻で紛らわしい問題に直面しています。iDispatch::Invoke が DISPATCH_PROPERTYPUT/METHOD で呼び出されると、すべて問題ありません。IE javascript に値を返すと、有効な BSTR を使用して VT_BSTR のメソッドを呼び出した後、正常に動作します。

しかし、私がしようとすると:

var stringValue = Object.stringValue;

DISPATCH_PROPERTYGET フラグで呼び出された iDispatch を呼び出し、有効な BSTR (メソッド呼び出しで使用するものとまったく同じ) を使用して戻り値を VT_BSTR に設定すると、IE でアクセス許可拒否エラー ボックスが表示されます。

他のさまざまなデータ型 (long、integer、bool など) を IE javascript に返すと、正常に動作します (propertyGet() メソッドを使用)。VT_BSTR を返すときにのみアクセス許可が拒否されます。

何か案は?

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

ms-access - OLE オブジェクトを使用して MS Access レポートに印刷された Word ドキュメント

長年にわたり、アクセス レポートを使用して OLE オブジェクト列に保存された Word 2003 文書を印刷してきました。Access2003を使用しています。

Word 2003 ドキュメントをコピーして OLE オブジェクトに貼り付けると、何らかの理由で正しく印刷されず、文字間隔に微妙な違いがあります。

ただし、数か月前にコピーして貼り付けた OLE オブジェクトを使用すると、問題なく出力されます。

私が考えられるのは、Office 2003 の更新プログラムが原因であるということだけです。

他の誰かがこの問題と回避策を見つけましたか?

どうもありがとう

Office サービス パックを適用せずにマシンを作成しましたが、これで問題は回避されました。

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

c# - OLEVariant から .Net byte[]

ネット経由でクライアント側のコンポーネントから受け取る .Net オブジェクトを装った OLEVariant があります。内容がバイト配列であることはわかっていますが、それらの内容をネイティブの .Net バイト配列 (byte[]) に変換する方法がわかりません。変換を達成する方法についての手がかりはありますか?

編集:私たちは自分の質問に答えました。OleVariant (バイト配列型) を .Net byte[] に取得するには、オブジェクトが .Net Array に入るときにオブジェクトをポンピングし、配列の上限を取得して、上限サイズの新しい byte[] を作成し、最後にArray.Copy() を実行します。

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

windows - DISPID によるプロパティまたはメソッド

特定の DISPID (GetIDsOfNames の結果) がメソッド、プロパティ getter、または setter のいずれであるかを知ることは可能ですか?

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

windows - 複数の ProgID が同じ ClsID を指すことはできますか?

私は、基本的にプラグインである一連の COM サーバーに取り組んでいます。各プラグインには、別のコンポーネントによって管理される構成データのセットがあり、構成データの主キーはプラグインの ProgID です。プラグインが構成アイテムにアクセスする必要がある場合、呼び出しを行い、その ProgID と必要なプロパティの名前を渡します。これは従来の設計であり、下位互換性を維持する必要があります。

各プラグインの複数のインスタンスをロードする必要があり、各インスタンスには異なる構成データのセットがあります。私が検討している解決策は、プラグインごとに複数の一意の ProgID を作成することです。各 ProgID は、プラグインの単一の ClsId を指します。したがって、プラグインの各インスタンスはその ProgID によって識別され、ProgID は引き続き構成データの主キーとして使用され、すべてに 100% の下位互換性があります。

だから、質問:

  1. これは受け入れられる技術ですか?(複数の ProgID がすべて単一の ClsID を指しています)。
  2. プラグインが読み込まれると、作成に使用された ProgID を認識できますか?
0 投票する
2 に答える
368 参照

windows - ProgIDに課せられた要件に違反した場合はどうなりますか?

このMSDNの記事では、ProgIDは、長さの制限を含め、いくつかの正式な要件を満たす必要があると述べています。しかし、それらが違反された場合に何が起こるかについては何も言われていません。

コードベースでProgIDが39文字より長い場所をいくつか見つけましたが、ProgIDFromCLSID()とCLSIDFromProgID()を含め、すべてが正常に機能しているようです。

これらの要件に違反することは非常に簡単なので、そのような違反の実際に起こりうる結果を知ることは非常に興味深いでしょう。

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

c++ - VARIANT と _variant_t の間のコピー

私は安全にできると確信しています:

しかし、その逆はどうでしょうか。

COM 関連のスレッド化の問題が原因で、アプリで非常に奇妙な動作が見られます。しかし、バリアントを間違って使用してメモリを台無しにしていたのではないかと思いました。funcB では、VARIANT V は、COM 呼び出し用に準備されているセーフ配列の一部です。私の V=vt 行で、同じバリアントの割り当てが 2 回解除されると問題が発生する浅いコピーを行っていますか?

私は _variant_t が本当に好きで、すべての ::VariantXXX メソッドを避けています。コピーを自動化するために funcB で _variant_t を使用するきちんとした方法はありますか?

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

com - MFC オートメーション RemoveDocument OnCloseDocument を実装する方法

MFC MDI アプリケーションがあり、オートメーションを実装しようとしています。RemoveDocument を作成しようとしています。それはどのように行われますか?OnCloseDocument が問題を引き起こしています。それを行うための「標準」はありますか?

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

python - Python OLE2 日付形式変換

Word文書のOLEストリームからデータを引き出すPythonスクリプトを作成しましたが、OLE2形式のタイムスタンプを人間が読める形式に変換するのに問題があります:(

抽出されたタイムスタンプは 12760233021 ですが、これを 2007 年 3 月 12 日などの日付に変換することはできません。

どんな助けでも大歓迎です。

編集: OK 、2009 年 10 月31 日 10:05:00に作成された Word ドキュメントの 1 つに対してスクリプトを実行しました。OLE DocumentSummaryInformation ストリームの作成日は12901417500です。

別の例として、2009 年 10 月 27 日 15:33:00 に作成された単語 doc は、OLE DocumentSummaryInformation ストリームで 12901091580 の作成日を示します。

これらの OLE ストリームのプロパティに関する MSDN ドキュメントは、http://msdn.microsoft.com/en-us/library/aa380376%28VS.85%29.aspxです。

これらのストリームを引き出す定義を以下に示します。

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

ole - ocx コントロールが正しく登録されないのはなぜですか?

サードパーティの ocx コントロールを使用する必要があるアプリを作成しています。私の Inno Setup スクリプトには、次の行が含まれています。

Source: C:\aPath\aControl.ocx; DestDir: {app}; Flags: restartreplace sharedfile regserver

コントロールが登録されているように見えますが、インストールされたアプリは、Win2000 で作業しているときにコントロールが登録されていないという EOleSysErrors を返します。ここで何が起こっているのか、またはそれを修正する方法について何か考えはありますか?

ありがとう、いつものように!

ps私は管理者レベルのコントロールで作業しています。これは、ActiveX コントロールを登録するときに必ず必要になると思います。(そうですか?)