2009-07-08 16 views
1

私は、独自のデータベースをCOMコンポーネントとして持つアプリケーションを持っています。私は、このCOMデータベースのためにC#を使用して既に実行中のインスタンスにリンクするアプリケーションを書く必要があります。そのため、データベースの値を2つにして、アプリケーションにどのように影響するかを確認できます。.NET Interopを使用して、既に実行中のCOMオブジェクトにどのようにアクセスしますか?

これまで、私はMonikersを使って同様のアプリケーションを書いてきました。

実行可能なCOMコンポーネントに.NETアプリケーションからアクセスする方法はありますか。

void BindToMoniker() 
{ 
    string pptxFile; 
    PowerPoint.Presentation pptx; 

    pptx = (PowerPoint.Presentation)Marshal.BindToMoniker(pptxFile); 
    pptx.Application.Visible = Office.MsoTriState.msoTrue; 
} 

別のオプションは、AccessibleObjectFromWindow(完全なサンプルを使用してウィンドウハンドルからのIDispatchポインタを取得することです:あなたは、内部でのWin32 BindToMoniker関数を呼び出すMarshal.BindToMonikerをチェックアウトする場合があります.NETでモニカーを使用するには

答えて

3

this questionで説明されています

// AccessibleObjectFromWindow gets the IDispatch pointer of an object 
// that supports IAccessible, which allows us to get to the native OM. 
[DllImport("Oleacc.dll")] 
private static extern int AccessibleObjectFromWindow(
    int hwnd, uint dwObjectID, 
    byte[] riid, 
    ref PowerPoint.DocumentWindow ptr); 

アンドリュー・ホワイトチャペルによって、次のブログ記事は(MS Officeの自動化に関連する)もCOMオブジェを作成し、取得する方法についての有用資源であるかもしれません.NETでのCTS:

Launching Office Apps Programmatically

関連する問題