Maison  >  Article  >  développement back-end  >  Comment implémenter une simple fenêtre masquant l'application en cours d'exécution dans Golang

Comment implémenter une simple fenêtre masquant l'application en cours d'exécution dans Golang

PHPz
PHPzoriginal
2023-04-25 09:19:22961parcourir

Golang est un langage de programmation efficace qui peut gérer facilement de grandes quantités de données et des tâches simultanées. La possibilité de fonctionner avec une fenêtre cachée est très utile dans de nombreuses applications en informatique. Si vous devez exécuter une application en arrière-plan mais que vous ne souhaitez pas que d'autres la trouvent, cet article vous fournira une solution.

Dans cet article, nous utiliserons Golang pour implémenter une simple fenêtre masquant l'application en cours d'exécution. Nous montrerons comment masquer une fenêtre de la barre des tâches et du bureau, tout en l'exécutant en arrière-plan, en recevant et en traitant les événements.

Étapes de mise en œuvre

Tout d'abord, vous devez importer la bibliothèque "Golang.org/x/sys/windows" pour utiliser l'API Windows. Ensuite, lors du processus de création de la fenêtre, la fenêtre est masquée.

package main

import (

"fmt"
"syscall"
"unsafe"

"golang.org/x/sys/windows"

)

func main() {

err := hideWindow()
if err != nil {
    fmt.Println("Error:", err)
}
for {
    // 无限循环以保持应用程序运行
}

}

func hideWindow() error {

// Get the window handle of the current process
hwnd := windows.GetConsoleWindow()
// Hide the window from taskbar and desktop
_, _, err := windows.ShowWindow(hwnd, windows.SW_HIDE)
if err != nil {
    return err
}
// Set the window style to WS_EX_TOOLWINDOW
const GWL_EXSTYLE = -20
const WS_EX_TOOLWINDOW = 0x00000080
style := windows.GetWindowLong(hwnd, GWL_EXSTYLE)
windows.SetWindowLong(hwnd, GWL_EXSTYLE, style | WS_EX_TOOLWINDOW)
return nil

}

Dans ce code, nous utilisons windows.GetConsoleWindow() pour récupérer le handle de la fenêtre actuelle, puis utilisez la fonction ShowWindow() pour masquer la fenêtre de la barre des tâches et du bureau. Enfin, nous utilisons SetWindowLong() pour définir le style de fenêtre sur WS_EX_TOOLWINDOW, faisant de la fenêtre une fenêtre outil qui n'apparaîtra pas dans la barre des tâches, mais peut toujours être trouvée en arrière-plan.

Notez que masquer une fenêtre ne signifie pas que l'application ne répond plus aux entrées de l'utilisateur ou ne peut pas recevoir de messages. Nous devons donc maintenir l'application en marche dans une boucle infinie, en recevant et en traitant les événements pour garantir que l'application soit toujours en cours d'exécution. Ce cycle peut être complété en ouvrant une autre Goroutine.

Testez l'application

Ouvrez l'outil de ligne de commande, accédez au répertoire où se trouve l'application et exécutez l'application. Vous constaterez que la fenêtre de l'application a disparu et qu'elle n'est plus visible dans la barre des tâches. Essayez de cliquer sur l'icône à laquelle appartient l'application et vous constaterez que l'application répond toujours aux événements et aux messages.

Si vous souhaitez terminer l'application, vous pouvez appuyer sur Ctrl + C pour la fermer.

Conclusion

Golang est un langage de programmation efficace qui facilite la mise en œuvre de la fonction d'exécution cachée de la fenêtre. Dans cet article, nous avons implémenté une simple fenêtre masquant l’application en cours d’exécution à l’aide de l’API Windows. En masquant la fenêtre de l'application et en l'exécutant en arrière-plan, nous pouvons rendre l'application invisible pour l'utilisateur tout en étant capable de gérer les événements et les messages. Cette technique est très utile dans de nombreux scénarios où les applications doivent être masquées, comme l'exécution de tâches planifiées en arrière-plan ou le masquage des outils de gestion du système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn