j'ai finalement réussi...
j'ai regardé plus en détail le lien que tu m'as transmis, avec le code qu'il utilisait, il essayait de récupérer directement les instances d'Excel mais en modifiant le GUID pour mettre celui d'un Workbook, on arrive a récupérer les fichiers ouverts.
Je comprend pas trop comment tout ca fonctionne mais tant que ca marche ! voici le code au cas ou d'autres personnes seraient interessés :
Code :
- Dim pp As IEnumMoniker = Nothing
- Dim instance As IBindCtx = Nothing
- Dim pprot As IRunningObjectTable = Nothing
- Dim iError As Integer
- iError = CreateBindCtx(0, instance)
- instance.GetRunningObjectTable(pprot)
- pprot.EnumRunning(pp)
- pp.Reset()
- Dim monikerContainer() As IMoniker
- ReDim monikerContainer(1)
- Dim pointerFetchedmonikers As IntPtr = IntPtr.Zero
- While (pp.Next(1, monikerContainer, pointerFetchedmonikers) = 0)
- Dim bindinfo As IBindCtx = Nothing
- CreateBindCtx(0, bindinfo)
- Dim boundcomobject As Object = Nothing
- Dim iid As Guid = New Guid("000208DA-0000-0000-C000-000000000046" )
- Try
- monikerContainer(0).BindToObject(bindinfo, Nothing, iid, boundcomobject)
- Dim wk As Microsoft.Office.Interop.Excel.Workbook = boundcomobject
- Debug.Print(wk.Name)
- Catch ex As Exception
- System.Runtime.InteropServices.Marshal.ReleaseComObject(bindinfo)
- End Try
- End While
- If Not pprot Is Nothing Then
- System.Runtime.InteropServices.Marshal.ReleaseComObject(pprot)
- End If
- If Not pp Is Nothing Then
- System.Runtime.InteropServices.Marshal.ReleaseComObject(pp)
- End If
|
Merci encore pour ton aide
Message édité par Arwon le 19-11-2010 à 15:18:34