Golang ialah bahasa pengaturcaraan yang cekap dengan kelebihan seperti keselamatan memori, jadi semakin ramai pembangun mula menggunakan bahasa ini untuk pembangunan. Di Golang, pelbagai operasi boleh dicapai melalui panggilan sistem, dan salah satu ciri menarik ialah menyembunyikan aplikasi Golang ke dalam bar tugas.
Sembunyikan pada bar tugas boleh melindungi keselamatan aplikasi dengan berkesan, contohnya, dalam beberapa kes, kami mungkin tidak mahu orang lain mengetahui aplikasi yang kami jalankan. Sudah tentu, fungsi ini juga boleh digunakan untuk meningkatkan pengalaman pengguna Sebagai contoh, apabila menggunakan beberapa aplikasi alat, ia boleh disembunyikan dalam bar tugas supaya tidak menjejaskan penggunaan biasa pengguna.
Cara untuk melaksanakan fungsi ini adalah melalui panggilan sistem Golang. Khususnya, anda perlu menggunakan fungsi Shell_NotifyIcon dalam API win32 untuk meletakkan aplikasi ke dalam bar tugas. Berikut ialah kod pelaksanaan:
package main import ( "strconv" "syscall" "unsafe" ) var ( user32 = syscall.MustLoadDLL("user32") shell32 = syscall.MustLoadDLL("shell32") kernel32 = syscall.MustLoadDLL("kernel32") MessageBox = user32.MustFindProc("MessageBoxW") _ = shell32.MustFindProc("Shell_NotifyIconW") GetCurrentProcessID = kernel32.MustFindProc("GetCurrentProcessId") ) type NOTIFYICONDATA struct { cbSize uint32 hWnd syscall.Handle uID uint32 uFlags uint32 uCallbackMessage uint32 hIcon syscall.Handle szTip [128]uint16 } const NIM_ADD = 0x00000000 const NIM_MODIFY = 0x00000001 const NIM_DELETE = 0x00000002 const NIF_MESSAGE = 0x00000001 const NIF_ICON = 0x00000002 const NIF_TIP = 0x00000004 func main() { procId, _, _ := GetCurrentProcessID.Call() hWnd := syscall.NewCallback(func(hwnd syscall.Handle, lParam uintptr) uintptr { return 0 }) nid := NOTIFYICONDATA{} nid.cbSize = uint32(unsafe.Sizeof(nid)) nid.hWnd = syscall.Handle(hWnd) nid.uID = uint32(procId) nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP nid.hIcon = syscall.Handle(syscall.GetModuleHandle(nil)) copy(nid.szTip[:], syscall.StringToUTF16("Golang 隐藏到任务栏")) Shell_NotifyIcon(NIM_ADD, unsafe.Pointer(&nid)) MessageBox.Call(0, uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("按 OK 关闭"))), 0) Shell_NotifyIcon(NIM_DELETE, unsafe.Pointer(&nid)) } func Shell_NotifyIcon(dwMessage uint32, pnid unsafe.Pointer) uint32 { ret, _, _ := shell32.MustFindProc("Shell_NotifyIconW").Call( uintptr(dwMessage), uintptr(pnid), ) return uint32(ret) }
Dalam fungsi utama, kami mula-mula memanggil GetCurrentProcessID untuk mendapatkan ID proses semasa, dan kemudian mencipta nilai hWnd jenis syscall.Handle untuk mewakili pemegang aplikasi semasa. Kemudian buat nid pembolehubah jenis NOTIFYICONDATA dan tetapkan sifat berkaitannya, termasuk uFlags sebagai NIF_MESSAGE|NIF_ICON|NIF_TIP, yang bermaksud meletakkan aplikasi dalam bar tugas. Kemudian panggil fungsi Shell_NotifyIcon untuk meletakkan aplikasi dalam bar tugas.
Pada masa yang sama, kami juga boleh menetapkan maklumat segera aplikasi dalam bar tugas. Sebagai contoh, kami menetapkan nid.szTip kepada "Golang hide to taskbar" supaya apabila pengguna meletakkan kursor pada ikon aplikasi, mereka boleh melihat maklumat segera yang sepadan.
Akhir sekali, kami menunggu pengguna menekan kekunci OK dalam kenyataan MessageBox.Call, supaya aplikasi kekal tersembunyi dalam bar tugas. Apabila pengguna menutup aplikasi, kami memanggil fungsi Shell_NotifyIcon sekali lagi untuk memadam aplikasi daripada bar tugas.
Ringkasnya, melalui kod di atas, kita boleh melaksanakan fungsi menyembunyikan aplikasi Golang dalam bar tugas dengan mudah. Sudah tentu, jika anda perlu menyembunyikan jenis aplikasi lain, anda juga boleh menggunakan kaedah yang sama untuk mencapai ini.
Atas ialah kandungan terperinci Bagaimana untuk menyembunyikan aplikasi Golang ke dalam bar tugas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!