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

Développement Windows Discussion :

SetForeground Ko en build mais fonctionne en debug


Sujet :

Développement Windows

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2023
    Messages : 2
    Points : 3
    Points
    3
    Par défaut SetForeground Ko en build mais fonctionne en debug
    Bonjour,
    Je bloque sur un petit problème sur mon application wpf,

    Je m'amuse un peu avec la lib user32 et j'essaie de faire passer les apps de mon choix au premier plan.
    Ca fonctionne superbement bien en mode debug mais des lors que j'exécute l'exe depuis mon répertoire bin ou après un déploiement vers dossier la fenêtre ciblé clignote mais ne passe pas au premier plan.
    J'ai essayer l'exécution en admin mais rien a faire.

    Je vous met un extrait de mon code pour comprendre un peu ce que je veux utiliser, j'ai essayer plusieurs méthode fournis dans user32 notamment SetActiveWindow et SetForegroundWindow j'ai le même problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    [DllImport("user32.dll")]
    private static extern IntPtr SetActiveWindow(IntPtr hWnd);
    [DllImport("user32.dll")]
    private static extern bool SetForegroundWindow(IntPtr hWnd);
     
    public static void SetFocus(Process process)
    {
         IntPtr windowHandle = process.MainWindowHandle;
         SetForegroundWindow(windowHandle);
         SetActiveWindow(windowHandle);
     
    }
    Merci d'avoir pris le temp de me lire

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2023
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    J'ai trouver une solution en passant avec AttachThreadInput

    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
    28
    [DllImport("user32.dll")]
            static extern uint GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);
     
            [DllImport("kernel32.dll")]
            static extern uint GetCurrentThreadId();
     
            [DllImport("user32.dll")]
            static extern bool AttachThreadInput(uint idAttach, uint idAttachTo, bool fAttach);
     
            [DllImport("user32.dll", SetLastError = true)]
            static extern bool BringWindowToTop(IntPtr hWnd);
     
            [DllImport("user32.dll")]
            private static extern int ShowWindow(IntPtr hWnd, uint Msg);
     
            [DllImport("user32.dll")]
            static extern IntPtr GetForegroundWindow();
     
            public void SetFocus(Process process)
            {
                uint windowThreadProcessId = GetWindowThreadProcessId(GetForegroundWindow(), IntPtr.Zero);
                uint currentThreadId = GetCurrentThreadId();
                uint CONST_SW_SHOW = 5;
                AttachThreadInput(windowThreadProcessId, currentThreadId, true);
                BringWindowToTop(process.MainWindowHandle);
                ShowWindow(process.MainWindowHandle, CONST_SW_SHOW);
                AttachThreadInput(windowThreadProcessId, currentThreadId, false);
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/09/2016, 06h53
  2. Réponses: 5
    Dernier message: 20/09/2014, 07h36
  3. programme fonctionne en debug mais pas en release ?
    Par membreComplexe12 dans le forum C++
    Réponses: 20
    Dernier message: 16/05/2012, 11h52
  4. Réponses: 6
    Dernier message: 20/05/2010, 11h34
  5. Fonctionne en Debug mais pas en Release
    Par Baud10 dans le forum MFC
    Réponses: 23
    Dernier message: 04/02/2008, 15h17

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