OVH Cloud OVH Cloud

Instance programme 2

10 réponses
Avatar
joel.decotigny
boujour, j'ai un logiciel qui une fois lancer se reduit dans la barre des
taches et s'ouvre en cliquant sur cette icone dans la barre des taches par
contre si je clique sur l'icone du bureau il s'ouvre une autre
instance(normal) donc j'utilise If App.PrevInstance Then: End pour
eviter cela, mais je souhaiterait qu'en cliquant sur l' icone du bureau
il ouvre celui de la barre des taches et ne lance pas une autre instance
du prg. si quelqu'un pouvait m'aider car la ?
merci d'avance.

10 réponses

Avatar
X
Bonjour,

Ah, tu parles de la barre de tâche, en bas ou du systray à droite ???

Je pense que c'est le systray, ben donc tu voudrais ouvrir l'applie du
systray et non celle du bureau (raccourci), mais tout en voulant mettre
celle du systray sur le bureau, et celle du bureau à la poubelle... Ben
c'est une question Windows ça :o)

Mais c'est la même application il me semble me souvenir, alors tout
simplement enlèves l'application du systray, il te restera celle du
bureau...

Ceci dit, à mon sens, mettre des icônes sur le bureau n'est pas pratique
du tout, c'est la solution par défaut de Microsoft, certes... Car, étant en
miultiposte, après un lancement depuis le bureau, l'application lancée
couvre les autres icônes, difficile ensuite à activer, si on veut ouvrir 2
applies (réduire la fenêtre, ou l'explorateur)... Il me semble plus logique
de rajouter ça en sous menu dans le menu démarrer, qui lui est accessible en
multi-tâches...

--------------------

"joel.decotigny" a écrit dans le message de
news: 43d9c51c$0$20182$
boujour, j'ai un logiciel qui une fois lancer se reduit dans la barre des
taches et s'ouvre en cliquant sur cette icone dans la barre des taches par
contre si je clique sur l'icone du bureau il s'ouvre une autre
instance(normal) donc j'utilise If App.PrevInstance Then: End pour
eviter cela, mais je souhaiterait qu'en cliquant sur l' icone du bureau
il ouvre celui de la barre des taches et ne lance pas une autre instance
du prg. si quelqu'un pouvait m'aider car la ?
merci d'avance.




Avatar
Driss HANIB
Joel ,

ce sujet a je crois été discuté plus tot dans les posts.
en fait si je me rappelle bien le principe
il faut utiliser une api , je crois que c'est 'FindWindow' qui va rechercher
ta première instance (tu dois lui fournir le titre de la fenêtre de cette
première instance) et cela récupère le handle de cette fenêtre et ensuite
avec une autre api (sendmessage ?) tu envoies un message d'activation..

Bon je laisse aux vrais pros le soin de te donner les syntaxes exactes de
tout cela car malheureusement je n'ai pas conservé ce message et je ne manie
pas bien ces différentes API

Bon courage,

Driss


"joel.decotigny" a écrit dans le message de
news:43d9c51c$0$20182$
boujour, j'ai un logiciel qui une fois lancer se reduit dans la barre des
taches et s'ouvre en cliquant sur cette icone dans la barre des taches par
contre si je clique sur l'icone du bureau il s'ouvre une autre
instance(normal) donc j'utilise If App.PrevInstance Then: End pour
eviter cela, mais je souhaiterait qu'en cliquant sur l' icone du bureau
il ouvre celui de la barre des taches et ne lance pas une autre instance
du prg. si quelqu'un pouvait m'aider car la ?
merci d'avance.




Avatar
scraper
Bonjour joel.decotigny, dans le message
news:43d9c51c$0$20182$
tu disais :

boujour, j'ai un logiciel qui une fois lancer se reduit dans la barre
des taches et s'ouvre en cliquant sur cette icone dans la barre des
taches par contre si je clique sur l'icone du bureau il s'ouvre une
autre instance(normal) donc j'utilise If App.PrevInstance Then: End
pour eviter cela, mais je souhaiterait qu'en cliquant sur l' icone du
bureau il ouvre celui de la barre des taches et ne lance pas une
autre instance du prg. si quelqu'un pouvait m'aider car la ?
merci d'avance.



vois ceci, qui répond précisément à tes attentes (mutex)

http://faq.vb.free.fr/index.php?questionF

NB : End pour finir un porcessus, c'est pas le top



--

Adresse invalide
Merci de répondre sur le forum ...
http://scraper.chez-alice.fr

scraper
Avatar
Driss HANIB
salut scraper,

d'accord avec toi pour le end ;o)

Driss


"scraper" a écrit dans le message de
news:
Bonjour joel.decotigny, dans le message
news:43d9c51c$0$20182$
tu disais :

> boujour, j'ai un logiciel qui une fois lancer se reduit dans la barre
> des taches et s'ouvre en cliquant sur cette icone dans la barre des
> taches par contre si je clique sur l'icone du bureau il s'ouvre une
> autre instance(normal) donc j'utilise If App.PrevInstance Then: End
> pour eviter cela, mais je souhaiterait qu'en cliquant sur l' icone du
> bureau il ouvre celui de la barre des taches et ne lance pas une
> autre instance du prg. si quelqu'un pouvait m'aider car la ?
> merci d'avance.

vois ceci, qui répond précisément à tes attentes (mutex)

http://faq.vb.free.fr/index.php?questionF

NB : End pour finir un porcessus, c'est pas le top



--

Adresse invalide
Merci de répondre sur le forum ...
http://scraper.chez-alice.fr

scraper



Avatar
joel.decotigny
merci pour ta reponse c'est tout a fais ca mais la pour le mettre en place
c'est autre chose.
enfin je vais chercher encore.

car ma question n'est pas de fermer un prg. qui tourne deja, mais au
contraire de l'activer.


"Driss HANIB" a écrit dans le message de news:

Joel ,

ce sujet a je crois été discuté plus tot dans les posts.
en fait si je me rappelle bien le principe
il faut utiliser une api , je crois que c'est 'FindWindow' qui va
rechercher
ta première instance (tu dois lui fournir le titre de la fenêtre de cette
première instance) et cela récupère le handle de cette fenêtre et ensuite
avec une autre api (sendmessage ?) tu envoies un message d'activation..

Bon je laisse aux vrais pros le soin de te donner les syntaxes exactes de
tout cela car malheureusement je n'ai pas conservé ce message et je ne
manie
pas bien ces différentes API

Bon courage,

Driss


"joel.decotigny" a écrit dans le message de
news:43d9c51c$0$20182$
boujour, j'ai un logiciel qui une fois lancer se reduit dans la barre des
taches et s'ouvre en cliquant sur cette icone dans la barre des taches
par
contre si je clique sur l'icone du bureau il s'ouvre une autre
instance(normal) donc j'utilise If App.PrevInstance Then: End pour
eviter cela, mais je souhaiterait qu'en cliquant sur l' icone du bureau
il ouvre celui de la barre des taches et ne lance pas une autre instance
du prg. si quelqu'un pouvait m'aider car la ?
merci d'avance.








Avatar
X
Bonjour, bis, c'est pas clair tout ça !!!

Tu dis:
"...j'ai un logiciel qui une fois lancer se réduit dans la barre des taches
et s'ouvre en cliquant sur cette icône dans la barre des taches..."

- Qu'il se mette dans la barre de tâche = normal...
- Mais tu dis juste après qu'il (ce logiciel), s'ouvre en cliquant sur son
icône dans la barre de tâches, déjà là, s'il est dans la barre de tâches,
c'est qu'il est ouvert, alors s'il est ouvert, pourquoi veux-tu l'ouvrir 2
fois ???
Une logiciel une fois lancé se met généralement tout seul en barre de
tâches, et si tu cliques comme tu le dis sur la barre de tâches, sur la
tâche du logiciel en question, ça n'en ouvre pas un second, heureusement,
non! Ça lui donne le focus, au logiciel, ou encore en sus, ça l'affiche à
l'écran s'il était réduit....

- Donc, déjà je ne comprends pas cette histoire de ce logiciel qui s'ouvre
dans tous les sens, il s'ouvre un fois (avec prevInstance), point final, où
est le problème ???
------------------

Tu dis encore, plus compliqué: "...je souhaiterait qu'en cliquant sur l'
icône du bureau il ouvre celui de la barre des taches et ne lance pas une
autre instance du prg..."

- Bon, déjà si ton logiciel est en barre de tâches c'est qu'il est ouvert,
donc s'il est ouvert, pourquoi l'ouvrir 2 fois, en plus avec (PrevInstance)
???

- Tu ne veux pas dis-tu, qu'en lançant l'icône du bureau ça ouvre une
seconde instance, normalement non, il est déjà ouvert et affiché dans la
barre de tâche, pour le réactiver si besoin, ben on clique dans la barre de
tâche, et in fine, avec prevInstance, ça interdit une seconde ouverture
normalement...
------------------

Tu parles de barre de tâche, c'est peut être pas de ça qu'il s'agit, par
ailleurs en te lisant j'ai l'impression qu'il y a 2 logiciels, les mêmes, un
qui s'ouvre par un icône de bureau, et l'autre, comme tu dis pas comment il
se trouve dans la barre de tâches, on peut présumer qu'il se lance au
démarrage, à moins que la barre de tâches ce soit le systray ???
J'avoue ne rien comprendre :o)






"joel.decotigny" a écrit dans le message de
news: 43d9c51c$0$20182$
par
contre si je clique sur l'icone du bureau il s'ouvre une autre
instance(normal) donc j'utilise If App.PrevInstance Then: End pour
eviter cela, mais . si quelqu'un pouvait m'aider car la ?
merci d'avance.




Avatar
joel.decotigny
oui, milles excuses je me trompe c'est pas la barre des taches mais le
systray et comme xp defois cache certin icones du systray et pour eviter
d'aller modifier les proprietes de xp pour qu'il affiche toujours cet icone
je souhaiterais qu'en clicquant sur l'icone du bureau il le rouvre.(donc
celui du systray) il n'y a qu'un prg. c'est une sorte de barre qui une fois
ouverte sert de l'anceur d'application ou il y a plusieurs raccouci
d'application. Il se lance au démarrage dans le systray et ne s'ouvre que si
l'on clique sur son icone du systray.
Avatar
Renfield
en utilisant une combinaison de

FindWindow
GetWindow
GetClassName

tu devrais pouvoir retrouver la fenetre qui recoit les messages en
provenance de ton Systray...

avec un SendMessage, ensuite, envoyer un WM_LBUTTONDBLCLK
Avatar
X
Bon, je n'ai pas trouvé, mais:

-1- généralement, l'applie qui met dans le systray prévoit une option de
retrait du systray, as-tu vu dans ce sens...

-2- Sinon, et à part si l'applie met systématiquement dans le systray, il
devrait être possible en VB je présume, de retirer ceci du systray (je n'ai
pas trouvé et je ne sais pas comment par VB)...

-3- E encore, en listant la liste des processus, tu peux voir si ton applie
est lancée, et dans ce cas la fermer... Là je crois (sous réserve), que j'ai
un code qui liste les processus, et je crois qu'il peut les fermer (sous
réserve), demande...

---

"joel.decotigny" a écrit dans le message de
news: 43dc7efd$0$19699$
oui, milles excuses je me trompe c'est pas la barre des taches mais le
systray et comme xp defois cache certin icones du systray et pour eviter
d'aller modifier les proprietes de xp pour qu'il affiche toujours cet
icone je souhaiterais qu'en clicquant sur l'icone du bureau il le
rouvre.(donc celui du systray) il n'y a qu'un prg. c'est une sorte de
barre qui une fois ouverte sert de l'anceur d'application ou il y a
plusieurs raccouci d'application. Il se lance au démarrage dans le systray
et ne s'ouvre que si l'on clique sur son icone du systray.




Avatar
Renfield
c'est faisable, sans avoir a fermer le processus

pour manipuler le Systray, il faut fournir le handle d'une fenetre qui
va gérer les messages.

le tout est de trouver cette fenetre (pas trop complexe avec des
FindWindow, GetWindow...)

une fois trouvée, il suffit de lui envoyer un message qui informe
qu'un double click est survenu (grace à SendMessage)