Position d'un controle d'une autre aplication

Résolu
AXELMEDICAL Messages postés 96 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 27 mai 2010 - 11 oct. 2006 à 11:50
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 12 oct. 2006 à 16:11
Salut!!
Comment connaitre la position d'un controle (top,left) d'une autre aplication?

16 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
11 oct. 2006 à 12:39
graphics temp = graphics.FromHwnd(TonHwnd);
temp.Region.X, etc...
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
11 oct. 2006 à 23:44
Le premier paramètre c'est un IntPtr càd 32 bits ou 64 bits selon la platforme, le deuxième paramètre est une structure RECT passée par référence.

[ DllImport( "User32.dll", SetLastError = true ) ]
private static extern bool GetWindowRect( IntPtr hWnd, out RECT rect );


[ StructLayout( LayoutKind.Sequential ) ]
public struct RECT
{
  public int Left;
  public int Top;
  public int Right;
  public int Bottom;
}
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 oct. 2006 à 10:32
Montre ton code alors.. parce que dans l'exemple que tu as donné au dessus tu fais un cast vers un long !?? et puis ne passe pas le second paramètre par référence !??
3
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
11 oct. 2006 à 12:02
Control.FromHandle(IntPtr hWnd);

vu que tu as déjà le handle....
0

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

Posez votre question
hmarchal Messages postés 19 Date d'inscription jeudi 28 juillet 2005 Statut Membre Dernière intervention 27 octobre 2006
11 oct. 2006 à 12:04
Salut,

et pourquoi pas créer un tube de communication (c'est sûrement pas comme ça qu'on dit!) entre les deux applis : l'une écoute et l'autre émet régulièrement la position du contrôle ?
0
AXELMEDICAL Messages postés 96 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 27 mai 2010
11 oct. 2006 à 12:26
Pour ce qui est du tube de communication cette idée semble interessante ( bien que j'ai pas mal avancé en paasant par la technique précedente) et par quelle moyen peut on mettre cette technique en application.

Le  Control.FromHandle(IntPtr hWnd) fonctionne lorsque le handle (en parametre ) et celui de mon application mais pas pour un handle d'une autre application!!!??
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
11 oct. 2006 à 12:41
au fait, merci daccepter la réponse de lautre post, (et de prendre lhabitude), cest tjs plus agréable pour les autres (que ce soit si qqun est confronté au meme probleme et fait une recherche, pour ceux qui répondent et qui peuvent savoir qu'ils nont pas a retourner sur ce post, etc...)
0
AXELMEDICAL Messages postés 96 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 27 mai 2010
11 oct. 2006 à 14:34
Il n'existe pas de menbres nommé region pour la classe graphics!!!!!
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
11 oct. 2006 à 14:51
msdn? a partir du graphics tu devrais pôuvoir faire ce que tu veux....
0
AXELMEDICAL Messages postés 96 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 27 mai 2010
11 oct. 2006 à 15:55
Escuse moi d'insisté!!!!
Mais la methode que tu m'as indiquer me renvoie tjrs la meme valeur que ce soit pour (X Y) et quelque soit le handle selectionné voici mon code: 

System.IntPtr intHwndSelin = new System.IntPtr(intHwndSel);
Graphics Temp=Graphics.FromHwnd(intHwndSelin);
textBox1.Text = Temp.ClipBounds.X.ToString();
textBox1.Text = textBox1.Text + " " + Temp.ClipBounds.Y.ToString();


 
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
11 oct. 2006 à 17:10
Salut tu peux par exemple récupérer le handle de la fenêtre principal avec FindWindow, puis le handle du contrôle avec FindWindowEx et la position et taille du contrôle avec GetWindowRect.
0
AXELMEDICAL Messages postés 96 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 27 mai 2010
11 oct. 2006 à 19:45
j ai essayer ca

long L;
System.IntPtr intHwndSelin = new System.IntPtr(intHwndSel);
L=GetWindowRect((long)intHwndSel, Pt);
textBox1.Text = Pt.Left.ToString()+" "+ Pt.Top.ToString();

Mais j'ai l'exception accesviolationexception à la ligne L=GetWindowRect((long)intHwndSel, Pt); quelqu 'un a une idée
0
AXELMEDICAL Messages postés 96 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 27 mai 2010
12 oct. 2006 à 10:07
C exactement ce que je fais mais l'exception accesviolationexception persiste
0
AXELMEDICAL Messages postés 96 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 27 mai 2010
12 oct. 2006 à 10:38
tu as raison c mon deuxieme  param qui n'allait pa!!!!!!!!!!!!!!

merci
0
AXELMEDICAL Messages postés 96 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 27 mai 2010
12 oct. 2006 à 10:50
une autre question tant que j'y suis comment puis je recuperer le nom d'un controle d'une autre appli?
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 oct. 2006 à 16:11
Mais quel nom ? Il y a bien GetClassName pour retrouver le nom de la classe du contrôle.
0
Rejoignez-nous