go windows鎖屏 && 關閉桌面(殺掉檔案資源管理器)
鎖屏
func lockScreen() {
var args []string
args = append(args, "user32.dll", "LockWorkStation")
_, err := common.StartProcess("rundll32.exe", args...)
if err != nil {
common.Log.Error("lockScreen err:", err)
}
}
判斷是否鎖屏
func tScreenIsLocked() {
lockScreen()
// 時延太短會看不到效果
time.Sleep(time.Second * 7)
fmt.Println(ScreenIsLocked())
}
const (
DESKTOP_SWITCHDESKTOP = 0x0100 // The access to the desktop
)
// get desktop locked status
func ScreenIsLocked() bool {
// load user32.dll only once
user32 := syscall.MustLoadDLL("user32.dll")
openDesktop := user32.MustFindProc("OpenDesktopW")
closeDesktop := user32.MustFindProc("CloseDesktop")
switchDesktop := user32.MustFindProc("SwitchDesktop")
var lpdzDesktopPtr uintptr = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("Default"))) //string
var dwFloatsPtr uintptr = 0 //uint32
var fInheritPtr uintptr = 0 //boolean
var dwDesiredAccessPtr uintptr = uintptr(DESKTOP_SWITCHDESKTOP) //uint32
r1, _, _ := syscall.Syscall6(openDesktop.Addr(), 4, lpdzDesktopPtr, dwFloatsPtr, fInheritPtr, dwDesiredAccessPtr, 0, 0)
if r1 == 0 {
panic("get desktop locked status error")
}
res, _, _ := syscall.Syscall(switchDesktop.Addr(), 1, r1, 0, 0)
// clean up
syscall.Syscall(closeDesktop.Addr(), 1, r1, 0, 0)
return res != 1
}
殺掉檔案資源管理器
type PROCESSENTRY32 struct {
dwSize int32
cntUsage int32
th32ProcessID int32
th32DefaultHeapID uintptr
th32ModuleID int32
cntThreads int32
th32ParentProcessID int32
pcPriClassBase int32
dwFlags int32
szExeFile [260]byte
}
func killExplorer() {
kernel32 := syscall.NewLazyDLL("kernel32.dll")
CreateToolhelp32Snapshot := kernel32.NewProc("CreateToolhelp32Snapshot")
pHandle, _, _ := CreateToolhelp32Snapshot.Call(uintptr(0x2), uintptr(0x0))
if int(pHandle) == -1 {
fmt.Println("pHandle = -1")
return
}
defer func() {
CloseHandle := kernel32.NewProc("CloseHandle")
CloseHandle.Call(pHandle)
}()
Process32Next := kernel32.NewProc("Process32Next")
for {
var proc PROCESSENTRY32
proc.dwSize = int32(unsafe.Sizeof(proc))
if rt, _, _ := Process32Next.Call(uintptr(pHandle), uintptr(unsafe.Pointer(&proc))); int(rt) == 1 {
if strings.HasPrefix(string(proc.szExeFile[0:]), "explorer.exe") {
if pro, err := os.FindProcess(int(proc.th32ProcessID)); err != nil {
fmt.Println("FindProcess err: ", err)
} else {
err = pro.Kill()
}
}
} else {
break
}
}
}
注: 檔案資源管理器被關閉之後,可按Ctrl + Shift + Delete
開啟工作管理員,檔案 => 執行新任務,輸入explorer.exe重新開啟檔案資源管理器。
相關文章
- 怎麼關閉win10鎖屏介面 windows關閉鎖屏介面的方法Win10Windows
- 實現關閉程式函式,殺掉pchunter函式
- win10鎖屏圖片怎麼關閉_win10如何關閉鎖屏桌布Win10
- win10 資源管理器歷史記錄怎麼禁用_win10如何關閉資源管理器最近使用的檔案記錄Win10
- win10的鎖屏桌布在哪個資料夾_windows10鎖屏圖片檔案存放位置在哪Win10Windows
- windows10資源管理器刪除不了檔案是怎麼回事Windows
- go-filesystem 檔案管理器Go
- Win10系統怎樣關閉Windows檔案保護 win10關閉windows檔案保護的步驟Win10Windows
- win10系統關閉資源管理器後黑屏怎麼辦_win10關閉資源管理器後黑屏的解決方法Win10
- 華為手機雜誌鎖屏怎麼關閉?華為手機雜誌鎖屏的關閉方法步驟
- win10如何徹底關掉自動鎖屏 win10解除自動鎖屏的方式Win10
- win10如何取消鎖屏介面 win10怎麼關閉顯示鎖屏介面Win10
- windows上殺掉指定名稱的程式Windows
- Windows檔案關聯Windows
- C++如何關閉檔案C++
- win10怎麼取消開機鎖屏介面_win10如何關閉開機鎖屏介面Win10
- w10怎麼設定不自動鎖屏_win10關閉自動鎖屏介面方法Win10
- win10鎖屏桌布怎麼關閉_win10電腦鎖屏桌布怎麼設定Win10
- WPF 開啟資源管理器且選中某個檔案
- windows 更改檔案關聯Windows
- Win10系統怎麼關閉鎖屏介面【圖文】Win10
- 如何關閉Mac電腦鎖屏後的密碼登入?Mac密碼
- windows10系統如何關閉錄屏遊戲功能Windows遊戲
- explorer.EXE 是 Windows 作業系統中的一個關鍵程序,它負責管理和顯示使用者介面、工作列、桌面和檔案資源管理器。換句話說,它是 Windows 資源管理器的核心元件,使使用者能夠與作業系統進行互動,並管理檔案和資料夾。Windows作業系統元件
- win10 資源管理器怎麼預覽excel_win10資源管理器預覽excel檔案的方法Win10Excel
- windows 不鎖屏vb指令碼Windows指令碼
- css檔案與資源路徑相關CSS
- Win10系統資源管理器怎麼禁用檔案分組Win10
- 聯想電腦 win11系統,關閉聯想鎖屏後,windows聚焦不生效(其他電腦同理)Windows
- win10 資源管理器佈局怎麼設定_win10檔案資源管理器介面佈局設定方法Win10
- windows10怎麼關閉自動更新_如何關掉win10的自動更新WindowsWin10
- win10資源管理器沒有桌面選項如何解決_win10資源管理器導航皮膚沒有桌面解決教程Win10
- Windows在待機後重新進入桌面出現資源管理器無響應的解決方案Windows
- win10經常自己鎖屏關機怎麼辦 win10系統總是鎖屏關閉螢幕該怎麼辦Win10
- win10資源管理器多標籤如何設定_win10檔案資源管理器怎麼設定多標籤Win10
- 桌面檔案在c盤哪個資料夾 c盤桌面檔案路徑
- win10系統怎麼在資源管理器中新增庫檔案Win10
- win10怎麼清除檔案資源管理器的搜尋記錄Win10