問題タブ [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.
c# - AllowAutoPlay が呼び出されない
WinForms アプリケーションがあります。Program.cs で実際のフォームを作成する直前に、Autoplay
クラスをインスタンス化します。必須の最初の戻り値 65536 の後、登録は成功しますが、 への呼び出しはありませんAllowAutoPlay()
。
何か不足していますか?
コードは次のとおりです。
2 番目の呼び出しの Cookie は問題なく一貫していますが、131073 または 0x00020001 では問題ありません。
次の記事を使用しました: Prevent Autoplay 、65536 error、およびCodeProject。
ブレークポイントもメッセージ ボックスも表示されません。
Visual Studio 2017 を使用して Windows 10 で実行しています。
考え?
c# - 同じタイプの複数の実行中の COM オブジェクトを取得する
Word の最初に表示されているインスタンスを見つけようとしています。ここで役立つコードをいくつか見つけて、少し修正しました。
このコードの結果は次のようになります。
1 つのインスタンスで Visible が true を返すことを期待しています。常に最初のインスタンスが返されるようです。word1 が表示される場合、すべてのインスタンスに対して true が返されます。
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();
、問題はありません。
そのため、左に開いたプロセスの問題は、次の特定の組み合わせでのみ発生します。
- からInventorを起動します
Activator.CreateInstance(InventorType);
- ユーザが手で Inventor を終了する
開いたままのプロセスは実行中のオブジェクト テーブルに存在しないため、COM オブジェクトとして処理できなくなり、UI が表示されなくなります。つまり、タスク マネージャーでのみ強制終了できます。
説明されているように「悪い組み合わせ」を使用して、さまざまな組み合わせと before および/または after で何度か呼び出しを試みましたGC.WaitForPendingFinalizers(); GC.Collect();
(これが悪いことはわかっていますが、すべてを試しているだけです) Marshal.ReleaseComObject(invApp); Marshal.FinalReleaseComObject(invApp);
。文字通り他に何もしない最小限のアプリも試しました。コードについては、以下を参照してください。
それで、Activator.CreateInstance(InventorType);
これを引き起こしているのは何ですか?これを防ぐ方法はありますか?それとも、これは Inventor 固有の問題ですか?
最小限のアプリの例: