問題タブ [running-object-table]

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 に答える
128 参照

c# - AllowAutoPlay が呼び出されない

WinForms アプリケーションがあります。Program.cs で実際のフォームを作成する直前に、Autoplayクラスをインスタンス化します。必須の最初の戻り値 65536 の後、登録は成功しますが、 への呼び出しはありませんAllowAutoPlay()

何か不足していますか?

コードは次のとおりです。

2 番目の呼び出しの Cookie は問題なく一貫していますが、131073 または 0x00020001 では問題ありません。

次の記事を使用しました: Prevent Autoplay 、65536 error、およびCodeProject

ブレークポイントもメッセージ ボックスも表示されません。

Visual Studio 2017 を使用して Windows 10 で実行しています。

考え?

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

c# - 同じタイプの複数の実行中の COM オブジェクトを取得する

Word の最初に表示されているインスタンスを見つけようとしています。ここで役立つコードをいくつか見つけて、少し修正しました。

このコードの結果は次のようになります。

1 つのインスタンスで Visible が true を返すことを期待しています。常に最初のインスタンスが返されるようです。word1 が表示される場合、すべてのインスタンスに対して true が返されます。

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

c# - Activator.CreateInstance() で作成したときに Inventor COM オブジェクトが解放されない

私の問題は次のとおりです。Autodesk Inventor が実行されていない場合、私のアプリ (コンソール アプリ) は新しいインスタンスを作成し、Activator.CreateInstance(InventorType);それを COM オブジェクトとして使用します。アプリが Inventor を終了せずに開いたままにし、後でユーザーが手動で終了した場合、タスク マネージャーでのみ実行されているプロセスのInventor.exeがタスク マネージャーでのみ強制終了されます。興味深いことに、この問題は、これら 2 つのことが組み合わされた場合にのみ発生します。アプリがInventorApp.Quit();適切に閉じられた状態で Inventor を終了するたびに、開いたままのプロセスはありません。

アプリが Inventor を起動するProcess.Start(..);か、ユーザーがアプリを起動する前に Inventor を起動し、アプリが Inventor を取得しMarshal.GetActiveObject(ProgId);た場合、アプリまたはユーザーが Inventor を終了しても問題はありません。

アプリで Inventor を起動してから Inventor をActivator.CreateInstance(InventorType);開いたままにしておくと、アプリを閉じてから再起動するMarshal.GetActiveObject(..);と、Inventor が取得されて Inventor が終了しInventorApp.Quit();、問題はありません。

そのため、左に開いたプロセスの問題は、次の特定の組み合わせでのみ発生します。

  1. からInventorを起動しますActivator.CreateInstance(InventorType);
  2. ユーザが手で Inventor を終了する

開いたままのプロセスは実行中のオブジェクト テーブルに存在しないため、COM オブジェクトとして処理できなくなり、UI が表示されなくなります。つまり、タスク マネージャーでのみ強制終了できます。

説明されているように「悪い組み合わせ」を使用して、さまざまな組み合わせと before および/または after で何度か呼び出しを試みましたGC.WaitForPendingFinalizers(); GC.Collect();(これが悪いことはわかっていますが、すべてを試しているだけです) Marshal.ReleaseComObject(invApp); Marshal.FinalReleaseComObject(invApp);。文字通り他に何もしない最小限のアプリも試しました。コードについては、以下を参照してください。

それで、Activator.CreateInstance(InventorType);これを引き起こしているのは何ですか?これを防ぐ方法はありますか?それとも、これは Inventor 固有の問題ですか?

最小限のアプリの例: