hamster man
Messages postés103Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention21 juin 2007
-
21 juin 2007 à 14:22
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
22 juin 2007 à 08:28
Bonjour à tous,
voila mon souci:
je fais un programme ki detecte si excel est ouvert, le but de cette manoeuvre est de ne pas copier un fichier excel si excel est ouvert.
je voudrais copier le fichier que lorsque dans la liste des processus, il n'y a pas "EXCEL.EXE" de detecter..
voici mon code (une partie du moins) :
Private Sub Processus_timer()
Dim xObj
Dim Processus
Set xObj = GetObject("winmgmts:").InstancesOf("Win32_Process")
For Each Processus In xObj
If Processus.Name = "EXCEL.EXE" Then Exit For
Next Processus
Processus.Enabled = False
End Sub
quelqu'un aurait un moyen car je ne sais pas trop comment m'en sortir....je pense qu'il faudrait une boucle dans une autre mais j'en suis pas sur!
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 21 juin 2007 à 14:38
ton code utilise WMI
tu pourrais faire ceci :
Private Function IsExcelLaunched() As Boolean
Dim Processus As Object
For Each Processus In GetObject("winmgmts:").InstancesOf("Win32_Process")
If StrComp(Processus.Name, "EXCEL.EXE", vbTextCompare) = 0 Then
IsExcelLaunched = True
Exit Function
End If
Next Processus
End Function , ----
By Renfield
Maintenant, y'a une particularité...
Excel est un serveur ActiveX inscrit dans la ROT (Running Objects Table).... tu peux donc faire :
Private Function IsExcelLaunched() As Boolean
On Error Resume Next
Interaction.GetObject , "Excel.Application" IsExcelLaunched (Err 0)
On Error GoTo 0
End Function , ----
By Renfield
hamster man
Messages postés103Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention21 juin 2007 21 juin 2007 à 14:45
Merci beaucoup vraiment mais je ne vois pas comment je pourrais inserer la condition du copierFichier dans le code que tu m'as donné?
Private Function IsExcelLaunched() As Boolean On Error Resume Next Interaction.GetObject , "Excel.Application" IsExcelLaunched (Err0)
On Error GoTo 0 End Function
'<DllImport("user32")> _
Public Shared Function GetWindowThreadProcessId(ByVal hwnd As IntPtr, ByRef lpdwProcessId As Long) As Long
End Function
'<DllImport("user32", CharSet:=CharSet.Ansi)> _
Public Shared Function GetClassName(ByVal hWnd As IntPtr, ByVal text As String, ByVal cch As Integer) As Integer
End Function
'<DllImport("user32", CharSet:=CharSet.Ansi)> _
Public Shared Function GetWindowText(ByVal hWnd As IntPtr, ByVal text As String, ByVal cch As Integer) As Integer
End Function
Delegate Function EnumWindowsProc(ByVal hWnd As IntPtr, ByVal lParam As Integer) As Boolean
Delegate Function EnumChildWindowsProc(ByVal Hwnd As IntPtr, ByVal lParam As Integer) As Boolean
'<DllImport("user32")> _
Public Shared Function EnumWindows(ByVal lpEnumFunc As EnumWindowsProc, ByVal lParam As Long) As Long
End Function
'<DllImport("user32")> _
Public Shared Function EnumChildWindows(ByVal hWndParent As IntPtr, ByVal lpEnumFunc As EnumChildWindowsProc, ByVal lParam As Long) As Long
End Function