Process toujours au premier plan

Messages postés
51
Date d'inscription
dimanche 24 août 2003
Statut
Membre
Dernière intervention
29 octobre 2010
- - Dernière réponse :  Utilisateur anonyme - 23 juin 2012 à 00:38
Bonjour,
j'ai 2 programmes :
-1 que je nomme FOND(fait par mes soins)qui
appelle le deuxième
-2 qui se nomme TRUC qui à été acheté.

FOND permet de cacher le bureau avec une fenêtre plein écran et appelle TRUC qui se met en avant plan (car TRUC ne peut pas se mettre en plein écran!) Jusque là tout va bien mais...
Voila mon problème :
Si on clique sur FOND, TRUC passe en arrière plan ! et donc disparait alors
comment obliger TRUC de rester au premier plan ou
comment obliger FOND de rester en arrière plan ?
Merci de s'interesser à mon problème qui devient urgent .
Afficher la suite 

13 réponses

Messages postés
133
Date d'inscription
dimanche 23 juin 2002
Statut
Membre
Dernière intervention
3 janvier 2015
3
0
Merci
Salut
moi j'utilise ceci pour passer d'un premier plan ou second plan
place ceci dans un module

'declaration pour mise en premier plan d'une fenetre
'Public Const SWP_NOSIZE &H1
Public Const SWP_NOMOVE = &H2
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public 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

Public Function premierplan(f As Form)
Call SetWindowPos(f.hWnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, (SWP_NOSIZE Or SWP_NOMOVE))
End Function

Public Function ArrierePlan(f As Form)
Call SetWindowPos(f.hWnd, HWND_NOTOPMOST, 0&, 0&, 0&, 0&, (SWP_NOSIZE Or SWP_NOMOVE))
End Function


Ensuite dans ton formload tu note
premierplan Me 'pour le premier plan
arriereplan me 'pour l'arriere plan


j'espere que j'avais bien compris la question
bonne continuation
Commenter la réponse de cs_akzo
Messages postés
51
Date d'inscription
dimanche 24 août 2003
Statut
Membre
Dernière intervention
29 octobre 2010
1
0
Merci
Un Grand merci à toi 'akzo'
Je vais vérifier cela ce soir et je noterai ce message comme "reponse acceptée" si ça marche
Commenter la réponse de mstaub
Messages postés
51
Date d'inscription
dimanche 24 août 2003
Statut
Membre
Dernière intervention
29 octobre 2010
1
0
Merci
Hello,
C'est encore moi
alors oui et non pour "akzo" c'est à dire que ta technique met bien mon fond en arrière plan
MAIS si tu cliques sur le FOND (meme si le fond est enabled False) le fond se retrouve au 1er plan ... ou plutôt c'est le programme TRUC qui se retrouve derrière mon fond en fait il faudrait peut être mettre un "systeme" dans un timer qui remettrait le FOND systematiquement en arrière plan ( j'ai esssayer ta solution en la mettant en + dans un timer mais rien n'y fait)
alors une idée? Merci d'avance !
PS en tout cas quand le programme fonctionnera je le mettrais sur vb france en source ! pour que tous le monde en profite !!!
Commenter la réponse de mstaub
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
Pas besoin de timer, tu utilise simplement la méthode "TopMost" de ton formulaire TRUC.
Commenter la réponse de djedjeska
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
Ah non, il s'agit de programmes et pas de formulaires, autant pour moi
Commenter la réponse de djedjeska
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
Salut,

regarde ce que tu peux faire avec cela :

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Sub CheckForegroundWindow2()
    Dim xHwnd As Long, aHwnd As Long
    aHwnd = GetForegroundWindow
    xHwnd = FindWindow(vbNullString, "Caption de l'appli TRUC")
    If Not aHwnd = xHwnd Then SetForegroundWindow xHwnd
End Sub


à utiliser soit via un timer soit dans l'evenement click de ton fond

A+
Commenter la réponse de bigfish_le vrai
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Bonjour,
je ne vois personnellement pas la nécessité d'un timer .
Petit test :
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Declare Sub 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)

Private Sub Form_Initialize()
  Dim autrewnd As Long
  Me.WindowState = vbMaximized
  Shell "notepad", vbNormalFocus
  autrehwnd = FindWindow(vbNullString, "Sans titre - Bloc-notes")
  SetWindowPos autrehwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub


Le bloc-notes restera toujours en premier plan.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
On pourrait même faire encore plus "propre". Et toujours sans Timer.
Exemple :
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Declare Sub 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)
Private Declare Function SetActiveWindow Lib "user32.dll" (ByVal hwnd As Long) As Long

 Dim autrewnd As Long

Private Sub Form_Click()
  SetActiveWindow autrehwnd
End Sub

Private Sub Form_Initialize()
  Me.WindowState = vbMaximized
  Shell "notepad", vbNormalFocus
  autrehwnd = FindWindow(vbNullString, "Sans titre - Bloc-notes")
  SetWindowPos autrehwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub

De sorte à forcer l'autre fenêtre à rester active




________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
0
Merci
Bonsoir,

Oui et puis ce sujet date un peu je trouve
Commenter la réponse de Utilisateur anonyme
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Bonjour, banana32
Je réalise que je me suis faut avoir comme un bleu !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
0
Merci
Bonsoir ucfoutu,

On est tous passé par là, tu t'en remettras
Mais ce n'est jamais perdu, car ce fil peut servir à d'autres.

Bonne nuit
Commenter la réponse de Utilisateur anonyme
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
Oui son problème correspondait presque au mien dans les termes, mais je me suis rendu compte (trop tard) que c'était du vb6...
Commenter la réponse de djedjeska
0
Merci
que c'était du vb6...
Personne ne code plus avec ça voyons
Hein ? Mais non je l'ai pas dit !
Commenter la réponse de Utilisateur anonyme