Vienyc
Messages postés47Date d'inscriptiondimanche 18 décembre 2005StatutMembreDernière intervention28 juin 2007
-
12 déc. 2006 à 11:35
Vienyc
Messages postés47Date d'inscriptiondimanche 18 décembre 2005StatutMembreDernière intervention28 juin 2007
-
12 déc. 2006 à 18:06
Bonjour,
Après quelques recherche pas très fructueuse (et devant le nombre de
fonctions de l'API Windows...) je cherche à réduire une fenêtre
exterieur à mon programme grâce à l'API Windows, je m'explique.
En VB6, j'ai une barre en haut de mon écran, je voudrais que, exemple,
si je lance IE, il se réduise pour être en dessous de ma barre (ma
barre est déjà en premier plan, le problème c'est qu'elle est trop
lage, donc cache la barre d'url de IE) donc en fait, réduire la fenêtre
E juste en dessous mon form.
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 12 déc. 2006 à 14:56
'Déclaration des API
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 GetActiveWindow Lib "User32" () As Long
Private Sub Timer1_Timer()
'Si la fenêtre active est différente de celle de ton appli
If CetActiveWindow <> Me.Hwnd Then
'redimensionne et replace cette fenêtre mais reste devant ton appli
'les deux 1er 200 sont les position top et left de la fenêtre et les deux autres les dimensions de la fenêtre en pixel
SetWindowPos GetActiveWindow, HWND_TOPMOST, 200, 200, 200, 200, SWP_HIDEWINDOW
End If
End Sub,
----
(Coloration syntaxique automatique par Kenji)
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 12 déc. 2006 à 15:17
La cela devrai marcher:
hWnd = GetActiveWindow
'Si la fenêtre active est différente de celle de ton appli
If hWnd <> Me.hWnd Then
'redimensionne et replace cette fenêtre mais reste devant ton appli
'les deux 1er 200 sont les position top et left de la fenêtre et les deux autres les dimensions de la fenêtre en pixel
SetWindowPos hWnd, HWND_TOPMOST, 200, 200, 200, 200, SWP_HIDEWINDOW
End If
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 12 déc. 2006 à 15:21
Cela ce rapproche encore plus de ce que tu veux, mais maintenant à toi d'arranger la position et la dimension!
En tout cas c'est exactement ce que tu voulais!
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 12 déc. 2006 à 15:24
'Déclaration des API
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 GetActiveWindow Lib "User32" () As Long
Private Sub Timer1_Timer()
'récupère le handle de la fenêtre active
hWnd = GetActiveWindow
'Si la fenêtre active est différente de celle de ton appli
If hWnd <> Me.Hwnd Then
'redimensionne et replace cette fenêtre mais reste devant ton appli
SetWindowPos hWnd, HWND_TOPMOST, 0, 200, 9500, 1200, SWP_HIDEWINDOW
End If
End Sub,
----
(Coloration syntaxique automatique par Kenji)
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 12 déc. 2006 à 16:29
Essaye ça avant: (peut-être qu'il a un conflit avec hwnd)
<table border="0">
----,
</td>
'Déclaration des API
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 GetActiveWindow Lib "User32" () As Long
Private Sub Timer1_Timer()
'récupère le handle de la fenêtre active
Dim HandleFenetre As Long
HandleFenetre = GetActiveWindow
'Si la fenêtre active est différente de celle de ton appli
If HandleFenetre <> Me.Hwnd Then
'redimensionne et replace cette fenêtre mais reste devant ton appli
SetWindowPos HandleFenetre , HWND_TOPMOST, 0, 200, 9500, 1200, SWP_HIDEWINDOW
End If
End Sub
</td>
</tr>
</tbody>
</table>
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 12 déc. 2006 à 16:35
Salut,
Alors çà en est où? [auteurdetail.aspx?ID= 786090 Drikce06 ]j'ai testé ton dernier code sur vb6 et ca fonctionne (si toutefois j'ai bien compris ce que souhaitait [auteurdetail.aspx?ID =648299 Vienyc)]
Vienyc
Messages postés47Date d'inscriptiondimanche 18 décembre 2005StatutMembreDernière intervention28 juin 2007 12 déc. 2006 à 16:50
En fait ça fonctionne si c'est la fenêtre du projet en cours qui est devant lui, mais si je créé un .exe et que je lance IE au dessus de la Form, là, ça ne marche pas.
Vienyc
Messages postés47Date d'inscriptiondimanche 18 décembre 2005StatutMembreDernière intervention28 juin 2007 12 déc. 2006 à 16:56
Alors je m'explique.
Avec ton code, dans VB, je met le code, je l'execute, si je lance la fenêtre ou y'a mon code, elle se réduit bien et se met en dessous de mon form, en revanche avec d'autres fenêtre ça ne marche pas (mais il detecte bien que les handles sont différents)