OVH Cloud OVH Cloud

App.Previnstance et activation

18 réponses
Avatar
Driss HANIB
Bonjour,

j'ai fait un programme sous forme de MDI Parent qui vérifie avant de se
lancer qu'il n'y a pas déjà une instance déjà ouverte.
J'uilise pour cela App.Previnstance

Actullement si il y a déjà une instance : la nouvelle informa par un msgBox
puis se referme.

je voudrai éventuellement pouvoir activer l'instance déjà charger (agrandir
si réduite) ou/et mettre en avant par dessus tous les autres prog chargés
(OE, Firfox Word..)

Comment faire cela, tout en sachant que comme c'est une MDI Form, il peut y
avoir des feuilels filles (qui portent toutes un nom)

merci d'avance

Driss

8 réponses

1 2
Avatar
Jacques93
Driss HANIB a écrit :
Salut jacques,

je viens de tester ton morceau de programme.
Effectivement il de démarre pas de deuxième programme,

mais je n'ai pas d'activation ni de mise au premier plan du progeramme
précédent.



Est tu sur de bien renseigner WndName (Caption de la fenêtre MDI)

j'ai rajouté égalemement, la commande End dasns "if previnstance", sinon le
prgramme ne se décharge pas.



Tu peux également faire les Unload nécessaires, oubli de ma part ...


Driss

je vais voir pas à pas s'il voit et trouve le bonn handle
(mais je vais chercher une version compilée)





Oui, d'ailleurs le 'RT6' dans "ThunderRT6MDIForm" indique que c'est une
feuille provenant d'un exe, sinon il me semble que c'est
"ThunderMDIForm" tout court dans l'IDE


--

Cordialement,

Jacques.
Avatar
driss hanib
Salut Jacques
Non bien sur : je mettais le nom de la feuille et pas le caption.

J'essaie ce soir et je te tiens au courant

Driss

"Jacques93" a écrit dans le message de news:
%
Driss HANIB a écrit :
Salut jacques,

je viens de tester ton morceau de programme.
Effectivement il de démarre pas de deuxième programme,

mais je n'ai pas d'activation ni de mise au premier plan du progeramme
précédent.



Est tu sur de bien renseigner WndName (Caption de la fenêtre MDI)

j'ai rajouté égalemement, la commande End dasns "if previnstance", sinon
le prgramme ne se décharge pas.



Tu peux également faire les Unload nécessaires, oubli de ma part ...


Driss

je vais voir pas à pas s'il voit et trouve le bonn handle
(mais je vais chercher une version compilée)





Oui, d'ailleurs le 'RT6' dans "ThunderRT6MDIForm" indique que c'est une
feuille provenant d'un exe, sinon il me semble que c'est "ThunderMDIForm"
tout court dans l'IDE


--

Cordialement,

Jacques.
Avatar
Jacques93
driss hanib a écrit :
Salut Jacques
Non bien sur : je mettais le nom de la feuille et pas le caption.



M'enfin :

<http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx>

c'est vrai, il aurait été plus logique de ma part de nommer la variable
'WndCaption"' :-)


J'essaie ce soir et je te tiens au courant



OK

--

Cordialement,

Jacques.
Avatar
driss hanib
Bonsoir Jacques,

tu ne quittes pas le PC ? ;oO

Je viens d'essayer avec le caption. Effectivement il trouve bien la
précédente instance, mais j'ai un curieux phénomène
le programme déjà présent s'affiche et disparait aussi vite.
J'enlevé le End mais j'ai le même phénomène..

Driss



"Jacques93" a écrit dans le message de news:
u$
driss hanib a écrit :
Salut Jacques
Non bien sur : je mettais le nom de la feuille et pas le caption.



M'enfin :

<http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx>

c'est vrai, il aurait été plus logique de ma part de nommer la variable
'WndCaption"' :-)


J'essaie ce soir et je te tiens au courant



OK

--

Cordialement,

Jacques.
Avatar
Jacques93
driss hanib a écrit :
Bonsoir Jacques,

tu ne quittes pas le PC ? ;oO



Si, j'ai un DD à convertir de FAT32 vers NTFS, je vais laisser faire,
y'a pas besoin de moi ;-)

Je viens d'essayer avec le caption. Effectivement il trouve bien la
précédente instance, mais j'ai un curieux phénomène
le programme déjà présent s'affiche et disparait aussi vite.
J'enlevé le End mais j'ai le même phénomène..




