Go 言語は非常に人気のあるプログラミング言語であり、特にシステム プログラミングやネットワーク プログラミングなど、さまざまな分野で広く使用されています。 Windows プラットフォームでは、バックグラウンドでプログラムを実行する必要がある場合があります。この場合、プログラムのポップアップがユーザー エクスペリエンスに影響を与えないようにウィンドウを非表示にする必要があります。この記事では主にGo言語でウィンドウを非表示にする方法を紹介します。
ウィンドウを操作する前に、ウィンドウハンドルを取得する必要があります。 Windows プラットフォームでは、各ウィンドウには、ウィンドウを識別する一意のハンドルがあります。 Windows API 関数 FindWindow または FindWindowEx を使用して、ウィンドウ ハンドルを取得できます。
このうち、FindWindow 関数は、ウィンドウのクラス名とウィンドウ名を通じてウィンドウ ハンドルを見つけることができます。たとえば、「MyAppName」という名前のウィンドウを検索するには、次のコードを使用します。
hwnd := FindWindow(nil, syscall.StringToUTF16Ptr("MyAppName"))
また、FindWindowEx 関数を使用して、ハンドルを通じて子ウィンドウ ハンドルを検索することもできます。たとえば、「MyButton」という名前のボタン コントロールを検索するには、次のコードを使用できます。
btnHwnd := FindWindowEx(hwnd, 0, syscall.StringToUTF16Ptr("Button"), syscall.StringToUTF16Ptr("MyButton"))
これらの関数は Windows API 関数であるため、WinAPI ライブラリを導入する必要があることに注意してください。
ウィンドウのハンドルを取得した後、Windows API 関数 ShowWindow を使用してウィンドウを非表示にすることができます。具体的には、nCmdShow パラメータを SW_HIDE に設定すると、ウィンドウを非表示にすることができます。
たとえば、以前に取得した「MyAppName」という名前のウィンドウを非表示にするには、次のコードを使用します。
ShowWindow(hwnd, SW_HIDE)
ウィンドウを再表示したい場合は、nCmdShow パラメータを SW_SHOW に設定します。 。
以下は、ウィンドウ ハンドルを取得してウィンドウを非表示にする方法を示す完全なサンプル コードです。上記のコードを実行するには、コードを .go ファイルとして保存し、go コマンドを使用してコンパイルする必要があることに注意してください。具体的には、次のコマンドを使用してコンパイルできます。
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) }
その中で、-H windowsgui パラメーターは、ウィンドウのないアプリケーションを生成するようにコンパイラーに指示します。
概要以上がGo言語でウィンドウを非表示にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。