Go-Sprache ist eine sehr beliebte Programmiersprache und wird in verschiedenen Bereichen häufig verwendet, insbesondere in der Systemprogrammierung und Netzwerkprogrammierung. Auf der Windows-Plattform müssen Sie manchmal ein Programm im Hintergrund ausführen. In diesem Fall müssen Sie das Fenster ausblenden, um zu verhindern, dass Programm-Popups das Benutzererlebnis beeinträchtigen. In diesem Artikel wird hauptsächlich das Ausblenden von Fenstern in der Go-Sprache vorgestellt.
Bevor Sie das Fenster bedienen, müssen Sie sich zuerst den Fenstergriff besorgen. Auf der Windows-Plattform verfügt jedes Fenster über ein eindeutiges Handle, das das Fenster identifiziert. Sie können die Windows-API-Funktion FindWindow oder FindWindowEx verwenden, um das Fensterhandle abzurufen.
Unter anderem kann die FindWindow-Funktion das Fensterhandle über den Klassennamen und den Fensternamen des Fensters finden. Um beispielsweise ein Fenster mit dem Namen „MyAppName“ zu finden, können Sie den folgenden Code verwenden:
hwnd := FindWindow(nil, syscall.StringToUTF16Ptr("MyAppName"))
Sie können auch die FindWindowEx-Funktion verwenden, um das untergeordnete Fenster Handle für Handle zu finden. Um beispielsweise ein Schaltflächensteuerelement mit dem Namen „MyButton“ zu finden, können Sie den folgenden Code verwenden:
btnHwnd := FindWindowEx(hwnd, 0, syscall.StringToUTF16Ptr("Button"), syscall.StringToUTF16Ptr("MyButton"))
Es ist zu beachten, dass es sich bei diesen Funktionen ausschließlich um Windows-API-Funktionen handelt, sodass die WinAPI-Bibliothek eingeführt werden muss.
Nachdem Sie den Handle des Fensters erhalten haben, können Sie das Fenster über die Windows-API-Funktion ShowWindow ausblenden. Insbesondere können Sie das Fenster ausblenden, wenn Sie den Parameter nCmdShow auf SW_HIDE setzen.
Um beispielsweise das zuvor erhaltene Fenster mit dem Namen „MyAppName“ auszublenden, können Sie den folgenden Code verwenden:
ShowWindow(hwnd, SW_HIDE)
Wenn Sie das Fenster erneut anzeigen möchten, können Sie den Parameter nCmdShow auf SW_SHOW setzen.
Hier ist ein vollständiger Beispielcode, der zeigt, wie man das Fensterhandle erhält und das Fenster ausblendet:
package main import ( "syscall" "unsafe" ) const ( SW_HIDE = 0 SW_SHOW = 5 ) var ( user32 = syscall.NewLazyDLL("user32.dll") findWindow = user32.NewProc("FindWindowW") showWindow = user32.NewProc("ShowWindow") ) func FindWindow(className, windowName *uint16) uintptr { ret, _, _ := findWindow.Call(uintptr(0), uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(windowName))) return ret } func ShowWindow(hwnd uintptr, nCmdShow int32) bool { ret, _, _ := showWindow.Call(hwnd, uintptr(nCmdShow)) return ret != 0 } func main() { hwnd := FindWindow(nil, syscall.StringToUTF16Ptr("MyAppName")) if hwnd == 0 { panic("window not found") } ShowWindow(hwnd, SW_HIDE) }
Es ist zu beachten, dass die Ausführung des obigen Codes das Speichern des Codes als .go-Datei und das Kompilieren erfordert es mit dem go-Befehl. Konkret können Sie zum Kompilieren den folgenden Befehl verwenden:
go build -ldflags="-H windowsgui" main.go
Unter anderem weist der Parameter -H Windowsgui den Compiler an, eine fensterlose Anwendung zu generieren.
Go-Sprache ist eine Sprache, die sich sehr gut zum Schreiben von Systemanwendungen eignet. Sie kann problemlos Windows-API-Funktionen aufrufen und verschiedene Funktionen auf Systemebene implementieren. In diesem Artikel wird erläutert, wie Sie das Fensterhandle in der Go-Sprache erhalten und ausblenden. Ich hoffe, dass es für alle hilfreich ist.
Das obige ist der detaillierte Inhalt vonSo verbergen Sie das Fenster in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!