Je n'ai pas ce comportement ...


--

Cordialement,

Jacques.
Avatar
LE TROLL
Bonsoir,

Je ne sais pas pour les mdi, mais si on met "Me", form1.show , Me, ça ne
s'améliore pas ?
Sinon, une fois j'ai résolu ça de façon différente, avec l'API "application
toujours au 1er plan à l'écran", quand j'appelais ma feuille qui ne voulait
pas passer, sur la feuille appelée j'invoquais l'API sus-cité, puis
j'annulais l'effet, et ça restait comme voulu.
C'est peut être un peu lourd, mais parfois... seul le résultat compte.

Cordialement ;o)

-
Logiciels, romans, contacts : http://irolog.free.fr

LE CODE
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
'
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_SHOWWINDOW = &H40
Const Flags = &H2 Or &H1 Or &H40 Or &H10
'
Dim hWndCalc As Long

Sub Command2_Click() 'calculatrice AUTRE APPLICATION
Dim lResult As Long
'
On Error GoTo erreur
lResult = Shell("calc.exe")
hWndCalc = FindWindow("SciCalc", "Calculatrice")
lResult = SetWindowPos(hWndCalc, HWND_TOPMOST, 0&, 0&, 0&, 0&, SWP_NOSIZE
Or SWP_NOMOVE Or SWP_SHOWWINDOW)
Exit Sub
'
erreur:
If Err = 53 Then MsgBox "La calculatrice n'est pas installée, remédier...
", vbExclamation
On Error Resume Next
End Sub



Sub Command3_Click(index As Integer) ' SA PROPRE APPLICATION
Dim r As Long
dim site as string
Site = "http://irolog.free.fr"
ShellExecute Me.hWnd, "Open", site, "", App.Path, 1
r = SetWindowPos(Form1.hWnd, -1, 0, 0, 0, 0, Flags) ' toujours visible
End Sub

r = SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 0, Flags) ' n'est plus toujours
visible

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"driss hanib" a écrit dans le message de
news:
Bonsoir Jacques,

tu ne quittes pas le PC ? ;oO

Je viens d'essayer avec le caption. Effectivement il trouve bien la
précédente instance, mais j'ai un curieux phénomène
le programme déjà présent s'affiche et disparait aussi vite.
J'enlevé le End mais j'ai le même phénomène..

Driss



"Jacques93" a écrit dans le message de news:
u$
driss hanib a écrit :
Salut Jacques
Non bien sur : je mettais le nom de la feuille et pas le caption.



M'enfin :

<http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx>

c'est vrai, il aurait été plus logique de ma part de nommer la variable
'WndCaption"' :-)


J'essaie ce soir et je te tiens au courant



OK

--

Cordialement,

Jacques.




Avatar
Driss HANIB
salut jacques

je viens d'essayer sur le PC de mon boulot. C'est Nickel
Je retenterai ce soir sur l'autre.
merci

Driss
"Jacques93" a écrit dans le message de news:
%
driss hanib a écrit :
Bonsoir Jacques,

tu ne quittes pas le PC ? ;oO



Si, j'ai un DD à convertir de FAT32 vers NTFS, je vais laisser faire, y'a
pas besoin de moi ;-)

Je viens d'essayer avec le caption. Effectivement il trouve bien la
précédente instance, mais j'ai un curieux phénomène
le programme déjà présent s'affiche et disparait aussi vite.
J'enlevé le End mais j'ai le même phénomène..




Je n'ai pas ce comportement ...


--

Cordialement,

Jacques.
Avatar
driss hanib
Salut Jacques

merci ton source marche très bien et me "facilite" les choses.
Plus "classe" qu'un message Box
Driss

"Jacques93" a écrit dans le message de news:
%
driss hanib a écrit :
Bonsoir Jacques,

tu ne quittes pas le PC ? ;oO



Si, j'ai un DD à convertir de FAT32 vers NTFS, je vais laisser faire, y'a
pas besoin de moi ;-)

Je viens d'essayer avec le caption. Effectivement il trouve bien la
précédente instance, mais j'ai un curieux phénomène
le programme déjà présent s'affiche et disparait aussi vite.
J'enlevé le End mais j'ai le même phénomène..




Je n'ai pas ce comportement ...


--

Cordialement,

Jacques.
1 2