Bonjour Sur le site de Frédéric tu trouveras surement ton bonheur (avec les API) http://perso.wanadoo.fr/frederic.sigonneau/code/Systeme/APIGestionsDesFenetr es.txt Cordialement Pascal
"HD" a écrit dans le message de news: #
Bonjour,
Comment puis-je, en VBA, obtenir la liste des fenêtres Windows ouvertes?
Merci d'avance pour votre aide. -- @+ HD
Bonjour
Sur le site de Frédéric tu trouveras surement ton bonheur (avec les API)
http://perso.wanadoo.fr/frederic.sigonneau/code/Systeme/APIGestionsDesFenetr
es.txt
Cordialement
Pascal
"HD" <hd@anti.spam.fr> a écrit dans le message de news:
#JD5ubgIEHA.3224@TK2MSFTNGP09.phx.gbl...
Bonjour,
Comment puis-je, en VBA, obtenir la liste des fenêtres Windows ouvertes?
Bonjour Sur le site de Frédéric tu trouveras surement ton bonheur (avec les API) http://perso.wanadoo.fr/frederic.sigonneau/code/Systeme/APIGestionsDesFenetr es.txt Cordialement Pascal
"HD" a écrit dans le message de news: #
Bonjour,
Comment puis-je, en VBA, obtenir la liste des fenêtres Windows ouvertes?
Merci d'avance pour votre aide. -- @+ HD
HD
Je suppose que je dois utiliser la macro EnumWindows(CtlListBox As Control, FR As Form) mais je ne parviens pas à la faire tourner. Je fais
ret = EnumWindows(ListBox1, UserForm1)
et j'ai un message d'erreur :
" Erreur de compilation Type défini par l'utilisateur non défini "
-- @+ HD
Je suppose que je dois utiliser la macro EnumWindows(CtlListBox As Control,
FR As Form) mais je ne parviens pas à la faire tourner. Je fais
ret = EnumWindows(ListBox1, UserForm1)
et j'ai un message d'erreur :
" Erreur de compilation
Type défini par l'utilisateur non défini "
Je suppose que je dois utiliser la macro EnumWindows(CtlListBox As Control, FR As Form) mais je ne parviens pas à la faire tourner. Je fais
ret = EnumWindows(ListBox1, UserForm1)
et j'ai un message d'erreur :
" Erreur de compilation Type défini par l'utilisateur non défini "
-- @+ HD
papou
Re Je n'ai jamais essayé mais en regardant vite fait, il me semble que le message d'erreur est lié au fait que FR (utilisé dans la fonction) n'est pas un objet Form (objet formulaire dans VB) mais un Userform (objet formulaire dans VBA) dans ton cas. Donc tu dois pouvoir modifier comme ça : Sub EnumWindows(CtlListBox As Control, FR As UserForm)
Cordialement Pascal
"HD" a écrit dans le message de news: c5ja50$2lmc$
Je suppose que je dois utiliser la macro EnumWindows(CtlListBox As Control,
FR As Form) mais je ne parviens pas à la faire tourner. Je fais
ret = EnumWindows(ListBox1, UserForm1)
et j'ai un message d'erreur :
" Erreur de compilation Type défini par l'utilisateur non défini "
-- @+ HD
Re
Je n'ai jamais essayé mais en regardant vite fait, il me semble que le
message d'erreur est lié au fait que FR (utilisé dans la fonction) n'est pas
un objet Form (objet formulaire dans VB) mais un Userform (objet formulaire
dans VBA) dans ton cas.
Donc tu dois pouvoir modifier comme ça :
Sub EnumWindows(CtlListBox As Control, FR As UserForm)
Cordialement
Pascal
"HD" <hd@anti.spam.fr> a écrit dans le message de news:
c5ja50$2lmc$1@biggoron.nerim.net...
Je suppose que je dois utiliser la macro EnumWindows(CtlListBox As
Control,
FR As Form) mais je ne parviens pas à la faire tourner. Je fais
ret = EnumWindows(ListBox1, UserForm1)
et j'ai un message d'erreur :
" Erreur de compilation
Type défini par l'utilisateur non défini "
Re Je n'ai jamais essayé mais en regardant vite fait, il me semble que le message d'erreur est lié au fait que FR (utilisé dans la fonction) n'est pas un objet Form (objet formulaire dans VB) mais un Userform (objet formulaire dans VBA) dans ton cas. Donc tu dois pouvoir modifier comme ça : Sub EnumWindows(CtlListBox As Control, FR As UserForm)
Cordialement Pascal
"HD" a écrit dans le message de news: c5ja50$2lmc$
Je suppose que je dois utiliser la macro EnumWindows(CtlListBox As Control,
FR As Form) mais je ne parviens pas à la faire tourner. Je fais
ret = EnumWindows(ListBox1, UserForm1)
et j'ai un message d'erreur :
" Erreur de compilation Type défini par l'utilisateur non défini "
-- @+ HD
HD
Donc tu dois pouvoir modifier comme ça : Sub EnumWindows(CtlListBox As Control, FR As UserForm)
Même avec les corrections (Form => UserForm) je n'y arrive pas... Pourtant ces fonctions sont bien dans la rubrique "VBA Excel" du site... -- @+ HD
Donc tu dois pouvoir modifier comme ça :
Sub EnumWindows(CtlListBox As Control, FR As UserForm)
Même avec les corrections (Form => UserForm) je n'y arrive pas... Pourtant
ces fonctions sont bien dans la rubrique "VBA Excel" du site...
--
@+
HD
Donc tu dois pouvoir modifier comme ça : Sub EnumWindows(CtlListBox As Control, FR As UserForm)
Même avec les corrections (Form => UserForm) je n'y arrive pas... Pourtant ces fonctions sont bien dans la rubrique "VBA Excel" du site... -- @+ HD
Michel Pierron
Bonjour HD;
Private Declare Function GetWindowTextLength Lib "user32.dll" Alias _ "GetWindowTextLengthA" (ByVal hwnd As Long) As Long Private Declare Function GetWindowText Lib "user32.dll" Alias _ "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String _ , ByVal nMaxCount As Long) As Long Private Declare Function EnumWindows Lib "user32.dll" _ (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Private Declare Function IsWindowVisible Lib "user32" _ (ByVal hwnd As Long) As Long Private x&
Private Function EnumWindowsProc&(ByVal hwnd&, ByVal lParam&) Dim SLength&, Buffer As String, RetVal& SLength = GetWindowTextLength(hwnd) + 1 If SLength > 1 Then Buffer = Space(SLength) RetVal = GetWindowText(hwnd, Buffer, SLength) x = x + 1 Cells(x, 1) = Left(Buffer, SLength - 1) Cells(x, 2) = CBool(IsWindowVisible(hwnd)) End If EnumWindowsProc = 1 End Function
Sub WinList() Application.ScreenUpdating = False Cells.ClearContents Cells(1, 1) = "CAPTION" Cells(1, 2) = "VISIBLE" Range("A1:B1").Font.Bold = True Range("A2").Select ActiveWindow.FreezePanes = True x = 1 EnumWindows AddressOf EnumWindowsProc, 0 Cells.Columns.AutoFit End Sub
MP
"HD" a écrit dans le message de news:%
Bonjour,
Comment puis-je, en VBA, obtenir la liste des fenêtres Windows ouvertes?
Merci d'avance pour votre aide. -- @+ HD
Bonjour HD;
Private Declare Function GetWindowTextLength Lib "user32.dll" Alias _
"GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowText Lib "user32.dll" Alias _
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String _
, ByVal nMaxCount As Long) As Long
Private Declare Function EnumWindows Lib "user32.dll" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" _
(ByVal hwnd As Long) As Long
Private x&
Private Function EnumWindowsProc&(ByVal hwnd&, ByVal lParam&)
Dim SLength&, Buffer As String, RetVal&
SLength = GetWindowTextLength(hwnd) + 1
If SLength > 1 Then
Buffer = Space(SLength)
RetVal = GetWindowText(hwnd, Buffer, SLength)
x = x + 1
Cells(x, 1) = Left(Buffer, SLength - 1)
Cells(x, 2) = CBool(IsWindowVisible(hwnd))
End If
EnumWindowsProc = 1
End Function
Sub WinList()
Application.ScreenUpdating = False
Cells.ClearContents
Cells(1, 1) = "CAPTION"
Cells(1, 2) = "VISIBLE"
Range("A1:B1").Font.Bold = True
Range("A2").Select
ActiveWindow.FreezePanes = True
x = 1
EnumWindows AddressOf EnumWindowsProc, 0
Cells.Columns.AutoFit
End Sub
MP
"HD" <hd@anti.spam.fr> a écrit dans le message de
news:%23JD5ubgIEHA.3224@TK2MSFTNGP09.phx.gbl...
Bonjour,
Comment puis-je, en VBA, obtenir la liste des fenêtres Windows ouvertes?
Private Declare Function GetWindowTextLength Lib "user32.dll" Alias _ "GetWindowTextLengthA" (ByVal hwnd As Long) As Long Private Declare Function GetWindowText Lib "user32.dll" Alias _ "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String _ , ByVal nMaxCount As Long) As Long Private Declare Function EnumWindows Lib "user32.dll" _ (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Private Declare Function IsWindowVisible Lib "user32" _ (ByVal hwnd As Long) As Long Private x&
Private Function EnumWindowsProc&(ByVal hwnd&, ByVal lParam&) Dim SLength&, Buffer As String, RetVal& SLength = GetWindowTextLength(hwnd) + 1 If SLength > 1 Then Buffer = Space(SLength) RetVal = GetWindowText(hwnd, Buffer, SLength) x = x + 1 Cells(x, 1) = Left(Buffer, SLength - 1) Cells(x, 2) = CBool(IsWindowVisible(hwnd)) End If EnumWindowsProc = 1 End Function
Sub WinList() Application.ScreenUpdating = False Cells.ClearContents Cells(1, 1) = "CAPTION" Cells(1, 2) = "VISIBLE" Range("A1:B1").Font.Bold = True Range("A2").Select ActiveWindow.FreezePanes = True x = 1 EnumWindows AddressOf EnumWindowsProc, 0 Cells.Columns.AutoFit End Sub
MP
"HD" a écrit dans le message de news:%
Bonjour,
Comment puis-je, en VBA, obtenir la liste des fenêtres Windows ouvertes?
Merci d'avance pour votre aide. -- @+ HD
Clément Marcotte
Bonjour,
Tu dois avoir dans le fichier en question des lignes avec "Declare" à mettre dans l'entête de ton module.
"HD" a écrit dans le message de news:
Donc tu dois pouvoir modifier comme ça : Sub EnumWindows(CtlListBox As Control, FR As UserForm)
Même avec les corrections (Form => UserForm) je n'y arrive pas... Pourtant
ces fonctions sont bien dans la rubrique "VBA Excel" du site... -- @+ HD
Bonjour,
Tu dois avoir dans le fichier en question des lignes avec "Declare" à
mettre dans l'entête de ton module.
"HD" <hd@anti.spam.fr> a écrit dans le message de
news:OlYa15iIEHA.828@TK2MSFTNGP10.phx.gbl...
Donc tu dois pouvoir modifier comme ça :
Sub EnumWindows(CtlListBox As Control, FR As UserForm)
Même avec les corrections (Form => UserForm) je n'y arrive pas...
Pourtant
ces fonctions sont bien dans la rubrique "VBA Excel" du site...
--
@+
HD
ça ne fonctionne pas... mais peut être y manque-t-il l'appel à la fonction EnumWindowsProc& ?
Private Function EnumWindowsProc&(ByVal hwnd&, ByVal lParam&)
-- @+ HD
Michel Pierron
Re HD; Quel est ton message d'erreur ? Quelle version d'Excel as-tu ? L'appel à la fonction est dans la ligne: EnumWindows AddressOf EnumWindowsProc, 0 AddressOf est inconnu dans xl97. MP
"HD" a écrit dans le message de news:%
ça ne fonctionne pas... mais peut être y manque-t-il l'appel à la fonction EnumWindowsProc& ?
Private Function EnumWindowsProc&(ByVal hwnd&, ByVal lParam&)
-- @+ HD
Re HD;
Quel est ton message d'erreur ?
Quelle version d'Excel as-tu ?
L'appel à la fonction est dans la ligne:
EnumWindows AddressOf EnumWindowsProc, 0
AddressOf est inconnu dans xl97.
MP
"HD" <hd@anti.spam.fr> a écrit dans le message de
news:%23qIl8VjIEHA.3128@TK2MSFTNGP10.phx.gbl...
ça ne fonctionne pas... mais peut être y manque-t-il l'appel à la fonction
EnumWindowsProc& ?
Private Function EnumWindowsProc&(ByVal hwnd&, ByVal lParam&)
Re HD; Quel est ton message d'erreur ? Quelle version d'Excel as-tu ? L'appel à la fonction est dans la ligne: EnumWindows AddressOf EnumWindowsProc, 0 AddressOf est inconnu dans xl97. MP
"HD" a écrit dans le message de news:%
ça ne fonctionne pas... mais peut être y manque-t-il l'appel à la fonction EnumWindowsProc& ?
Private Function EnumWindowsProc&(ByVal hwnd&, ByVal lParam&)
-- @+ HD
mousnynao
Bonjour,
Ne serait-il pas pertinent de charger la librairie : Microsoft Forms 2.0 Object Library
VBE //Outils/Références...
mousnynao!
-----Message d'origine-----
Donc tu dois pouvoir modifier comme ça : Sub EnumWindows(CtlListBox As Control, FR As UserForm)
Même avec les corrections (Form => UserForm) je n'y arrive pas... Pourtant
ces fonctions sont bien dans la rubrique "VBA Excel" du site...
-- @+ HD
.
Bonjour,
Ne serait-il pas pertinent de charger la librairie :
Microsoft Forms 2.0 Object Library
VBE //Outils/Références...
mousnynao!
-----Message d'origine-----
Donc tu dois pouvoir modifier comme ça :
Sub EnumWindows(CtlListBox As Control, FR As UserForm)
Même avec les corrections (Form => UserForm) je n'y
arrive pas... Pourtant
ces fonctions sont bien dans la rubrique "VBA Excel" du
site...
Ne serait-il pas pertinent de charger la librairie : Microsoft Forms 2.0 Object Library
VBE //Outils/Références...
mousnynao!
-----Message d'origine-----
Donc tu dois pouvoir modifier comme ça : Sub EnumWindows(CtlListBox As Control, FR As UserForm)
Même avec les corrections (Form => UserForm) je n'y arrive pas... Pourtant
ces fonctions sont bien dans la rubrique "VBA Excel" du site...
-- @+ HD
.
Frédéric Sigonneau
Bonsoir,
Une solution qui ne dépend pas, en principe, de ta version d'Excel :
Sub ProcessusActifs() Dim strComputer, objWMIServices, colProcesses, objProcess
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2") Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process") Workbooks.Add For Each objProcess In colProcesses i = i + 1 Cells(i, "a").Value = objProcess.Name Next
End Sub
Par contre, dépend de ta version de Windows. Les scripts WMI sont 'de base' avec Windows 2000, XP, 2003. Pour en disposer avec Windows 98 et NT 4 :
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
HD a écrit:
Bonjour,
Comment puis-je, en VBA, obtenir la liste des fenêtres Windows ouvertes?
Merci d'avance pour votre aide.
Bonsoir,
Une solution qui ne dépend pas, en principe, de ta version d'Excel :
Sub ProcessusActifs()
Dim strComputer, objWMIServices, colProcesses, objProcess
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2")
Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process")
Workbooks.Add
For Each objProcess In colProcesses
i = i + 1
Cells(i, "a").Value = objProcess.Name
Next
End Sub
Par contre, dépend de ta version de Windows. Les scripts WMI sont 'de base' avec
Windows 2000, XP, 2003. Pour en disposer avec Windows 98 et NT 4 :
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
HD a écrit:
Bonjour,
Comment puis-je, en VBA, obtenir la liste des fenêtres Windows ouvertes?
Une solution qui ne dépend pas, en principe, de ta version d'Excel :
Sub ProcessusActifs() Dim strComputer, objWMIServices, colProcesses, objProcess
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2") Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process") Workbooks.Add For Each objProcess In colProcesses i = i + 1 Cells(i, "a").Value = objProcess.Name Next
End Sub
Par contre, dépend de ta version de Windows. Les scripts WMI sont 'de base' avec Windows 2000, XP, 2003. Pour en disposer avec Windows 98 et NT 4 :
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
HD a écrit:
Bonjour,
Comment puis-je, en VBA, obtenir la liste des fenêtres Windows ouvertes?