Transmettre un évènement souris à la fenêtre suivante...
6 réponses
Sébastien FERRAND
Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais
que lorsque je clique dessus, que l'évènement soit directement traiter par la
fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas
à lui passer le message.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LEBRUN Thomas
Dans l'evenement Click de ta form au premier plan, met:
taForm2.Click += new EventHandler(Click_Form2);
Ensuite, tu créé une méthode Click_Form2 et tu met dedans le code que tu veux executer lorsque l'on "clicquera" sur la 2ème form :)
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com http://blog.developpez.com/index.php?blog=9
"Sébastien FERRAND" a écrit :
Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais que lorsque je clique dessus, que l'évènement soit directement traiter par la fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas à lui passer le message.
Merci de votre aide. Séb
Dans l'evenement Click de ta form au premier plan, met:
taForm2.Click += new EventHandler(Click_Form2);
Ensuite, tu créé une méthode Click_Form2 et tu met dedans le code que tu
veux executer lorsque l'on "clicquera" sur la 2ème form :)
A+
-------------------
LEBRUN Thomas
http://morpheus.developpez.com
http://blog.developpez.com/index.php?blog=9
"Sébastien FERRAND" a écrit :
Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais
que lorsque je clique dessus, que l'évènement soit directement traiter par la
fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas
à lui passer le message.
Dans l'evenement Click de ta form au premier plan, met:
taForm2.Click += new EventHandler(Click_Form2);
Ensuite, tu créé une méthode Click_Form2 et tu met dedans le code que tu veux executer lorsque l'on "clicquera" sur la 2ème form :)
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com http://blog.developpez.com/index.php?blog=9
"Sébastien FERRAND" a écrit :
Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais que lorsque je clique dessus, que l'évènement soit directement traiter par la fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas à lui passer le message.
Merci de votre aide. Séb
Lloyd Dupont
tu vas sur MSND (ou la doc de VS.NET, plus rapide si tu l'as et tu regarde les methodes win32 suivantes pour gerer les messages)
PeekMessage GetMessage SendMessage PostMessage
"Sébastien FERRAND" <Sébastien wrote in message news:
Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais que lorsque je clique dessus, que l'évènement soit directement traiter par la fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas à lui passer le message.
Merci de votre aide. Séb
tu vas sur MSND (ou la doc de VS.NET, plus rapide si tu l'as et tu regarde
les methodes win32 suivantes pour gerer les messages)
PeekMessage
GetMessage
SendMessage
PostMessage
"Sébastien FERRAND" <Sébastien FERRAND@discussions.microsoft.com> wrote in
message news:8B769194-B820-444A-9DE6-50907FBB4711@microsoft.com...
Une question surement toute bête mais je sèche dessus depuis trop
longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente,
j'aimerais
que lorsque je clique dessus, que l'évènement soit directement traiter par
la
fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive
pas
à lui passer le message.
tu vas sur MSND (ou la doc de VS.NET, plus rapide si tu l'as et tu regarde les methodes win32 suivantes pour gerer les messages)
PeekMessage GetMessage SendMessage PostMessage
"Sébastien FERRAND" <Sébastien wrote in message news:
Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais que lorsque je clique dessus, que l'évènement soit directement traiter par la fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas à lui passer le message.
Merci de votre aide. Séb
LEBRUN Thomas
Voici un exemple de ce que je voulais dire, dans le cas où cela ne serait pas clair:
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data;
namespace WindowsApplication3 { /// <summary> /// Description résumée de Form1. /// </summary> public class Form1 : System.Windows.Forms.Form { /// <summary> /// Variable nécessaire au concepteur. /// </summary> private System.ComponentModel.Container components = null;
private Form2 frm2 = new Form2();
public Form1() { // // Requis pour la prise en charge du Concepteur Windows Forms // InitializeComponent();
// // TODO : ajoutez le code du constructeur après l'appel à InitializeComponent // }
#region Code généré par le Concepteur Windows Form /// <summary> /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas /// le contenu de cette méthode avec l'éditeur de code. /// </summary> private void InitializeComponent() { // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 273); this.Name = "Form1"; this.Text = "Form1"; this.TopMost = true; this.Click += new System.EventHandler(this.Click_Frm1); this.Load += new System.EventHandler(this.Form1_Load);
} #endregion
/// <summary> /// Point d'entrée principal de l'application. /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); }
Seul "inconvénient" : les controles de ta form2 doivent être en public....
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com http://blog.developpez.com/index.php?blog=9
"LEBRUN Thomas" a écrit :
Dans l'evenement Click de ta form au premier plan, met:
taForm2.Click += new EventHandler(Click_Form2);
Ensuite, tu créé une méthode Click_Form2 et tu met dedans le code que tu veux executer lorsque l'on "clicquera" sur la 2ème form :)
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com http://blog.developpez.com/index.php?blog=9
"Sébastien FERRAND" a écrit :
> Une question surement toute bête mais je sèche dessus depuis trop longtemps :( > > Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais > que lorsque je clique dessus, que l'évènement soit directement traiter par la > fenêtre du dessous. > > Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas > à lui passer le message. > > Merci de votre aide. > Séb > > >
Voici un exemple de ce que je voulais dire, dans le cas où cela ne serait
pas clair:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication3
{
/// <summary>
/// Description résumée de Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
/// <summary>
/// Variable nécessaire au concepteur.
/// </summary>
private System.ComponentModel.Container components = null;
private Form2 frm2 = new Form2();
public Form1()
{
//
// Requis pour la prise en charge du Concepteur Windows Forms
//
InitializeComponent();
//
// TODO : ajoutez le code du constructeur après l'appel à
InitializeComponent
//
}
#region Code généré par le Concepteur Windows Form
/// <summary>
/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
/// le contenu de cette méthode avec l'éditeur de code.
/// </summary>
private void InitializeComponent()
{
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Name = "Form1";
this.Text = "Form1";
this.TopMost = true;
this.Click += new System.EventHandler(this.Click_Frm1);
this.Load += new System.EventHandler(this.Form1_Load);
}
#endregion
/// <summary>
/// Point d'entrée principal de l'application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
Seul "inconvénient" : les controles de ta form2 doivent être en public....
A+
-------------------
LEBRUN Thomas
http://morpheus.developpez.com
http://blog.developpez.com/index.php?blog=9
"LEBRUN Thomas" a écrit :
Dans l'evenement Click de ta form au premier plan, met:
taForm2.Click += new EventHandler(Click_Form2);
Ensuite, tu créé une méthode Click_Form2 et tu met dedans le code que tu
veux executer lorsque l'on "clicquera" sur la 2ème form :)
A+
-------------------
LEBRUN Thomas
http://morpheus.developpez.com
http://blog.developpez.com/index.php?blog=9
"Sébastien FERRAND" a écrit :
> Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
>
> Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais
> que lorsque je clique dessus, que l'évènement soit directement traiter par la
> fenêtre du dessous.
>
> Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas
> à lui passer le message.
>
> Merci de votre aide.
> Séb
>
>
>
#region Code généré par le Concepteur Windows Form /// <summary> /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas /// le contenu de cette méthode avec l'éditeur de code. /// </summary> private void InitializeComponent() { // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 273); this.Name = "Form1"; this.Text = "Form1"; this.TopMost = true; this.Click += new System.EventHandler(this.Click_Frm1); this.Load += new System.EventHandler(this.Form1_Load);
} #endregion
/// <summary> /// Point d'entrée principal de l'application. /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); }
Seul "inconvénient" : les controles de ta form2 doivent être en public....
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com http://blog.developpez.com/index.php?blog=9
"LEBRUN Thomas" a écrit :
Dans l'evenement Click de ta form au premier plan, met:
taForm2.Click += new EventHandler(Click_Form2);
Ensuite, tu créé une méthode Click_Form2 et tu met dedans le code que tu veux executer lorsque l'on "clicquera" sur la 2ème form :)
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com http://blog.developpez.com/index.php?blog=9
"Sébastien FERRAND" a écrit :
> Une question surement toute bête mais je sèche dessus depuis trop longtemps :( > > Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais > que lorsque je clique dessus, que l'évènement soit directement traiter par la > fenêtre du dessous. > > Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas > à lui passer le message. > > Merci de votre aide. > Séb > > >
Sébastien FERRAND
je crois que je me suis mal exprimé...
je ne maitrise pas la fenêtre du dessous. Ca peut être n'importe quelle fenêtre de l'os.
Le but est de créer une applet qui sera tout le temps au premier et affichera des informations sur le système.
Je veux pouvoir cliquer au travers sans avoir à la déplacer...
Vous me suivez ?
Merci Séb
"Sébastien FERRAND" wrote:
Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais que lorsque je clique dessus, que l'évènement soit directement traiter par la fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas à lui passer le message.
Merci de votre aide. Séb
je crois que je me suis mal exprimé...
je ne maitrise pas la fenêtre du dessous. Ca peut être n'importe quelle
fenêtre de l'os.
Le but est de créer une applet qui sera tout le temps au premier et
affichera des informations sur le système.
Je veux pouvoir cliquer au travers sans avoir à la déplacer...
Vous me suivez ?
Merci
Séb
"Sébastien FERRAND" wrote:
Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais
que lorsque je clique dessus, que l'évènement soit directement traiter par la
fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas
à lui passer le message.
je ne maitrise pas la fenêtre du dessous. Ca peut être n'importe quelle fenêtre de l'os.
Le but est de créer une applet qui sera tout le temps au premier et affichera des informations sur le système.
Je veux pouvoir cliquer au travers sans avoir à la déplacer...
Vous me suivez ?
Merci Séb
"Sébastien FERRAND" wrote:
Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais que lorsque je clique dessus, que l'évènement soit directement traiter par la fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas à lui passer le message.
Merci de votre aide. Séb
Lloyd Dupont
bon, je repete:
tu vas sur MSND (ou la doc de VS.NET, plus rapide si tu l'as et tu regarde les methodes win32 suivantes pour gerer les messages)
PeekMessage GetMessage SendMessage PostMessage
comme c'est des fonction win32 il va falloir faire un peu d'interop...
"Sébastien FERRAND" wrote in message news:
je crois que je me suis mal exprimé...
je ne maitrise pas la fenêtre du dessous. Ca peut être n'importe quelle fenêtre de l'os.
Le but est de créer une applet qui sera tout le temps au premier et affichera des informations sur le système.
Je veux pouvoir cliquer au travers sans avoir à la déplacer...
Vous me suivez ?
Merci Séb
"Sébastien FERRAND" wrote:
Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais que lorsque je clique dessus, que l'évènement soit directement traiter par la fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas à lui passer le message.
Merci de votre aide. Séb
bon, je repete:
tu vas sur MSND (ou la doc de VS.NET, plus rapide si tu l'as et tu regarde
les methodes win32 suivantes pour gerer les messages)
PeekMessage
GetMessage
SendMessage
PostMessage
comme c'est des fonction win32 il va falloir faire un peu d'interop...
"Sébastien FERRAND" <sebmafate@wanadoo.fr> wrote in message
news:D5AC5A1C-DB20-4C6A-9D20-A453D00561DA@microsoft.com...
je crois que je me suis mal exprimé...
je ne maitrise pas la fenêtre du dessous. Ca peut être n'importe quelle
fenêtre de l'os.
Le but est de créer une applet qui sera tout le temps au premier et
affichera des informations sur le système.
Je veux pouvoir cliquer au travers sans avoir à la déplacer...
Vous me suivez ?
Merci
Séb
"Sébastien FERRAND" wrote:
Une question surement toute bête mais je sèche dessus depuis trop
longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente,
j'aimerais
que lorsque je clique dessus, que l'évènement soit directement traiter
par la
fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive
pas
à lui passer le message.
tu vas sur MSND (ou la doc de VS.NET, plus rapide si tu l'as et tu regarde les methodes win32 suivantes pour gerer les messages)
PeekMessage GetMessage SendMessage PostMessage
comme c'est des fonction win32 il va falloir faire un peu d'interop...
"Sébastien FERRAND" wrote in message news:
je crois que je me suis mal exprimé...
je ne maitrise pas la fenêtre du dessous. Ca peut être n'importe quelle fenêtre de l'os.
Le but est de créer une applet qui sera tout le temps au premier et affichera des informations sur le système.
Je veux pouvoir cliquer au travers sans avoir à la déplacer...
Vous me suivez ?
Merci Séb
"Sébastien FERRAND" wrote:
Une question surement toute bête mais je sèche dessus depuis trop longtemps :(
Ma fenêtre étant toujours au premier plan et pseudo-transparente, j'aimerais que lorsque je clique dessus, que l'évènement soit directement traiter par la fenêtre du dessous.
Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive pas à lui passer le message.
Merci de votre aide. Séb
Sébastien FERRAND
nan c'est bon j'ai trouvé. Il suffit tout simplement de rendre la fenêtre transparente.
Pour cela, il faut faire une surcharge de la propriété CreateParams : Protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; //WS_EX_TOOLWINDOW 0x00000080 //WS_EX_TRANSPARENT = 0x0000020 //WS_EX_LAYERED = 0x00080000 cp.ExStyle |= 0x00080020; return cp; } }
Séb
"Lloyd Dupont" a écrit :
bon, je repete:
tu vas sur MSND (ou la doc de VS.NET, plus rapide si tu l'as et tu regarde les methodes win32 suivantes pour gerer les messages)
PeekMessage GetMessage SendMessage PostMessage
comme c'est des fonction win32 il va falloir faire un peu d'interop...
"Sébastien FERRAND" wrote in message news: > je crois que je me suis mal exprimé... > > je ne maitrise pas la fenêtre du dessous. Ca peut être n'importe quelle > fenêtre de l'os. > > Le but est de créer une applet qui sera tout le temps au premier et > affichera des informations sur le système. > > Je veux pouvoir cliquer au travers sans avoir à la déplacer... > > Vous me suivez ? > > Merci > Séb > > > > > > "Sébastien FERRAND" wrote: > >> Une question surement toute bête mais je sèche dessus depuis trop >> longtemps :( >> >> Ma fenêtre étant toujours au premier plan et pseudo-transparente, >> j'aimerais >> que lorsque je clique dessus, que l'évènement soit directement traiter >> par la >> fenêtre du dessous. >> >> Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive >> pas >> à lui passer le message. >> >> Merci de votre aide. >> Séb >> >> >>
nan c'est bon j'ai trouvé.
Il suffit tout simplement de rendre la fenêtre transparente.
Pour cela, il faut faire une surcharge de la propriété CreateParams :
Protected override CreateParams CreateParams {
get {
CreateParams cp = base.CreateParams;
//WS_EX_TOOLWINDOW 0x00000080
//WS_EX_TRANSPARENT = 0x0000020
//WS_EX_LAYERED = 0x00080000
cp.ExStyle |= 0x00080020;
return cp;
}
}
Séb
"Lloyd Dupont" a écrit :
bon, je repete:
tu vas sur MSND (ou la doc de VS.NET, plus rapide si tu l'as et tu regarde
les methodes win32 suivantes pour gerer les messages)
PeekMessage
GetMessage
SendMessage
PostMessage
comme c'est des fonction win32 il va falloir faire un peu d'interop...
"Sébastien FERRAND" <sebmafate@wanadoo.fr> wrote in message
news:D5AC5A1C-DB20-4C6A-9D20-A453D00561DA@microsoft.com...
> je crois que je me suis mal exprimé...
>
> je ne maitrise pas la fenêtre du dessous. Ca peut être n'importe quelle
> fenêtre de l'os.
>
> Le but est de créer une applet qui sera tout le temps au premier et
> affichera des informations sur le système.
>
> Je veux pouvoir cliquer au travers sans avoir à la déplacer...
>
> Vous me suivez ?
>
> Merci
> Séb
>
>
>
>
>
> "Sébastien FERRAND" wrote:
>
>> Une question surement toute bête mais je sèche dessus depuis trop
>> longtemps :(
>>
>> Ma fenêtre étant toujours au premier plan et pseudo-transparente,
>> j'aimerais
>> que lorsque je clique dessus, que l'évènement soit directement traiter
>> par la
>> fenêtre du dessous.
>>
>> Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive
>> pas
>> à lui passer le message.
>>
>> Merci de votre aide.
>> Séb
>>
>>
>>
nan c'est bon j'ai trouvé. Il suffit tout simplement de rendre la fenêtre transparente.
Pour cela, il faut faire une surcharge de la propriété CreateParams : Protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; //WS_EX_TOOLWINDOW 0x00000080 //WS_EX_TRANSPARENT = 0x0000020 //WS_EX_LAYERED = 0x00080000 cp.ExStyle |= 0x00080020; return cp; } }
Séb
"Lloyd Dupont" a écrit :
bon, je repete:
tu vas sur MSND (ou la doc de VS.NET, plus rapide si tu l'as et tu regarde les methodes win32 suivantes pour gerer les messages)
PeekMessage GetMessage SendMessage PostMessage
comme c'est des fonction win32 il va falloir faire un peu d'interop...
"Sébastien FERRAND" wrote in message news: > je crois que je me suis mal exprimé... > > je ne maitrise pas la fenêtre du dessous. Ca peut être n'importe quelle > fenêtre de l'os. > > Le but est de créer une applet qui sera tout le temps au premier et > affichera des informations sur le système. > > Je veux pouvoir cliquer au travers sans avoir à la déplacer... > > Vous me suivez ? > > Merci > Séb > > > > > > "Sébastien FERRAND" wrote: > >> Une question surement toute bête mais je sèche dessus depuis trop >> longtemps :( >> >> Ma fenêtre étant toujours au premier plan et pseudo-transparente, >> j'aimerais >> que lorsque je clique dessus, que l'évènement soit directement traiter >> par la >> fenêtre du dessous. >> >> Je recupère bien la bonne fenêtre avec l'API GetWindow, mais je n'arrive >> pas >> à lui passer le message. >> >> Merci de votre aide. >> Séb >> >> >>