日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > HTML >内容正文

HTML

如何用golang远程控制浏览器

發(fā)布時(shí)間:2023/12/20 HTML 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何用golang远程控制浏览器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如何用golang遠(yuǎn)程控制瀏覽器

瀏覽器作為現(xiàn)代桌面UI應(yīng)用已經(jīng)成為一個(gè)強(qiáng)大的存在,網(wǎng)上有很多關(guān)于webview的,但是作為操作系統(tǒng)自帶的瀏覽器也是一個(gè)很重要的應(yīng)用場(chǎng)景,如何控制瀏覽器界面,還有一種思路,采用窗體句柄的方式(內(nèi)部控制還在摸索中,目前通過(guò)子窗體遍歷好像不能獲取URL),獲取窗體句柄后就可以對(duì)其發(fā)消息,設(shè)置窗體顯示屬性,實(shí)現(xiàn)控制

func?(_this?*UIWebExtern)?Init(msg?Message)?*UIWebExtern?{OpenWithBrowser(msg.Noticeurl)time.Sleep(1?*?time.Second)_this.c?=?make(chan?int)var?hWnd?win.HWNDfor?{hwnd,?err?:=?GetWindowHwndByName("msedge.exe")if?err?==?nil?{hWnd?=?win.HWND(unsafe.Pointer(hwnd))if?IsMyWindowsHwnd(hWnd)?{_this.Hwnd?=?hWndbreak}}hwnd,?err?=?GetWindowHwndByName("chrome.exe")if?err?==?nil?{hWnd?=?win.HWND(unsafe.Pointer(hwnd))if?IsMyWindowsHwnd(hWnd)?{_this.Hwnd?=?hWndbreak}}hwnd,?err?=?GetWindowHwndByName("msedge.exe")if?err?==?nil?{hWnd?=?win.HWND(unsafe.Pointer(hwnd))if?IsMyWindowsHwnd(hWnd)?{_this.Hwnd?=?hWndbreak}}hwnd,?err?=?GetWindowHwndByName("firfox.exe")if?err?==?nil?{hWnd?=?win.HWND(unsafe.Pointer(hwnd))if?IsMyWindowsHwnd(hWnd)?{_this.Hwnd?=?hWndbreak}}hwnd,?err?=?GetWindowHwndByName("QQBrowser.exe")if?err?==?nil?{hWnd?=?win.HWND(unsafe.Pointer(hwnd))if?IsMyWindowsHwnd(hWnd)?{_this.Hwnd?=?hWndbreak}}hwnd,?err?=?GetWindowHwndByName("360Browser.exe")if?err?==?nil?{hWnd?=?win.HWND(unsafe.Pointer(hwnd))if?IsMyWindowsHwnd(hWnd)?{_this.Hwnd?=?hWndbreak}}time.Sleep(2?*?time.Second)}style?:=?win.GetWindowLong(_this.Hwnd,?win.GWL_STYLE)if?msg.NoBorder?{style?&=?^win.WS_SIZEBOX?&?^win.WS_CAPTION}?else?{style?|=?win.WS_SIZEBOX?|?win.WS_CAPTION}win.MoveWindow(_this.Hwnd,?int32(msg.UIpos.Startx),?int32(msg.UIpos.Starty),?int32(msg.UIpos.Width),?int32(msg.UIpos.Height),?true)if?msg.TopMost?{fmt.Print("TopMost\n")_this.bTopMost?=?truewin.SetWindowPos(_this.Hwnd,?win.HWND_TOPMOST,?0,?0,?0,?0,?win.SWP_NOMOVE|win.SWP_NOSIZE)}?else?{win.SetWindowPos(_this.Hwnd,?win.HWND_NOTOPMOST,?0,?0,?0,?0,?win.SWP_NOMOVE|win.SWP_NOSIZE)}win.SetWindowLong(_this.Hwnd,?win.GWL_STYLE,?style)if?msg.FullScreen?{win.SendMessage(_this.Hwnd,?win.WM_KEYDOWN,?0x0000007A,?0x20380001)//time.Sleep(1?*?time.Second)win.SendMessage(_this.Hwnd,?win.WM_KEYUP,?0x0000007A,?0x003C0001)}GetCurrentUrl(_this.Hwnd)return?_this}func?OpenWithBrowser(url?string)?error?{switch?runtime.GOOS?{case?"linux":return?exec.Command("xdg-open",?url).Start()case?"windows":return?exec.Command("rundll32",?"url.dll,FileProtocolHandler",?url).Start()case?"darwin":return?exec.Command("open",?url).Start()default:return?fmt.Errorf("runtime.GOOS?%s?is?not?supported",?runtime.GOOS)}}func?GetWindowHwndByName(name?string)?(uintptr,?error)?{proc,?err?:=?FindProcessByName(name)if?err?!=?nil?{return?0,?err}hwnd,?err?:=?GetWindowHwndByPID(proc.ProcessID)if?err?!=?nil?{return?0,?err}return?hwnd,?nil}func?GetWindowHwndByPID(dwProcessID?int)?(uintptr,?error)?{//func??PostKey(key?uint8)?(uintptr,?error)?{var?user32?=?syscall.NewLazyDLL("user32.dll")//var?p?*os.ProcessPid?:=?dwProcessIDEnumWindows?:=?func(enumFunc?uintptr,?lparam?uintptr)?{user32.NewProc("EnumWindows").Call(uintptr(enumFunc),?uintptr(lparam))}var?hwnd?uintptrcb?:=?syscall.NewCallback(func(h?uintptr,?prm?uintptr)?uintptr?{var?itr_pid?uint32itr_pid?=?0x0001user32.NewProc("GetWindowThreadProcessId").Call(uintptr(h),?uintptr(unsafe.Pointer(&itr_pid)))if?int(itr_pid)?==?Pid?{hwnd?=?h//return?hwnd//user32.NewProc("PostMessageW").Call(h,?0x0100,?uintptr(key),?0)return?0?//?stop?enumeration?(commented?to?make?sure?all?windows?created?by?our?process?get's?the?message)}return?1?//?continue?enumeration})EnumWindows(cb,?0)if?hwnd?==?0?{return?0,?fmt.Errorf("No?window?with?pid?%d?found",?Pid)}return?hwnd,?nil}

?

總結(jié)

以上是生活随笔為你收集整理的如何用golang远程控制浏览器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。