Chrome标签绑定

/*
Chrome标签绑定 v1.0
by 如初
2021/5/22


TODO:
1.接收其他脚本传来的js代码

#Include Chrome.ahk
#Include Chrome标签绑定.ahk
以上两行需放在其他脚本开头的自动执行段中


注意:

窗口激活时触发刷新gui和检测Chrome进程
OnMessage(0x06, "_onActiveRefresh")

如下超级全局变量要避免污染
_ChromeInst
_defaultPageIndex
_defaultPage
_PageList



用法示例:
#Include Chrome.ahk
#Include Chrome标签绑定.ahk
MyPage:=getPageByGui() ;返回gui中勾选的页面
MyPage.Evaluate("alert('Chrome标签绑定!')")

*/

;函数开始
;------------------------------------------------------
; #Include Chrome.ahk
; #NoEnv
; #SingleInstance force
; SendMode, Input
; SetWorkingDir %A_ScriptDir%
; FileEncoding , UTF-8-RAW
; CoordMode, Mouse, Screen
; CoordMode, Menu, Window
; CoordMode, Caret, Screen
; CoordMode, ToolTip, Screen




global _ChromeInst := new Chrome() ;用默认的用户配置 打开空白页
global _defaultPageIndex
global _defaultPage
global _PageList

_ChromeGuiManagerIni() ;执行结束


getPageByGui(){ ;返回gui中勾选的页面
	return _ChromeInst.GetPageBy("id", _defaultPage["id"])
}







_ChromeGuiManagerIni(){
ExistFlag:= WinExist("ahk_exe chrome.exe")? true:false
if ExistFlag
{
	WinGet, OutputVarPID, PID , ahk_id %ExistFlag%
	_ChromeInst.PID:=OutputVarPID
	;如果本来已经打开了Chrome那么关掉刚刚打开的空白页
	Sleep 200 ;需要一点延迟来等待打开空白页
	_ChromeInst.GetPageByURL("about:blank").Call("Page.close")
}

;Gui
Gui, _ChromeTabs:default
Gui +HwndChromePageGui
Gui, _ChromeTabs: font, s12, SimHei
Gui, _ChromeTabs: Add, ListView, r20 w530 ReadOnly gChromeGuiEvent  -WantF2 Grid -Multi NoSortHdr
	, NO|网页标题|URL

;生成gui内容

_refreshChromePagesGui()
Gui, _ChromeTabs: Show

OnMessage(0x06, "_onActiveRefresh")
return
}

_onActiveRefresh(wParam){ ;激活时刷新列表
	Process, Exist, % _ChromeInst.PID
	if not ErrorLevel 
	{
		MsgBox 0x40040, 提示, Chrome已退出!`n程序将退出
		ExitApp
	}
	
	if (wParam=1)
		_refreshChromePagesGui()
}

;切换默认标签
ChromeGuiEvent(CtrlHwnd, GuiEvent, EventInfo, ErrLevel:=""){
	if !(GuiEvent="DoubleClick")
		return

	if (EventInfo=_defaultPageIndex)
		return
	else
	{
		oldGui:=A_defaultGui
		Gui, _ChromeTabs:default

		LV_Modify(_defaultPageIndex , "-Select", _defaultPageIndex ".")
		LV_Modify(EventInfo , "Select Focus", "✔")
		_defaultPageIndex:=EventInfo
		_defaultPage:=_PageList[EventInfo]
		;未完
		Tip("默认标签已切换!")
		Gui, %oldGui%:default
	}

}

_refreshChromePagesGui(){
	;注意插件也视为page
	;页面内的iframe等等也视为page
	;根据type来判断
	try PageData:=_ChromeInst.GetPageList()
		catch
		{
			_ChromeInst.Kill()
			MsgBox 0x40040, 提示, Chrome已退出!`n程序将退出
			ExitApp
		}

	_PageList:=[]
	for _, Page in PageData
	{
		if (Page["type"]!="page")
			continue
		_PageList.Push({title:Page["title"], url:Page["url"], id:Page["id"]})
	}

	oldGui:=A_defaultGui
	Gui, _ChromeTabs:default
	LV_Delete()

	for n,Page in _PageList
		LV_Add("", n ".", Page["title"], Page["url"])

	if IsObject(_defaultPage)
	{
		flag:=true
		for n,Page in _PageList
		{
			if (Page["id"]=_defaultPage["id"])
			{
				_defaultPageIndex:=n
				_defaultPage:=_PageList[n]
				flag:=false
				break
			}
		}

		if flag
		{
			_defaultPage:=_PageList[1]
			_defaultPageIndex:=1
		}
	}
	else ;默认第一个
	{
		_defaultPage:=_PageList[1]
		_defaultPageIndex:=1
	}


	LV_Modify(_defaultPageIndex , "Select Focus", "✔")
	LV_ModifyCol(1, "30 CEnter")
	LV_ModifyCol(2, 250)
	LV_ModifyCol(3, 250)

	Gui, %oldGui%:default

}

Tip(Text:="", time:=1000 ,x:=-100, y:=-100, tip_num:=1){
	Critical, On
	if (x=-100 and y=-100)
		ToolTip, %Text%, , , %tip_num%
	else
		ToolTip, %Text%, %x%, %y%, %tip_num%
	fn := Func("f_RemoveToolTip").Bind(tip_num)
	SetTimer, %fn% , -%time%
	return
}

f_RemoveToolTip(tip_num){
	ToolTip, , , , %tip_num%
	return
}

给TA捐赠
共{{data.count}}人
人已捐赠
其他

CheckProcess

2021-12-2 15:21:46

其他

CIipboard倒序文字0

2021-12-2 15:21:59

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索