Merci NICOLAS, mais ta capture d'écran m'interpelle. Est-ce vraiment là un userform en mode aero activé ?
Merci NICOLAS, mais ta capture d'écran m'interpelle. Est-ce vraiment là un userform en mode aero activé ?
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
J'avais un doute du coup, mais le test fait précedement était activé
et désactivé ça donne ça
apparence identique sur l'affichagecurseur tout contre handle obtenu = 856290
curseur sur le userform apparent handle obtenu = 7603792
FINDWINDOWS handle obtenu = 4590018
Curseur dans la barre de titre handle obtenu = 4590018
Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider
n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter
@Nicolas :
curseur tout contre handle obtenu = 856290 ==> hwnd de l'application qui est derrière l'userform
curseur sur le userform apparent handle obtenu = 7603792 ==> hwnd de la partie de l'userform qui réagit aux événement Mouse_Move (par exemple)
FINDWINDOWS handle obtenu = 4590018 ==> hwnd de l'usf
Curseur dans la barre de titre handle obtenu = 4590018 ==> hwnd de la bordure
Cordialement,
Franck
bonjour
je l'ai dis hier que findwindow ramenait le même que windowfrompoint(x,y) sur la caption
alors comme windowfrompoint dans un do loop a tâtonner me permet de trouver la différence
essayez avec getwindowrect pour déterminer le rect.left et rect.top ( quoi que il me semble déjà avoir essayé )
après si il faut vraiment et que l'on a bien 2 handle (caption,Inside)
on peut faire un getwindowrect sur Inside
avec getsystemmetric 46 si je me souviens bien on a le borderwidth que l'on ajoute et le comparer avec la position qu'il devrait avoir
mais malheureusement findwindowhex sur handle userform ou handle trouver par caption ne ramène rien ;0 nada
c'est balo!!!
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Désolé, Patrick, mais ce que tu dis n'as absolument rien à voir, si l'on ne fait pas le test manuellement et proprement.
Bon.
Après ma siestita, je proposerai un dernier test, fait encore différemment et --->>
- s'il montre que l'image crée par directx est une fenêtre à part entère -->> sauvés
- s'il montre au contraire qu'il ne s'agit que d'une image et non d'une fenêtre à part entère --->> terminé : il n'y aura AUCUNE solution.
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
re
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function WindowFromPoint Lib "user32" (ByVal xpoint As Long, ByVal ypoint As Long) As Long Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long Type RECT: Left As Long: Top As Long: Right As Long: Bottom As Long: End Type Sub test_userform_replace2222() Dim rect1 As RECT, rect1bis As RECT, rect2 As RECT 'With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager\LastLoadedDPI") / 72: End With With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With With ActiveWindow X = (.ActivePane.PointsToScreenPixelsX([D3].Left)) / ppx Y = (.ActivePane.PointsToScreenPixelsY([D3].Top)) / ppx With UserForm1: .Show 0: .Left = X: .Top = Y: handle1 = FindWindow(vbNullString, UserForm1.Caption): handle1bis = handle1 handle1bis = WindowFromPoint(X * ppx - 1, Y * ppx - 1) handleinside = WindowFromPoint(X + 10, Y + 10) End With End With GetWindowRect handle1, rect1 GetWindowRect handle1bis, rect1bis GetWindowRect handleinside, rect2 texte = "handle (userform par findwindow) " & handle1 & vbCrLf & "handle inside " & handleinside & vbCrLf & "handle1(userform par windowfrompoint " & handle1bis texte = texte & vbCrLf & "----------------------------" & vbCrLf & "avec api getwindowrect" texte = texte & vbCrLf & "left handle (userform)par findwindow " & rect1.Left & vbCrLf & "left handle (userform)par windowfrompoint " & rect1bis.Left & vbCrLf & _ "left handleinside " & rect2.Left & vbCrLf & "position left cellule D3 par pointstoscreenpixel " & X * ppx MsgBox texte End Sub
avec les api a part le do loop avec windowfrompoint il n'y a aucune solution
a part mon switch pas élégant oui mais fonctionne
si j'ai posé la question au tout début a savoir"y a t il un moyen de remplacer mon switch par api ou autre" c'est que j'avais déjà essayé plusieurs api qui me donnaient pareil que point toscreenpixels qui contrairement a ce que tu a cru longtemps est juste
j'ai juste poser la question au cas ou j'aurais éventuellement zapper une api ou autre qui m'aurais échappé
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Re-désolé, patricktoulon, mais :
La détermination de la nature de ce que ce (fenêtre à part entière ou simple image) que l'on a à l'écran (avec aero actvé) n'a absolument rien à voir avec l'emplacement du userform (ou de son image), que cet emplacement soit une cellule de la feuille ou sur n'importe quoi d'autre !
Mélanger les genres ne sert ici rigoureusement à rien, sinon à s'égarer inutilement.
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
a bon!!?
et que fait ton depuis un moment avec windowsfrompoint ? qui a moins que nous ai trouvé une autre surprise est le seul a pouvoir nous donner ce décalage d'image dans un do loop
les api donnent la même chose que pointstoscreenpixels voila tout
que ce soit par le rectangle par setwindowpos
je cherche un peu dans GDI mais perso j'ai peu d'espoir
par contre j'ai fait une découverte avec pointstoscreenpixels je vais pas trop en parler je veux savoir de quoi il retourne
mais sache déjà que pour 2007 j'ai trouvé le moyen de calculer le coefficient exact avec pointstoscreenpixels sans passer ni par les api ni par le registre et pour tout les zooms
j'avoue y être allé a taton mais quand j'ai vu le chiffre final woahw!!!! je me suis dis puré je connais ce nombre toi aussi ainsi que tout le monde ayant participé a cette discussion d'ailleurs
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Ouais ... ?
Bon.
J'ai peut-être une bonne nouvelle à la suite d'une petite découverte faite sur une fenêtre de userform sans aero (sous xp).
Il se peut que les relevés faits jusqu'à présent aient été faussés par la forme même du userform.
Je reviens plus tard (je fais une série de tests).
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
a bon!? maintenant si il est plutôt rectangle que carré ca change la donne ?
nan!!... je plaisante
de toute façon je suis persuadé que si et quand on trouvera ce sera un truc tout bête
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Non, ce n'est pas cet aspect-là de la forme, qui peut avoir faussé nos tests antérieurssi il est plutôt rectangle que carré ca change la donne ?
A propos de ton "correctif", Patrick : j'espère qu'il n'est pas un pourcentage de la hauteur de la barre de titre (hauteur calculée en faisant la différence du height et du insideheight). Ce ne serait pas une bonne idée car dépendante de la création éventuelle par microsoft de nouveaux thèmes "débordant" différemment.
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
je me suis ampétrer dans des calculs et tous me ramène a ca sans execption
ma résolution est de 1920 en horizontal on le trouve avec les api et le registre ca il n'y a pas de soucis
mais qu'and est il vraiment ???
en fait on constate que si on va plus loin avec cetsystemmetric on trouve la largeur et hauteur max en pixel de votre écran et donc chez moi c'est 1938
maintenant faisons un calcul simple
1920-1938=-18
j'ai donc 18 pixel en moins dans ma résolution
que je vais divisé par mon coeff ptTopx (1.666.....)j'obtient donc -10.xxxxxxxxxxx
que je divise par 2 histoire de ne pas rendre les coté de mon écran jaloux hein !!
qu'est que j'obtiens
-5.xxxxxxxxxxx
que j'ajoute en positif a pointstoscreenpixels(cellule.left)
et j'ai mon userform en place
maintenant la question qui se pose
serait ce parce que le calcul se fait sur la vrai résolution et non celle adapter sur Windows
ou le calcul se fait sur la résolution Windows mais l'affichage se fait avec la vrai résolution
to be or not to be that's the question
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Je pense personnellement qu'il ne s'agit là que d'une coïncidence, Patrick.maintenant la question qui se pose
serait ce parce que le calcul se fait sur la vrai résolution et non celle adapter sur Windows
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
je sais pas mais c'est troublant le fait que le resultat de 1938/1920 que j'applique en division en pointstoscreenpixelx(cellule.left) donne le même résultat soit ajoute les 5 qui manque
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Et si tu veux en avoir le coeur net : modifie donc la configuration en choisissant une autre résolution, de préférence avec un rapport Largeur/hauteur en pixels très différent.
Et reprends ensuite en modifiant également le dpi (en le mettant par exemple à 96 et sans oublier qu'il ne sera alors réellement pris en compte, lui, qu'après un redémarrage)
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
en attendant voici un pdf de toutes les constantes que j'utilise dans mes codes
regarde aussi le 32 ,60
en fait on a tout ici
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Merci, mais j'ai (liste personnelle) ce qu'il faut en bien plus complet et par catégories
Il ne me manque que ce qui "colle" avec certains composants de Excel/VBA (listbox, combobox, textbox, etc...) qui sont très différents de ceux de VB6 et autres outils de développement.
Revenons plutôt à nos moutons : As-tu fait des tests après modification des paramètres de configuration ?
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
et bien non ca correspond toujours j'ai toujours mes 18pixels
laisse moi le temps de revenir a la normal c'est impraticable sur mon ecrant en 1080*768
une horreur le machin
en resolution 1600*900
en resolution 1280*720getsystemmetrics (0) 1600
getsystemmetrics (1) 900
getsystemmetrics (2) 21
getsystemmetrics (3) 21
getsystemmetrics (4) 27
getsystemmetrics (5) 1
getsystemmetrics (6) 1
getsystemmetrics (7) 3
getsystemmetrics (8) 3
getsystemmetrics (9) 21
getsystemmetrics (10) 21
getsystemmetrics (11) 40
getsystemmetrics (12) 40
getsystemmetrics (13) 32
getsystemmetrics (14) 32
getsystemmetrics (15) 25
getsystemmetrics (16) 1600
getsystemmetrics (17) 839
getsystemmetrics (18) 0
getsystemmetrics (19) 1
getsystemmetrics (20) 21
getsystemmetrics (21) 21
getsystemmetrics (22) 0
getsystemmetrics (23) 0
getsystemmetrics (24) 0
getsystemmetrics (25) 0
getsystemmetrics (26) 0
getsystemmetrics (27) 0
getsystemmetrics (28) 158
getsystemmetrics (29) 45
getsystemmetrics (30) 43
getsystemmetrics (31) 26
getsystemmetrics (32) 9
getsystemmetrics (33) 9
getsystemmetrics (34) 158
getsystemmetrics (35) 45
getsystemmetrics (36) 4
getsystemmetrics (37) 4
getsystemmetrics (38) 116
getsystemmetrics (39) 94
getsystemmetrics (40) 0
getsystemmetrics (41) 0
getsystemmetrics (42) 0
getsystemmetrics (43) 5
getsystemmetrics (44) 0
getsystemmetrics (45) 2
getsystemmetrics (46) 2
getsystemmetrics (47) 160
getsystemmetrics (48) 32
getsystemmetrics (49) 20
getsystemmetrics (50) 20
getsystemmetrics (51) 22
getsystemmetrics (52) 21
getsystemmetrics (53) 21
getsystemmetrics (54) 24
getsystemmetrics (55) 24
getsystemmetrics (56) 8
getsystemmetrics (57) 160
getsystemmetrics (58) 32
getsystemmetrics (59) 1612
getsystemmetrics (60) 912
getsystemmetrics (61) 1618
getsystemmetrics (62) 884
getsystemmetrics (63) 3
getsystemmetrics (64) 0
getsystemmetrics (65) 0
getsystemmetrics (66) 0
getsystemmetrics (67) 0
getsystemmetrics (68) 4
getsystemmetrics (69) 4
getsystemmetrics (70) 0
getsystemmetrics (71) 19
getsystemmetrics (72) 19
getsystemmetrics (73) 0
getsystemmetrics (74) 0
getsystemmetrics (75) 1
getsystemmetrics (76) 0
getsystemmetrics (77) 0
getsystemmetrics (78) 1600
getsystemmetrics (79) 900
getsystemmetrics (80) 1
getsystemmetrics (81) 1
getsystemmetrics (82) 1
getsystemmetrics (83) 1
getsystemmetrics (84) 1
getsystemmetrics (85) 4
getsystemmetrics (86) 0
getsystemmetrics (87) 1
getsystemmetrics (88) 0
getsystemmetrics (89) 0
getsystemmetrics (90) 0
getsystemmetrics (91) 0
getsystemmetrics (92) 0
getsystemmetrics (93) 640
getsystemmetrics (94) 0
getsystemmetrics (95) 1
getsystemmetrics (96) 0
getsystemmetrics (97) 0
getsystemmetrics (98) 0
getsystemmetrics (99) 0
getsystemmetrics (100) 0
quelque chose me dit qu'il y a a faire avec ca
getsystemmetrics (0) 1280
getsystemmetrics (1) 720
getsystemmetrics (2) 21
getsystemmetrics (3) 21
getsystemmetrics (4) 27
getsystemmetrics (5) 1
getsystemmetrics (6) 1
getsystemmetrics (7) 3
getsystemmetrics (8) 3
getsystemmetrics (9) 21
getsystemmetrics (10) 21
getsystemmetrics (11) 40
getsystemmetrics (12) 40
getsystemmetrics (13) 32
getsystemmetrics (14) 32
getsystemmetrics (15) 25
getsystemmetrics (16) 1280
getsystemmetrics (17) 659
getsystemmetrics (18) 0
getsystemmetrics (19) 1
getsystemmetrics (20) 21
getsystemmetrics (21) 21
getsystemmetrics (22) 0
getsystemmetrics (23) 0
getsystemmetrics (24) 0
getsystemmetrics (25) 0
getsystemmetrics (26) 0
getsystemmetrics (27) 0
getsystemmetrics (28) 158
getsystemmetrics (29) 45
getsystemmetrics (30) 43
getsystemmetrics (31) 26
getsystemmetrics (32) 9
getsystemmetrics (33) 9
getsystemmetrics (34) 158
getsystemmetrics (35) 45
getsystemmetrics (36) 4
getsystemmetrics (37) 4
getsystemmetrics (38) 116
getsystemmetrics (39) 94
getsystemmetrics (40) 0
getsystemmetrics (41) 0
getsystemmetrics (42) 0
getsystemmetrics (43) 5
getsystemmetrics (44) 0
getsystemmetrics (45) 2
getsystemmetrics (46) 2
getsystemmetrics (47) 160
getsystemmetrics (48) 32
getsystemmetrics (49) 20
getsystemmetrics (50) 20
getsystemmetrics (51) 22
getsystemmetrics (52) 21
getsystemmetrics (53) 21
getsystemmetrics (54) 24
getsystemmetrics (55) 24
getsystemmetrics (56) 8
getsystemmetrics (57) 160
getsystemmetrics (58) 32
getsystemmetrics (59) 1292
getsystemmetrics (60) 732
getsystemmetrics (61) 1298
getsystemmetrics (62) 704
getsystemmetrics (63) 3
getsystemmetrics (64) 0
getsystemmetrics (65) 0
getsystemmetrics (66) 0
getsystemmetrics (67) 0
getsystemmetrics (68) 4
getsystemmetrics (69) 4
getsystemmetrics (70) 0
getsystemmetrics (71) 19
getsystemmetrics (72) 19
getsystemmetrics (73) 0
getsystemmetrics (74) 0
getsystemmetrics (75) 1
getsystemmetrics (76) 0
getsystemmetrics (77) 0
getsystemmetrics (78) 1280
getsystemmetrics (79) 720
getsystemmetrics (80) 1
getsystemmetrics (81) 1
getsystemmetrics (82) 1
getsystemmetrics (83) 1
getsystemmetrics (84) 1
getsystemmetrics (85) 4
getsystemmetrics (86) 0
getsystemmetrics (87) 1
getsystemmetrics (88) 0
getsystemmetrics (89) 0
getsystemmetrics (90) 0
getsystemmetrics (91) 0
getsystemmetrics (92) 0
getsystemmetrics (93) 640
getsystemmetrics (94) 0
getsystemmetrics (95) 1
getsystemmetrics (96) 0
getsystemmetrics (97) 0
getsystemmetrics (98) 0
getsystemmetrics (99) 0
getsystemmetrics (100) 0
je suis curieux de voir ce que ca donne sur ton pc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub testmetrics() For i = 0 To 100 Debug.Print "getsystemmetrics (" & i & ") " & GetSystemMetrics(i) Next End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Alors oublie cette coincidence.
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
pas tout a fait mille excuses c'est 12 dans la 2 eme
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager