ホームページ >バックエンド開発 >Golang >Go言語でウィンドウを非表示にする方法

Go言語でウィンドウを非表示にする方法

PHPz
PHPzオリジナル
2023-04-14 14:34:351705ブラウズ

Go 言語は非常に人気のあるプログラミング言語であり、特にシステム プログラミングやネットワーク プログラミングなど、さまざまな分野で広く使用されています。 Windows プラットフォームでは、バックグラウンドでプログラムを実行する必要がある場合があります。この場合、プログラムのポップアップがユーザー エクスペリエンスに影響を与えないようにウィンドウを非表示にする必要があります。この記事では主にGo言語でウィンドウを非表示にする方法を紹介します。

  1. ウィンドウハンドルの取得

ウィンドウを操作する前に、ウィンドウハンドルを取得する必要があります。 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 ライブラリを導入する必要があることに注意してください。

  1. ウィンドウを非表示にする

ウィンドウのハンドルを取得した後、Windows API 関数 ShowWindow を使用してウィンドウを非表示にすることができます。具体的には、nCmdShow パラメータを SW_HIDE に設定すると、ウィンドウを非表示にすることができます。

たとえば、以前に取得した「MyAppName」という名前のウィンドウを非表示にするには、次のコードを使用します。

ShowWindow(hwnd, SW_HIDE)

ウィンドウを再表示したい場合は、nCmdShow パラメータを SW_SHOW に設定します。 。

  1. サンプル コード

以下は、ウィンドウ ハンドルを取得してウィンドウを非表示にする方法を示す完全なサンプル コードです。上記のコードを実行するには、コードを .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 パラメーターは、ウィンドウのないアプリケーションを生成するようにコンパイラーに指示します。

概要
  1. Go 言語は、システム アプリケーションの作成に非常に適した言語であり、Windows API 関数を簡単に呼び出して、さまざまなシステム レベルの関数を実装できます。この記事ではGo言語でウィンドウハンドルを取得する方法とウィンドウを非表示にする方法を紹介しますので、皆様のお役に立てれば幸いです。

以上がGo言語でウィンドウを非表示にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。