IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Rendre une appli. externe indéplaçable


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Rendre une appli. externe indéplaçable
    Bonjour,

    J'aimerais, lorsque je lance mon appli C#, que l'application externe que j'ai indiqué dans mon prog, par exemple "Calculatrice", ne soit plus déplaçable.
    Mes idées sont :
    1. Intercepter le message WM_WINDOWPOSCHANGING grâce à une class héritant de NativeWindow et la fonction WndProc : J'ai essaié plusieurs trucs mais sans succès (Certainement que je l'utilise mal) ???
    2. Utiliser un Hook ???
    Y'a t-il une autre façon de faire ?

    J'ai deja utiliser la fonction SetWindowPos (API) avec un Timer mais le resulat est mediocre. L'objectif serait d'intercepter le message de déplacement de la fenêtre et de le stopper...

    Merci d'avance.

    Jag

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    La technique d'interception du message est certaienemnt la meilleure solution.

    Peut tu nous dire ou ca coince ? tu n'arrive pas à catcher le message ?

    Ce message est il aussi adapté : WM_MOVING ?
    Pour les details, cherche tout seul !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    WM_MOVING je ne connais pas.

    En fait mon code est le suivant :

    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
    public partial class Form1 : Form 
        { 
            [DllImport("User32.dll")] 
            public static extern int FindWindow(string lpClassName, string lpWindowName);         
     
            public Form1() 
            { 
                InitializeComponent(); 
                MyNativWindow mnw = new MyNativWindow(); 
                mnw.AssignHandle((IntPtr)FindWindow(null, "Calculatrice")); 
            } 
        } 
     
        public class MyNativWindow : NativeWindow 
        { 
            const int WM_WINDOWPOSCHANGING = 0x0046; 
     
            protected override void WndProc(ref Message m) 
            { 
                base.WndProc(ref m); 
     
                if (m.Msg == WM_WINDOWPOSCHANGING) 
                { 
                    // Code qui empêche le déplacement 
                } 
            }   
        }
    Mais rien qui se passe.

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Pas de questions techniques par MP

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Je pense que c'est le bon code pour empecher la fenetre externe de bouger mais en fait le probleme cest que WndProc n'est jamais appelé donc je pense que les messages ne sont pas interceptés.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected override void WndProc(ref Message m)
            {
                MessageBox.Show(m.Msg.ToString()); // Test : Ne s'affiche jamais
     
                switch (m.Msg)
                {
                   ...

    Par contre lorsque je ferme la Form, la calculatrice se ferme en meme temps.

    Le handle est bon, je test avec Spy++

Discussions similaires

  1. Controler une appli externe
    Par Hesiode dans le forum Windows
    Réponses: 1
    Dernier message: 12/02/2007, 08h50
  2. [DELPHI 5] Minimiser une appli externe
    Par VincentB dans le forum Delphi
    Réponses: 2
    Dernier message: 15/05/2006, 15h54
  3. [Système][Runtime]J'arrive pas à lancer une appli externe !?!
    Par polnioumane dans le forum Général Java
    Réponses: 6
    Dernier message: 16/11/2005, 18h55
  4. Réponses: 3
    Dernier message: 26/09/2005, 10h41
  5. Récupérer le Handle d'une Appli externe
    Par luxprog dans le forum Windows
    Réponses: 15
    Dernier message: 29/04/2004, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo