2012-01-04 11 views
0

GetActiveObjectは、最初に開いたアプリケーションのCOMオブジェクトを取得することができます。実行中のオブジェクトをすべて取得するには?例えば私は2つのExcelアプリケーションを実行する、どのようにC + +コードで2つのExcelオブジェクトを取得するには?COM:実行中のオブジェクトをすべて取得する方法

+0

を¤ [Microsoft KB資料180885](http://support.microsoft.com/kb/190985)を参照してください。 "ExcelまたはWord文書のIDispatchを取得する方法OCXからの援助」を参照してください。このKB資料は、[アプリケーションインスタンスに直接アクセスできない理由](http://support.microsoft.com/kb/238975)で説明されている記事の質問に対する回答として挙げられています。私はこれらのものを2〜2回のグーグルで見つけました。それを生きているように振る舞い、そしてFirefoxタブを閉じることさえある、恐怖のノートパソコンのキーボードがここに入力すると、何桁も長い時間がかかりました。私は現在のラップトップのデザインをマウスパッドで嫌う。乾杯、 –

+0

私はこれらの2つの記事を読んでいました。しかし、まだ方法は私の虫を解決することはできません。したがって、2つのExcelが同じドキュメントを開くと、最初のドキュメントのみを取得できますが、それは問題です。その他のソリューション?ありがとう。 – ldlchina

+0

これは仕様です。実際に実行されるExcelのインスタンスは1つだけです。 Taskmgr.exeの[プロセス]タブで簡単に確認できます。 Workbooksオブジェクトを使用して、開いているドキュメントを反復処理します。 –

答えて

1

通常、Hansの言うとおり、Excelのインスタンスは1つしかありません。インスタンスが1つしかない場合、同じドキュメントを2回開くことを拒否します。

しかし、通常は1秒が明示的に開始されている場合は、複数の場合があります。その場合、同じファイルを開くことができます(ただし、ロックについての警告が表示されます)。

実行オブジェクトテーブルに表示される場合と表示されない場合があります。それが事実であるかどうかを判断するためにROTビューアまたはこのようなものを使用します。

http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/ccccc9bd-f21a-4f74-a3f0-64a594fa1b16

最後には、Microsoft UIオートメーションを使用して検討するかもしれない:

関連する問題