Process toujours au premier plan

mstaub Messages postés 51 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 29 octobre 2010 - 21 nov. 2009 à 11:20
 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 .

13 réponses

cs_akzo Messages postés 133 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 3 janvier 2015 3
21 nov. 2009 à 14:33
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
0
mstaub Messages postés 51 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 29 octobre 2010 2
1 déc. 2009 à 15:47
Un Grand merci à toi 'akzo'
Je vais vérifier cela ce soir et je noterai ce message comme "reponse acceptée" si ça marche
0
mstaub Messages postés 51 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 29 octobre 2010 2
4 déc. 2009 à 18:46
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 !!!
0
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
22 juin 2012 à 15:01
Pas besoin de timer, tu utilise simplement la méthode "TopMost" de ton formulaire TRUC.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
22 juin 2012 à 15:23
Ah non, il s'agit de programmes et pas de formulaires, autant pour moi
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
22 juin 2012 à 15:52
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+
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 18:09
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 22:23
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
0
Utilisateur anonyme
22 juin 2012 à 22:34
Bonsoir,

Oui et puis ce sujet date un peu je trouve
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 22:41
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
0
Utilisateur anonyme
22 juin 2012 à 22:48
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
0
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
22 juin 2012 à 23:32
Oui son problème correspondait presque au mien dans les termes, mais je me suis rendu compte (trop tard) que c'était du vb6...
0
Utilisateur anonyme
23 juin 2012 à 00:38
que c'était du vb6...
Personne ne code plus avec ça voyons
Hein ? Mais non je l'ai pas dit !
0
Rejoignez-nous