ComButton enabled=false si processus en Arri plan

  • Initiateur de la discussion Guigui
  • Date de début
G

Guigui

Guest
Hello le forum,
de retour d'une tite semaine de vacances, me revoici avec un nouveau probleme ....

J'ai un fichier excel ouvert, avec un CommandButton.
Je souhaiterais que ce bouton soit rendu inclicable (enabled=false)
SI...
le processus Extranet.exe est en fonction en arriere plan sur Win xp

En clair, si mon programme Extranet est en cours d'utilisation, alors mon bouton ds excel est inclicable ...

Je n'ai aucune idée d'un moindre début de code ...
Alors si quelqu'un peut m'aider ...

Merci d'avance pour votre aide..

A+ Guillaume
Si vous avez des questions n'hésitez pas...
 
G

Guigui

Guest
Hello Creepy, le forum, le fil

Le programme extranet tourne avant l'ouverture de mon fichier excel.
Et quand ce programme est éteint, je souhaiterais retrouvé mon bouton clicable...

Voilà Creepy, si tu as d'autre questions...

Merci d'avance
A+
Guillaume
 

Guigui

XLDnaute Occasionnel
Hello tous le monde ...

J'ai besoin d'une petite aide pour me lancer dans ce code...
rendre inclicable un bouton dans une feuille quand sous windows, le programme 'extranet.exe' tourne (en sous-marin dans les processus)

Merci d'avance pour vos réponses...

Creepy... tu jetes l'eponges ?? :p

A+
Guillaume
 

Creepy

XLDnaute Accro
Hello all,

Non non je ne jette pas l'eponge, j'ai trouvé ca sur le net à toi de l'adapter !

Private Sub Command1_Click()
Dim process As String
Dim i As Integer
process = 'Sans titre - Bloc-notes'
Call GetWinHandles
For i = 0 To UBound(atabwhnd)
If atabwhnd(i) = process Then
MsgBox atabwhnd(i)
End If
Next
End Sub


Dans un module

Public Declare Function EnumWindows& Lib 'user32' (ByVal lpEnumFunc As Long, _
ByVal lParam As Long)
Public Declare Function GetWindowText Lib 'user32' _
Alias 'GetWindowTextA' (ByVal hwnd As Long, _
ByVal lpString As String, _
ByVal cch As Long) As Long
Public Declare Function GetClassName Lib 'user32' Alias 'GetClassNameA' (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Public atabwhnd()
Public iWnd As Integer

Public Sub GetWinHandles()
' permet de connaitre toutes les applications en cours
Dim lonstatus As Long
Dim londummy As Long
iWnd = 0&
lonstatus = EnumWindows&(AddressOf EnumWindowsproc, ByVal iWnd)
End Sub
Function EnumWindowsproc(ByVal addhWnd As Long, ByVal optparam As Long) As Long
' extrait les proccess en cours
Dim st As String
Dim cc As Long
Dim x As Long
Dim y
Dim z As Long
Dim sclass As String
sclass = String(250, ' ')
y = addhWnd
cc = 250
st = Space(250)
x = GetWindowText(addhWnd&, st, cc)
If Asc(Left(st, 1)) > 0 Then
If iWnd > 0 Then
ReDim Preserve atabwhnd(iWnd)
Else
ReDim Preserve atabwhnd(1)
iWnd = 1
End If
z = GetClassName(addhWnd&, sclass, 250)
atabwhnd(iWnd) = Left(st, x)
iWnd = iWnd + 1
End If
EnumWindowsproc = True
End Function

Le code du form peut etre transformé en fonction

Function IsProcess(process) as boolean
isprocess=false
dim i as integer
for i=0 to ubound(atabwhnd)
if atabwhnd(i)=process then
IsProcess=true
exit for
endif
next


Dans le code qui recherche

If isProcess('Sans titre - Bloc-notes') then
' code
else
' code
ebdif

++

Creepy
 

Guigui

XLDnaute Occasionnel
Re le forum, Creepy,

Merci Creepy pour ton code, il marche parfaitement avec un fichier bloc note ouvert ...

Par contre comment faire si le programme recherché (ici 'Sans titre - Bloc-notes') n'est pas visible dans la barre des taches. mon programme recherché est visble uniquement dans la barre des taches à droite (à coté de l'heure) (processus)

J'ai essayé de changé 'Sans titre - Bloc-notes' par 'Extranet.exe' (mon prog) mais rien ne se passe ...

As-tu une petite idée ??

Merci d'avance ...
A+
Guillaume

ps: je blaguais pour l'éponge ....
;)
 

Creepy

XLDnaute Accro
Bonsoir,

Voici un autre qui liste tous les processus de ta machine.

Tu n'as donc que peux de modification à faire pour qu'il fonctionne et recherche juste ton processus.

Je n'ai pas le temps de le modifier en plus pour faire lesessais il n'y a que toi qui puisse !! Je n'ai pas ce processus

@+

Creepy [file name=Nbredeprocessus.zip size=12861]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Nbredeprocessus.zip[/file]
 

Pièces jointes

  • Nbredeprocessus.zip
    12.6 KB · Affichages: 17

Guigui

XLDnaute Occasionnel
Salut Creepy,

Merci beaucoup pour ton code, en effet ca se rapproche plus de mon souci. mais ce qui est de l'ajuster à mon projet ... je ne vais pas en etre capable ...

Ce n'est pas de la flème ou autre, c'est juste que je n'arrive pas à traduire en 'francais' ce code... mes connaissances en VBA restent limité comme meme ... :unsure:

Sans parler de mon processus (extranet.exe). peux tu me faire un ti test avec un processus qu'on à tous. ou alors m'indiquer ou rentrer le nom de mon processus...

Merci encore pour ton aide...
Désoler encore...

A+
Guillaume :eek:
 

Guigui

XLDnaute Occasionnel
salut le forum, Creepy.

Peux tu m'aider à ajuster ton post à mon projet.
Ton code qui liste les processus me semble la solution mais je n'arrive pas à le comprendre et donc à l'ajuster

Merci d'avance si tu peux i jetter un oeil, ou m'expliquer son focntionnement en décodé...

A+
Guillaume
 

Statistiques des forums

Discussions
312 361
Messages
2 087 609
Membres
103 606
dernier inscrit
lolo1970