ahkinfo1.3.5可以调整大小

;AHK版本:	AutoHotkey_L 1.1.09.02
;~ #NoTrayIcon
;定义标题,在多处用到的!还是定义个变量比较好!后期修改时只改这里就行了
AHKInfo_Title=AHKInfo 1.3.5
;********************************************
;图标数据
Cross_CUR:="000002000100202002000F00100034010000160000002800000020000000400000000100010000000000800000000000000000000000020000000200000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83FFFFFE6CFFFFFD837FFFFBEFBFFFF783DFFFF7EFDFFFEAC6AFFFEABAAFFFE0280FFFEABAAFFFEAC6AFFFF7EFDFFFF783DFFFFBEFBFFFFD837FFFFE6CFFFFFF83FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28000000"
Full_ico:="0000010001002020100000000000E8020000160000002800000020000000400000000100040000000000000200000000000000000000100000001000000000000000000080000080000000808000800000008000800080800000C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFF00000FFFFFFFFFFFF000FFFFFFFFFF00FF0FF00FFFFFFFFFF000FFFFFFFFF0FF00000FF0FFFFFFFFF000FFFFFFFF0FFFFF0FFFFF0FFFFFFFF000FFFFFFF0FFFF00000FFFF0FFFFFFF000FFFFFFF0FFFFFF0FFFFFF0FFFFFFF000FFFFFF0F0F0FF000FF0F0F0FFFFFF000FFFFFF0F0F0F0FFF0F0F0F0FFFFFF000FFFFFF0000000F0F0000000FFFFFF000FFFFFF0F0F0F0FFF0F0F0F0FFFFFF000FFFFFF0F0F0FF000FF0F0F0FFFFFF000FFFFFFF0FFFFFF0FFFFFF0FFFFFFF000FFFFFFF0FFFF00000FFFF0FFFFFFF000FFFFFFFF0FFFFF0FFFFF0FFFFFFFF000FFFFFFFFF0FF00000FF0FFFFFFFFF000FFFFFFFFFF00FF0FF00FFFFFFFFFF000FFFFFFFFFFFF00000FFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000007770CCCCCCCCCCCCCCCCCCCCC07770007070CCCCCCCCCCCCCCCCCCCCC07070007770CCCCCCCCCCCCCCCCCCCCC0777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF80000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000FFFFFFFFFFFFFFFFFFFFFFFF"
Null_ico:="0000010001002020100000000000E8020000160000002800000020000000400000000100040000000000000200000000000000000000100000001000000000000000000080000080000000808000800000008000800080800000C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000007770CCCCCCCCCCCCCCCCCCCCC07770007070CCCCCCCCCCCCCCCCCCCCC07070007770CCCCCCCCCCCCCCCCCCCCC0777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF80000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080000000FFFFFFFFFFFFFFFFFFFFFFFF"
Cross_CUR_File=%A_Temp%Cross.CUR
Full_ico_File=%A_Temp%Full.ico
Null_ico_File=%A_Temp%Null.ico
;********************************************  
;					创建菜单
;********************************************  
OptionsMenu_Text1=总在最前`tWin+Shift+T
Menu, OptionsMenu, Add, %OptionsMenu_Text1% ,GuiMenu 
_MenuIsCheck( "OptionsMenu", OptionsMenu_Text1, "AlwaysOnTop")
if (ErrorLevel=-1) ;没有记录时将默认置顶
	Menu,OptionsMenu,Check, %OptionsMenu_Text1%
Hotkey,#+t,GuiOnTop
Menu, OptionsMenu, Add, 

OptionsMenu_Text2=复制时带 ahk_***`tWin+Shift+C
Menu, OptionsMenu, Add, %OptionsMenu_Text2% ,GuiMenu 
_MenuIsCheck( "OptionsMenu", OptionsMenu_Text2, "Copy.ahk_***")
Hotkey, #+C, Copy_ahk_T
Menu, OptionsMenu, Add, 

OptionsMenu_Text3=自动捕捉`tWin+Shift+F
Menu, OptionsMenu, Add, %OptionsMenu_Text3% ,GuiMenu 
_MenuIsCheck( "OptionsMenu", OptionsMenu_Text3, "AutoCapture")
Hotkey,#+f,AutoCapture
;++++++++++++++++++++++++++++++++++
Menu, MyMenuBar, Add, 选项(&O), :OptionsMenu
;-----------------------------------------------
Menu, aboutMenu, Add, 清除工具属性记录 ,GuiMenu 
Menu, aboutMenu, Add
Menu, aboutMenu, Add, AHK中文论坛`t(&L) ,GuiMenu 
Menu, aboutMenu, Add, AHK中文社区`t(&S) ,GuiMenu 
Menu, aboutMenu, Add, AHK英文论坛`t(&E) ,GuiMenu 
Menu, aboutMenu, Add, 关于`t(&A) ,GuiMenu 
Menu, MyMenuBar, Add, 帮助(&H), :aboutMenu
;-----------------------------------------------
Gui, 1:Menu, MyMenuBar
;===============================================
;			创建窗口控件
;===============================================
Gui, 1:Add, GroupBox, x5 y5 w232 h40 , 窗口信息
Gui, 1:Add, Text, x12 y22 w42 h22 , 标题:
Gui, 1:Add, Edit, x50 y19 w180 h19 ReadOnly -Wrap  vTitle
Gui, 1:Add, Picture, x243 y10 w32 h32 gSetico vPic
Gui, 1:Add, Tab2, hwndhEdit +Theme -Background -Wrap AltSubmit gTab_Click x2 y50 w275 h358  vTab1,窗口|控件|V/A文本|样式表|操作|IE元素|IE操作
;==========================================================
Gui, 1:Tab, 1 ;以下创建的控件属于第一个标签页
Gui, 1:Add, ListView, hwndhEdit NoSort Grid NoSortHdr -Multi gListView_DoubleClick vListView1  x8 y75 w263 h306 , 属性|值
;列表控件1中的项目,貌似这样写的代码比较少
ListView1_Text=窗口标题|窗口类|窗口ID|坐标|大小|窗口点击|样式|扩展样式|进程PID|进程名|进程路径|透明色|全局坐标|颜色 BGR|颜色 RGB
StringSplit,ListView1_Text_A,ListView1_Text,|
Loop,%ListView1_Text_A0% 
	LV_Add("",ListView1_Text_A%A_index%)
;调整所有列的宽度以适应行的内容
LV_ModifyCol(1)
LV_ModifyCol(2, 190)

Gui, 1:Add, Text,x8 y389 w75 VText_T,透明度:
Gui, 1:Add, Slider, AltSubmit Center Range0-255 NoTicks ToolTip Line1 vSlider1 gSlider x85 y384 w185 h20,255
GuiControl, Disable,Slider1

gui,1:+Resize +MaximizeBox 
;==========================================================
Gui, 1:Tab, 2 ;以下创建的控件属于第2个标签页
Gui, 1:Add, ListView, hwndhEdit4 NoSort Grid NoSortHdr -Multi gListView_DoubleClick vListView2 x8 y75 w263 h158 , 属性|值
ListView2_Text=类别名|文本|实例编号|句柄|坐标|大小|点击坐标|样式|扩展样式
StringSplit,ListView2_Text_A,ListView2_Text,|
Loop,%ListView2_Text_A0% 
	LV_Add("",ListView2_Text_A%A_index%)
LV_ModifyCol(1)
LV_ModifyCol(2, 190)
;......................
Gui, 1:Add, ListView, hwndhEdit3 AltSubmit Checked Grid NoSort -Multi HwndLV4H gListView_DoubleClick vListView4 x8 y233 w263 h170 ,控件列表|ID|句柄|文本|

;==========================================================
Gui, 1:Tab, 3 ;以下创建的控件属于第3个标签页 []
Gui, 1:Add, Edit, hwndhEdit5 HScroll ReadOnly x8 y75 w263 h162 vVisible_text,这里将显示的是可见文本
Gui, 1:Add, Edit, hwndhEdit6 HScroll ReadOnly x8 y237 w263 h162 vHidden_text,这里将显示的是全部文本
;==========================================================
Gui, 1:Tab, 4 ;以下创建的控件属于第4个标签页
;~ Gui, 1:Add, GroupBox, x5 y310 w266 h90 , 全局鼠标
;~ ;全局鼠标列表
Gui, 1:Add, ListView,HwndLV3H NoSort NoSortHdr AltSubmit Checked Grid -Multi gListView_DoubleClick vListView3 x8 y75 w263 h325 , 窗口样式|值|说明
ListView3_Text=WS_BORDER,0x00800000,细边框|WS_POPUP,0x80000000,弹出式|WS_CAPTION,0x00C00000,标题栏|WS_DISABLED,0x08000000,不可用|WS_DLGFRAME,0x00400000,对话框边框|WS_MAXIMIZE,0x01000000,初始状态为最大化|WS_MAXIMIZEBOX,0x00010000,最大化按钮|WS_MINIMIZE,0x20000000,初始状态为最小化|WS_MINIMIZEBOX,0x00020000,最小化按钮|WS_OVERLAPPED,0x00000000,层叠|WS_SIZEBOX,0x00040000,可调整边框|WS_SYSMENU,0x00080000,标题菜单|WS_VSCROLL,0x00200000,垂直滚动条|WS_HSCROLL,0x00100000,水平滚动条|WS_VISIBLE,0x10000000,可见|WS_EX_TOPMOST,0x00000008,置顶状态|WS_EX_TOOLWINDOW,0x00000080,工具窗口|WS_EX_WINDOWEDGE,0x00000100,凸起边框 
StringSplit,ListView3_Text_A,ListView3_Text,|
Loop,%ListView3_Text_A0% {
	StringSplit,ListView3_Text_A_L,ListView3_Text_A%A_index%,`,
	LV_Add("",ListView3_Text_A_L1,ListView3_Text_A_L2,ListView3_Text_A_L3)
}
LV_ModifyCol()

;==========================================================
Gui, 1:Tab, 5 ;以下创建的控件属于第5个标签页
Gui, Add, Text, x8 y77,窗口识别条件:
Gui, Add, Checkbox,Checked x90 y73 h18 w45  vCheckbox1,标题
Gui, Add, Checkbox,Checked x140 y73 h18 vCheckbox2,类
Gui, Add, Checkbox, x180 y73 w57 h18 vCheckbox3,进程名
Gui, Add, Button,x236 y73 w35 h20 gbutton1,生成
Gui, 1:Add, Edit,  hwndhEdit7 HScroll ReadOnly x8 y95 w263 h305 vGenerate_text
;==========================================================
Gui, 1:Tab, 6 ;以下创建的控件属于第6个标签页 IE元素
Gui, 1:Add, ListView, AltSubmit NoSort NoSortHdr Grid -Multi HwndLV5H gListView_DoubleClick vListView5  x8 y75 w263 h238 , 元素属性|属性值
ListView5_Text=document.title|document.url|statustext|tagname|type|name|id|classname|value|title|outertext|innertext|src|href|target
StringSplit,ListView5_Text_A,ListView5_Text,|
Loop,%ListView5_Text_A0% 
	LV_Add("",ListView5_Text_A%A_index%)
LV_ModifyCol()

Gui, Add, Radio, x8 y313 gRadio vRadio1,innerhtml
Gui, Add, Radio,Checked x100 y313 gRadio vRadio2,outerhtml
Gui, 1:Add, Edit, hwndhEdit8 ReadOnly x8 y326 w263 h75 vEdit1
Radio1Text:=
Radio2Text:=
;==========================================================
Gui, 1:Tab, 7 ;以下创建的控件属于第7个标签页 IE操作
Gui, Add, Radio,Checked x10 y75 h20 gRadio vRadio3, 简单代码
Gui, Add, Radio, x100 y75 h20 gRadio vRadio4, 比较准确
Gui, 1:Add, Edit,  hwndhEdit1 HScroll ReadOnly x8 y95 w263 h305 vIeGenerate_text

global Radio3_Text:=
global Radio4_Text:=
;~ GuiControl,Choose,tab1,7
;==========================================================
Gui, 1:+HwndAHKID +OwnDialogs

X:=_RegR("X")="" ? 0:_RegR("X")
Y:=_RegR("Y")="" ? 0:_RegR("Y")
;~ MsgBox,%X%
Gui, 1:Show,x %X% y %Y% w279 h410, %AHKInfo_Title%
;=====================================================
Gui, 2:Color,FF0000
Gui, 2:-Caption +ToolWindow +Border +AlwaysOnTop +LastFound
WinSet, TransColor,FF0000 250

FileDelete,%A_Temp%Cross.CUR
FileDelete,%A_Temp%Full.ico
FileDelete,%A_Temp%Null.ico
;图片控件
IfNotExist,%Full_ico_File%
	BYTE_TO_FILE(StrToBin(Full_ico),Full_ico_File)
GuiControl,,Pic,%Full_ico_File%
;-----------------------------
;改为屏幕模式
CoordMode,Mouse,Screen
CoordMode,Pixel,Screen
;窗口是否置顶
IsCheck:=IsMenuItemChecked( 0, 0, AHKID )

if (IsCheck=1)
	WinSet,AlwaysOnTop,On,ahk_id %AHKID%
;捕捉功能
IsCheck:=IsMenuItemChecked( 0, 4, AHKID )
if (IsCheck=0) {
	SetTimer,GetPos,Off
}else{
	SetTimer,GetPos,On
	WinSetTitle,ahk_id %AHKID%,,(自动)%AHKInfo_Title%
}
;==============全局变量============
global wb
global ele

;----------------热键-------------------
;一键捕捉 ;沿用旧版本ahkinfo的热键
Hotkey,~MButton,GetPos ;鼠标中键
Hotkey,~#ctrl,GetPos ;LWin+Ctrl
Hotkey,~^LWin,GetPos ;Ctrl+LWin
;定义窗口的热键
Hotkey,IfWinActive,ahk_id %AHKID%
Hotkey,Esc,GuiClose ;按Esc退出
return

;===========================

GuiClose:
WinGetPos,X,Y,,,ahk_id %AHKID%
_RegW("X",X)
_RegW("Y",Y)
FileDelete,%A_Temp%Cross.CUR
FileDelete,%A_Temp%Full.ico
FileDelete,%A_Temp%Null.ico
ExitApp

Slider:
IfWinExist,ahk_id %OutWin3%
{
GuiControl,,Text_T,透明度(%Slider1%):
if Slider1!=
	WinSet,Transparent,%Slider1%,ahk_id %OutWin3%
}
return

GuiMenu: ;菜单事件
Gui +OwnDialogs
ThisMenuItemPos:=A_ThisMenuItemPos-1
ItemPos=%A_ThisMenu%%ThisMenuItemPos%
 ;~ **********************
 ;~ * 以下是帮助菜单内容 *
 ;~ **********************
if (ItemPos = "aboutMenu0") { ;清除工具的属性记录
	MsgBox, 4132, 询问, 是否要清除AHKInfo的属性记录并退出?
	IfMsgBox,Yes 
	{
		RegDelete,HKCU,SoftwareAutoHotKeyAHKInfo
		ExitApp
	}
}else if (ItemPos = "aboutMenu2") { ;AHK中文论坛
	Run,http://ahk.5d6d.com/?fromuid=4531
}else if (ItemPos = "aboutMenu3") { ;中文社区
	Run,http://cn.autohotkey.com/
}else if (ItemPos = "aboutMenu4") { ;英文社区
	Run,http://www.autohotkey.com/
}else if (ItemPos = "aboutMenu5") { ;关于
	MsgBox, 262208, 关于 %AHKInfo_Title%, 作者:	星雨朝霞`nQQ:	458926486
 ;~ **********************
 ;~ * 以下是选项菜单内容 *
 ;~ **********************

}else if (ItemPos = "OptionsMenu0"){ ;切换置顶
	Menu,%A_ThisMenu%,ToggleCheck,%A_ThisMenuItem%
	IsCheck:=IsMenuItemChecked( 0, 0, AHKID )
	_RegW("AlwaysOnTop",IsCheck)
	if (IsCheck=1)
		WinSet,AlwaysOnTop,On,ahk_id %AHKID%
	else
		WinSet,AlwaysOnTop,Off,ahk_id %AHKID%

}else if (ItemPos = "OptionsMenu2"){ ;切换复制时带上 ahk_*** 
	Menu,%A_ThisMenu%,ToggleCheck,%A_ThisMenuItem%
	IsCheck:=IsMenuItemChecked( 0, 2, AHKID )
	_RegW("Copy.ahk_***",IsCheck)
}else if (ItemPos = "OptionsMenu4"){ ;自动捕捉 AutoCapture
	Menu,%A_ThisMenu%,ToggleCheck,%A_ThisMenuItem%
	IsCheck:=IsMenuItemChecked( 0, 4, AHKID )
	if (IsCheck=0) {
		SetTimer,GetPos,Off
		;~ GuiControl,,Pic,%A_Temp%Full.ico
		WinSetTitle,ahk_id %AHKID%,,%AHKInfo_Title%
	}else{
		SetTimer,GetPos,On
		WinSetTitle,ahk_id %AHKID%,,(自动)%AHKInfo_Title%
	}
	_RegW("AutoCapture",IsCheck)
}else
	MsgBox,%ItemPos%
return

GuiOnTop: ;窗口置顶
;为了能选中菜单项又能触发它的事件!我只想到这种貌似有效又简单的方法
WinMenuSelectItem,ahk_id %AHKID%,,1&,1&
return

Copy_ahk_T: ;切换复制时带上 ahk_*** 
WinMenuSelectItem,ahk_id %AHKID%,,1&,3&
return

AutoCapture: 	;自动捕捉 AutoCapture
WinMenuSelectItem,ahk_id %AHKID%,,1&,5&
return

Tab_Click:
GuiControlGet,var,,tab1
;~ MsgBox,%var%
return

ListView_DoubleClick:	

Gui, 1:ListView,%A_GuiControl% ;切换下面的列表命令对应的列表控件,A_GuiControl包含了当前点击的控件关联变量名
;双击列表复制
if (A_GuiControlEvent="DoubleClick"){ ;只有是双击时才触发
	if (A_GuiControl="ListView1" or A_GuiControl="ListView2" or A_GuiControl="ListView3" or A_GuiControl="ListView5") and (A_EventInfo!=0){
		LV_GetText(LV_Text,A_EventInfo ,2) ;获取选中的项目第二列的内容,A_EventInfo包含了当前选中的行数
		if LV_Text !=
		{ ;如果内容不为空
			ahk_x= ;定义一个变量,(我也不知道要不要这样)
			
				;检查是否选中 复制时带 ahk_
				IsCheck:=IsMenuItemChecked( 0, 2, AHKID ) ;所检查的菜单位置: 第一个菜单第三个项目
				if (IsCheck=1){ ;如果菜单项是选中状态
					if (A_GuiControl="ListView1"){ ;如果是指定的控件
						if (A_EventInfo=2) ;
							ahk_x:="ahk_class "
						if (A_EventInfo=3)
							ahk_x:="ahk_id "
						if (A_EventInfo=9)
							ahk_x:="ahk_pid "
						if (A_EventInfo=10)
							ahk_x:="ahk_exe "
					}
					if (A_GuiControl="ListView5")
						ahk_x:="." _LV_GetText(A_EventInfo) ":="
				}
			
			Clipboard=%ahk_x%%LV_Text%
			_ToolTip( "Clipboard= " Clipboard)
		}
	}
	;控件列表双击事件
	if (A_GuiControl="ListView4" and A_EventInfo!=0){
		LV_GetText(ListView4_T1,A_EventInfo,1)
		LV_GetText(ListView4_T2,A_EventInfo,4)
		LV_GetText(ListView4_T3,A_EventInfo,2)
		LV_GetText(ListView4_T4,A_EventInfo,3)
		ControlGetPos,lvx,lvy,lvw,lvh,%ListView4_T1%,ahk_id %OutWin3%
		ListView4_T5=%lvx%,%lvy%
		ListView4_T6=%lvw%,%lvh%
		ListView4_T7=
		ControlGet,ListView4_T8,Style,,%ListView4_T1%,ahk_id %OutWin3%	;控件样式
		ControlGet,ListView4_T9,ExStyle,,%ListView4_T1%,ahk_id %OutWin3%	;控件扩展样式
		Gui, 1:ListView,ListView2
		Loop,9	
			LV_Modify(A_Index,"Col2",ListView4_T%A_Index%)	
		LV_ModifyCol() ;重新调整列宽
	}
}
;列表选中事件
MouseGetPos,,,,LV,2
if (LV=LV4H and A_GuiControl="ListView4" and A_GuiControlEvent="I" and A_EventInfo!=0){ 
	IfWinExist,ahk_id %OutWin3%
	{
		LV_GetText(LV_Text,A_EventInfo,1)
		if % InStr(ErrorLevel, "C", true)
			Control,Show,,%LV_Text%,ahk_id %OutWin3%
		else if % InStr(ErrorLevel, "c", true)
			Control,Hide,,%LV_Text%,ahk_id %OutWin3%
		;~ WinSet,Redraw,,ahk_id %OutWin3%
		
	}
}
if (LV=LV5H and A_GuiControl="ListView5" and A_GuiControlEvent="I" and A_EventInfo!=0 and IsObject(wb) and IsObject(ele)){ 
	if _LV_GetText(A_EventInfo)="Checked" {
		if InStr(ErrorLevel, "C", true) 
			ele.Checked:=true
		if InStr(ErrorLevel, "c", true) 
			ele.Checked:=false
}}
;~ MsgBox,%A_GuiControl%
;双右击时事件
if (A_GuiControlEvent="R") { 
	if  (A_GuiControl="ListView5" and IsObject(wb) and IsObject(ele)){
		LV_GetText(LV_Text1,A_EventInfo,1)
		LV_GetText(LV_Text2,A_EventInfo,2)
		WV=title,url,value,outertext,innertext
		if instr(WV,LV_Text1) {
			InputBox,LV_TextOut,元素属性值,输入元素属性值`n%LV_Text1% =,,,150,,,,,%LV_Text2%
			if !ErrorLevel  {
				LV_Modify(A_EventInfo,"Col2",LV_TextOut)
				if _LV_GetText(A_EventInfo)="title"
					wb.document.title:=LV_TextOut
				if _LV_GetText(A_EventInfo)="url"
					wb.Navigate(LV_TextOut)
				if _LV_GetText(A_EventInfo)="value"
					ele.value:=LV_TextOut
				if _LV_GetText(A_EventInfo)="innertext"
					ele.innertext:=LV_TextOut
				if _LV_GetText(A_EventInfo)="outertext"
					ele.outertext:=LV_TextOut
	}
}}}
;窗口样式
if (LV=LV3H and A_GuiControl="ListView3" and A_GuiControlEvent="I" and A_EventInfo!=0 and OutWin3!=AHKID){ 
	DetectHiddenWindows, on  
	IfWinExist,ahk_id %OutWin3%
	{
		;~ MsgBox,
		;~ if (OutWin3!=AHKID) {
		LV_GetText(LV_Text1,A_EventInfo,1)
		LV_GetText(LV_Text,A_EventInfo,2)
		if % InStr(ErrorLevel, "C", true)
			if % InStr(LV_Text1,"EX")
				WinSet,ExStyle,+%LV_Text%,ahk_id %OutWin3%
			else
				WinSet,Style,+%LV_Text%,ahk_id %OutWin3%
		else if % InStr(ErrorLevel, "c", true)
			if % InStr(LV_Text1,"EX")
				WinSet,ExStyle,-%LV_Text%,ahk_id %OutWin3%
			else
				WinSet,Style,-%LV_Text%,ahk_id %OutWin3%
		;~ WinSet,Redraw,,ahk_id %OutWin3%
	} ;}
	DetectHiddenWindows, Off
}
return



;图标控件点击事件
Setico:

IfNotExist,%Cross_CUR_File%
	BYTE_TO_FILE(StrToBin(Cross_CUR),Cross_CUR_File)
IfNotExist,%Null_ico_File%
	BYTE_TO_FILE(StrToBin(Null_ico),Null_ico_File)
	GuiControl,,Pic,%Null_ico_File%
;设置鼠标指针为十字标
CursorHandle := DllCall( "LoadCursorFromFile", Str,Cross_CUR_File )
DllCall( "SetSystemCursor", Uint,CursorHandle, Int,32512 )
SetTimer,GetPos,500
GuiControl,,ieGenerate_text,等待...
SetText("等待...")
;等待左键弹起
KeyWait,LButton
Gui, 2:Hide
SetTimer,GetPos,Off
;还原鼠标指针
DllCall( "SystemParametersInfo", UInt,0x57, UInt,0, UInt,0, UInt,0 )
;图标设置为原样
IfNotExist,%Full_ico_File%
	BYTE_TO_FILE(StrToBin(Full_ico),Full_ico_File)
GuiControl,,Pic,%Full_ico_File%

;~ GuiControlGet,TABVar,,TAB1 ;当前选项卡序号
;~ if (TABVar>=6) {

return

Generate(){ ;生成简单代码
	Gui, 1:ListView,ListView1	;切换到窗口列表以设置数据
	GuiControlGet,Checkbox1_C,,Checkbox1
	GuiControlGet,Checkbox2_C,,Checkbox2
	GuiControlGet,Checkbox3_C,,Checkbox3
	GuiControlGet,ALL_text,,Hidden_text
	StringSplit,ALL_text,ALL_text,`n
	LV_GetText(text1,1,2) ;标题
	LV_GetText(text2,2,2)	;类名
	LV_GetText(text3,10,2)	;进程名
	LV_GetText(text4,6,2)	;窗口内指定坐标
	Gui, 1:ListView,ListView2
	LV_GetText(text5,1,2) ;获取控件类
	LV_GetText(text6,7,2) ;获取控件内坐标
	
	Loop,%ALL_text0%
	{
		Index:=ALL_text0-A_Index+1
		Text_index:=ALL_text%Index%
		WinText:=Text_index!="" ? SubStr(Text_index,1,10):
		if Text_index!=
			break
		;~ if Text_index!=
		;~ {
			;~ WinText:=SubStr(Text_index,1,10)
			;~ Break
		;~ }
		
	}
	WinTitle:=
	if (Checkbox1_C=1)
		WinTitle=%text1%
	if (Checkbox2_C=1) 
		WinTitle=%WinTitle% ahk_class %text2%
	if (Checkbox3_C=1) 
		WinTitle=%WinTitle% ahk_exe %text3%
	SetText("",0)
	if (WinTitle!="" and WinTitle!="ahk_class"){
		;~ SetText(";------>-------")
		text=
		(
		;等待指定标题窗口出现
		WinWait, %WinTitle%, %WinText%
		
		)
		SetText(text)
		
		text=
		(
		;点击窗口内指定坐标
		ControlClick, %text4%, %WinTitle%, %WinText%
		
		)
		SetText(text)

		if text5!=
		{
			text=
			(
			;点击控件
			ControlClick, %text5%, %WinTitle%, %WinText%
			
			)
			SetText(text)
			
			if text6!=
			{
				text=
				(
				;左键点击控件内指定坐标1次
				ControlClick, %text5%, %WinTitle%, %WinText%, LEFT, 1, %text6%
				
				)
				SetText(text)
			}
			if % InStr(text5,"Button")
			{
				text=
				(
				;控件选中(如果此控件为选择框或单选框) Check替换为Uncheck即取消选中
				Control, Check, , %text5%, %WinTitle%, %WinText%
				
				)
				SetText(text)
			}
			text=
			(
			;向控件发送空格键
			ControlSend, %text5%,{Space}, %WinTitle%, %WinText%
			
			)
			SetText(text)
}}
;~ Gui, 1:ListView,ListView5	;切换到窗口列表以设置数据
;~ IE_Array:=Object()
Gui, 1:Tab, 7
iUrl:=GetV("document.url",2)
itagname:=GetV("tagname",2)
itype:=GetV("type",2)
iID:=GetV("id",2)
iValue:=GetV("Value",2)!="" ? GetV("Value",2):"设置新属性值"
Index:=1
iCode=
(
;脚本由 ahkinfo 生成
ComObjError(false) ;关闭对象错误提示
for window in ComObjCreate("Shell.Application").Windows {
	if InStr(window.document.url,"%iUrl%") { ;网页地址子字符串
		ie:=window
		break 
}} ;连接符合条件的IE窗口,其它窗口上的IE控件请用 IEAttach() 帖子: http://ahk.5d6d.net/viewthread.php?tid=5501
if IsObject(ie)=0 {
	;Exit ;如果连接IE对象失败就退出当前线程,(貌似跳过后面的代码了)
	ie:=ComObjCreate("InternetExplorer.Application") ;如果连接IE对象失败就创建一个IE窗口
	ie.visible :=true ;浏览器窗口可见
	ie.Navigate("%iUrl%") ;如果先加载空白页面 about:blank ,这样IE窗口应该响应得快一点点
}

Loop { ;等待网页加载完成!
	Sleep,200
	if (ie.readyState="complete" or ie.readyState=4 or A_LastError!=0)
		break
} ;****************************************************************`n`n
)
iCode2:=GetV("tagname",2)!="" ? ("if (" itagname ".item(A_Index-1).tagname=`"`"" itagname "`"`" " ):
iCode2.=GetV("id",2)!="" ? ("and " itagname ".item(A_Index-1).id=`"`"" GetV("id",2) "`"`" " ):
iCode2.=GetV("src",2)!="" ? ("and " itagname ".item(A_Index-1).src=`"`"" GetV("src",2) "`"`" " ):
iCode2.=GetV("name",2)!="" ? ("and " itagname ".item(A_Index-1).name=`"`"" GetV("name",2) "`"`" " ):
iCode2.=GetV("classname",2)!="" ? ("and " itagname ".item(A_Index-1).classname=`"`"" GetV("classname",2) "`"`" " ):
iCode2.=GetV("href",2)!="" ? ("and " itagname ".item(A_Index-1).href=`"`"" GetV("href",2) "`"`" " ):
iCode2.=GetV("target",2)!="" ? ("and " itagname ".item(A_Index-1).target=`"`"" GetV("target",2) "`"`" " ):

;~ iCode2.=GetV("classname",2)!="" ? ".classname`n":
;~ iCode2.=GetV("innertext",2)!="" ? ".innertext`n":
;~ iCode2.=GetV("value",2)!="" ? ".value`n":




Gui, 1:ListView,ListView5	;切换到窗口列表以设置数据
Radio4_Text_value=
(
%itagname%:=ie.document.GetElementsByTagName("%itagname%")
Loop `% %itagname%.length {
%iCode2%) {
	%itagname%.item(A_Index-1).value:="%iValue%"
	break ;找到一个符合条件的元素进行操作后,就退出循环,后面的元素就不比较了,可以提高一点点效率
}}
)
Radio4_Text_Click=
(
%itagname%:=ie.document.GetElementsByTagName("%itagname%")
Loop `% %itagname%.length {
%iCode2%) {
	%itagname%.item(A_Index-1).Click()
	break ;找到一个符合条件的元素进行操作后,就退出循环,后面的元素就不比较了,可以提高一点点效率
}}
)
Radio4_Text_Check=
(
%itagname%:=ie.document.GetElementsByTagName("%itagname%")
Loop `% %itagname%.length {
%iCode2%) {
	;选择单选`/复选框并激活onChange/OnClick事件;设置为 false 即取消选择
	%itagname%.item(A_Index-1).Checked:=true
	%itagname%.item(A_Index-1).fireEvent("onChange")
	%itagname%.item(A_Index-1).fireEvent("OnClick")
	break ;找到一个符合条件的元素进行操作后,就退出循环,后面的元素就不比较了,可以提高一点点效率
}}
)
;=*********************************************************************
if (itagname="input") {

	if (itype="text" or itype="password")
		if (iID=""){
			Radio3_Text=;设置新属性值`nie.document.GetElementsByTagName("%itagname%").item(%TagIndex%).value:="%iValue%"`n`n
			Radio4_Text:=Radio4_Text_value
		}else{
			Radio3_Text=;设置新属性值`nie.document.getElementById("%iID%").value:="%iValue%"`n`n
			Radio4_Text:=Radio4_Text_value
		}
	if (itype="submit" or itype="button" or itype="image")
		if (iID=""){
			Radio3_Text=;点击元素`nie.document.GetElementsByTagName("%itagname%").item(%TagIndex%).Click()
			Radio4_Text:=Radio4_Text_Click
		}else{
			Radio3_Text=;点击元素`nie.document.getElementById("%iID%").Click()
			Radio4_Text:=Radio4_Text_Click
		}
	if (itype="radio" or itype="checkbox")
		if (iID=""){
			Radio3_Text=;选择单选`/复选框并激活onChange/OnClick事件;设置为 false 即取消选择`nie.document.GetElementsByTagName("%itagname%").item(%TagIndex%).Checked:=true`nie.document.GetElementsByTagName("%itagname%").item(%TagIndex%).fireEvent("onChange")`nie.document.GetElementsByTagName("%itagname%").item(%TagIndex%).fireEvent("OnClick")
			Radio4_Text:=Radio4_Text_Check
		}else{
			Radio3_Text=;选择单选`/复选框并激活onChange/OnClick事件;设置为 false 即取消选择`nie.document.getElementById("%iID%").Checked:=true`nie.document.getElementById("%iID%").fireEvent("onChange")`nie.document.getElementById("%iID%").fireEvent("OnClick")
			Radio4_Text:=Radio4_Text_Check
}}else if (itagname="button" or itagname="a" or itagname="img" or itagname="span" or itagname="area" or itagname="input_image" `
			or itagname="input_button" or itagname="input_submit" or itagname="input_radio" or itagname="input_reset" `
			or itagname="li" or itagname="td" or itagname="table"){
	if (iID=""){
		Radio3_Text=;点击元素`nie.document.GetElementsByTagName("%itagname%").item(%TagIndex%).Click()
		Radio4_Text:=Radio4_Text_Click
	}else{
		Radio3_Text=;点击元素`nie.document.getElementById("%iID%").Click()
		Radio4_Text:=Radio4_Text_Click
	}
}else if (itagname="textarea"){
	if (iID="")
		Radio3_Text=;设置新属性值`nie.document.GetElementsByTagName("%itagname%").item(%TagIndex%).value:="设置新属性值"`n`n
	else
		Radio3_Text=;设置新属性值`nie.document.getElementById("%iID%").value:="设置新属性值"`n`n
}else{
	Radio3_Text=MsgBox,0,`% ".item(%TagIndex%).outerhtml",`% ie.document.GetElementsByTagName("%itagname%").item(%TagIndex%).outerhtml
	;~ Radio4_Text=MsgBox,0,outerhtml,`% %outerhtml%
	Radio4_Text=
	(
%itagname%:=ie.document.GetElementsByTagName("%itagname%")
Loop `% %itagname%.length {
%iCode2%) {
	MsgBox,0,`% ".item(" A_Index-1 ").outerhtml",`% %itagname%.item(A_Index-1).outerhtml
}}
)
}
;"if (" itagname ".item(A_Index-1).tagname=`"`"" itagname "`"`" "
if InStr(Radio4_Text,itagname ".item(A_Index-1).tagname=`"`"" itagname "`"`" and")
	StringReplace,Radio4_Text,Radio4_Text,% itagname ".item(A_Index-1).tagname=`"`"" itagname "`"`" and"
else
	Radio4_Text:=Radio3_Text
global Radio3_TextS:=iCode Radio3_Text "`n"
global Radio4_TextS:=iCode Radio4_Text "`n"
GuiControlGet,Check_C,,Radio3
if Check_C=1 
	GuiControl,,ieGenerate_text,%Radio3_TextS%
else
	GuiControl,,ieGenerate_text,%Radio4_TextS%
}
;==================
GetV(VV,Col=1) {
Gui, 1:ListView,ListView5	;切换到窗口列表以设置数据
Loop,% LV_GetCount() {
	LV_GetText(outvar,A_Index)
	if (outvar=VV) {
		return _LV_GetText(A_Index,Col)
}}

}
SetText(iText,o=1){
	StringReplace,iText,iText,%A_Tab% ,,All
	if (o=1){
		GuiControlGet,ControlText,,Generate_text
		if ControlText=`n
			StringReplace,ControlText,ControlText,`n,,All
		GuiControl,,Generate_text,%ControlText%%iText%`n
	}else
		GuiControl,,Generate_text,%iText%`n
}

Radio:
	GuiControlGet,sRadio1,,Radio1
	if sRadio1=1
		GuiControl,,Edit1,%Radio1Text%
	else
		GuiControl,,Edit1,%Radio2Text%
	
	GuiControlGet,sRadio1,,Radio3
	if sRadio1=1
		GuiControl,,IeGenerate_text,%Radio3_TextS%
	else
		GuiControl,,IeGenerate_text,%Radio4_TextS%
return
;******************************************************************************************************
GetPos:
MouseGetPos,OutX,OutY,OutWin3,OutCtrl1	;取鼠标下信息
WinGetPos,WinX,WinY,WinW,WinH,ahk_id %OutWin3% ;取鼠标下窗口坐标/大小
WinGetTitle,OutWin1,ahk_id %OutWin3%	;取鼠标下窗口标题
WinGetClass,OutWin2,ahk_id %OutWin3%	;取鼠标下窗口类名
ControlGetPos,OutCtrlX,OutCtrlY,OutCtrlW,OutCtrlH,%OutCtrl1%,ahk_id %OutWin3%	;控件坐标/大小
GuiControlGet,TABVar,,TAB1 ;当前选项卡序号
;=========================================================
if (OutWin3=AHKID) { ;如果鼠标下窗口为自身清空所有
	GuiControl,,Title,
	Gui, 1:ListView,ListView1	;切换到窗口列表以设置数据
	Loop,%ListView1_Text_A0% 	
		LV_Modify(A_Index,"Col2","")
	LV_ModifyCol()
	Gui, 1:ListView,ListView2	;切换到控件列表以设置数据
	Loop,%ListView2_Text_A0% 	
		LV_Modify(A_Index,"Col2","")	
	LV_ModifyCol() ;重新调整列宽
	Gui, 1:ListView,ListView3 ;切换到列表控件3
	Loop,%ListView3_Text_A0% 
		LV_Modify(A_Index,"-Check") 
	Gui, 1:ListView,ListView4 ;切换到列表控件4 类别名|ID|句柄|文本|
	LV_Delete()
	LV_ModifyCol(1,"80","控件列表")
	LV_ModifyCol(2,50) ;重新调整列宽
	LV_ModifyCol(3,50) 
	LV_ModifyCol(4,50)
	GuiControl,,Hidden_text,
	GuiControl,,Visible_text,
	GuiControl,,Edit1,
}
;===================网页操作===========================
if InStr(OutCtrl1,"Internet Explorer_Server") {
	ControlGet,CtrlHwnd,Hwnd,,%OutCtrl1%,ahk_id %OutWin3%
	global wb:=_IEObjGetFromHwnd(CtrlHwnd) ;从控件句柄转到对象
	if IsObject(wb) {
		Gui, 1:ListView,ListView5 ;切换到列表控件5 IE
		LV_ModifyCol(2,"","属性值 (等待)" )
		GuiControl,,Title,% wb.document.title
		global ele:=wb.document.elementFromPoint(OutX-(WinX+OutCtrlX),OutY-(WinY+OutCtrlY)) ;取鼠标下网页元素对象
		Loop,% LV_GetCount() {
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="document.title" 	? wb.document.title:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="statustext" 	? wb.statustext:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="target" 		? ele.target:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="name" 			? ele.name:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="href" 			? ele.href:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="id" 			? ele.id:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="classname" 	? ele.classname:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="src" 			? ele.src:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="outertext" 	? ele.outertext:)|
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="innertext" 	? ele.innertext:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="type" 			? ele.type:)
			
			;~ LV_Modify(A_Index,_LV_GetText(A_Index)="checked"		and _LV_GetText(A_Index,2)!="" and ele.checked=-1 ? "Col2 Check":"Col2 -Check",_LV_GetText(A_Index)="checked" 	? (ele.checked=-1 ? "True":"false"):)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="title" 			? ele.title:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="tagname" 		? ele.tagname:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="id" 			? ele.id:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="value" 			? ele.value:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="name" 			? ele.name:)
			LV_Modify(A_Index,"Col2",_LV_GetText(A_Index)="document.url" 	? wb.document.url:)
		}
			LV_ModifyCol()
			Radio1Text:=ele.innerhtml
			Radio2Text:=ele.outerhtml
			gosub,Radio
	}
}

if (OutWin3!=AHKID){ ;不获取自身..和标签页为6以上.IE
	global OutWin3
;==============设置窗口列表的数据===================
;~ OutWin1=		;标题
;~ OutWin2=		;类名
;~ OutWin3=		;句柄
;~ OutWin4=		;窗口坐标
;~ OutWin5=		;窗口大小
;~ OutWin6=		;窗口点击
;~ OutWin7=		;窗口样式
;~ OutWin8=		;窗口扩展样式
;~ OutWin9=		;进程PID
;~ OutWin10=		;进程名
;~ OutWin11=		;进程路径
;===========================================

	Gui, 1:ListView,ListView1	;切换到窗口列表以设置数据
	
	GuiControl,,Title,%OutWin1%
	OutWin4=%WinX%,%WinY%
	OutWin5=%WinW%,%WinH%
	OutWin6_X:=OutX-WinX
	OutWin6_Y:=OutY-WinY
	OutWin6=x%OutWin6_X% y%OutWin6_Y%
	WinGet,OutWin7, Style,ahk_id %OutWin3%	;窗口样式
	WinGet,OutWin8, ExStyle,ahk_id %OutWin3%	;窗口扩展样式
	WinGet,OutWin9,PID,ahk_id %OutWin3%	;窗口进程PID
	WinGet,OutWin10,ProcessName,ahk_id %OutWin3%	;窗口进程名
	WinGet,OutWin11,ProcessPath,ahk_id %OutWin3%	;窗口进程路径
	WinGet,OutWin12,TransColor,ahk_id %OutWin3%		;获取窗口的透明色
	OutWin13=%OutX% , %OutY%
	PixelGetColor,OutWin14,%OutX%,%OutY%,Slow RGB ;获取鼠标下RGB颜色值
	PixelGetColor,OutWin15,%OutX%,%OutY%,Slow ;获取鼠标下BGR颜色值
	WinGet,OutWin17,Transparent,ahk_id %OutWin3%		;获取窗口的透明度
	if OutWin16=
		OutWin16=255
		GuiControl, Enable,Slider1
		GuiControl, ,Slider1,%OutWin16%
		GuiControl,,Text_t,透明度(%OutWin16%):
	Loop,%ListView1_Text_A0% 	
		LV_Modify(A_Index,"Col2",OutWin%A_Index%)	
	LV_ModifyCol()
;=============设置控件列表的数据===================

;~ OutCtrl1=		;控件类别名
;~ OutCtrl2=		;控件文本
;~ OutCtrl3=		;控件编号
;~ OutCtrl4=		;控件句柄
;~ OutCtrl5=		;控件坐标
;~ OutCtrl6=		;控件大小
;~ OutCtrl7=		;控件内点击坐标
;~ OutCtrl8=		;控件样式
;~ OutCtrl9=		;控件扩展样式
;===========================================
	Gui, 1:ListView,ListView2	;切换到控件列表以设置数据
	if (OutCtrl1!=""){ ;如果控件类别名不为空

		
		ControlGetText,OutCtrl2,%OutCtrl1%,ahk_id %OutWin3%	;获取控件文本
		ControlGet,OutCtrl4,Hwnd,,%OutCtrl1%,ahk_id %OutWin3%	;控件句柄
		OutCtrl3 := DllCall("GetDlgCtrlID", uint, OutCtrl4)	;控件ID
		if (OutCtrl3=0) {
				OutCtrl7_X:=OutX-(WinX+OutCtrlX)
				OutCtrl7_Y:=OutY-(WinY+OutCtrlY)
				OutCtrl7=x%OutCtrl7_X% y%OutCtrl7_Y%
			}else{
				OutCtrl7=
			}
		}else{
			OutCtrl7=
		}
		ControlGet,OutCtrl8,Style,,%OutCtrl1%,ahk_id %OutWin3%	;控件样式
		ControlGet,OutCtrl9,ExStyle,,%OutCtrl1%,ahk_id %OutWin3%	;控件扩展样式
		;上面所获取的数据变量名都设置为 同变量名+序号 是为了这里能两句命令就能解决复赋值问题

		Loop,%ListView2_Text_A0% 	
			LV_Modify(A_Index,"Col2",OutCtrl%A_Index%)	
		LV_ModifyCol() ;重新调整列宽
		;~ if (TABVar=1) ;如果当前标签是第1个,
			;~ GuiControl, Choose, Tab1,2 ;激活第2个标签页
		;===========================================
	}else{
		;如果控件类别名为空的,控件标签页中全部置空
		Loop,%ListView2_Text_A0% 	
			LV_Modify(A_Index,"Col2","")	
		;~ if (TABVar=2) ;如果当前标签是第2个,
			;~ GuiControl, Choose, Tab1,1 ;激活第1个标签页
	}
;===========================================
		Gui, 1:ListView,ListView3 ;切换到列表控件3
		Loop,%ListView3_Text_A0% {
			LV_GetText(LV_TEXT,A_Index,2)
		;~ MsgBox,%LV_TEXT%
		if (OutWin7 & LV_TEXT or OutWin8 & LV_TEXT)
			LV_Modify(A_Index,"Check") 
		else
			LV_Modify(A_Index,"-Check") 
		}
		LV_ModifyCol()
;=============设置可见文本的数据===================
	DetectHiddenText,Off 
	WinGetText,OutWinText_Visible,ahk_id %OutWin3%
	GuiControl,,Visible_text,%OutWinText_Visible%
;=============设置全部文本的数据===================
	DetectHiddenText,On 
	WinGetText,OutWinText_Hidden,ahk_id %OutWin3%
	GuiControl,,Hidden_text,%OutWinText_Hidden%
;===========================================
	Gui, 1:ListView,ListView4 ;切换到列表控件4 类别名|ID|句柄|文本|
	WinGet,CtrList,ControlList,ahk_id %OutWin3%
	LV_Delete()
	Loop, Parse,CtrList,`n
	{
		ControlGet,CtrlHwnd,Hwnd,,%A_LoopField%,ahk_id %OutWin3%
		CtrlID:= DllCall("GetDlgCtrlID", uint, CtrlHwnd)
		if (CtrlID"
XMLDOM.loadXML(xmlver)
Pic:=XMLDOM.createElement("pic")
Pic.dataType:="bin.hex"
pic.nodeTypedValue := Str
StrToByte := pic.nodeTypedValue
return StrToByte
}


; 数据流保存为文件
BYTE_TO_FILE(body, filePath){
  Stream := ComObjCreate("Adodb.Stream")
  Stream.Type := 1
  Stream.Open()
  Stream.Write(body)
  Stream.SaveToFile(filePath,2) ;文件存在的就覆盖
  Stream.Close()
}

AutoXYWH(ctrl_list, Attributes, Redraw = False)
{
	static cInfo := {}, New := []

	Loop, Parse, ctrl_list, |
	{
		ctrl := A_LoopField

		if ( cInfo[ctrl]._x = "" )
		{
			GuiControlGet, i, Pos, %ctrl%
			_x := A_GuiWidth  - iX
			_y := A_GuiHeight - iY
			_w := A_GuiWidth  - iW
			_h := A_GuiHeight - iH
			_a := RegExReplace(Attributes, "i)[^xywh]")
			cInfo[ctrl] := { _x:_x, _y:_y, _w:_w, _h:_h, _a:StrSplit(_a) }
		}
		else
		{
			if ( cInfo[ctrl]._a.1 = "" )
				Return

			New.x := A_GuiWidth  - cInfo[ctrl]._x
			New.y := A_GuiHeight - cInfo[ctrl]._y
			New.w := A_GuiWidth  - cInfo[ctrl]._w
			New.h := A_GuiHeight - cInfo[ctrl]._h

			for i, a in cInfo[ctrl]["_a"]
				Options .= a New[a] A_Space
			
			GuiControl, % Redraw ? "MoveDraw" : "Move", % ctrl, % Options
		}
	}
}

_IEObjGetFromHwnd(h_IECtrl)
{
  static Msg := DllCall("RegisterWindowMessage", "str", "WM_HTML_GETOBJECT")
  SendMessage, Msg, 0, 0, , ahk_id %h_IECtrl%  
  if (ErrorLevel = "FAIL")
    return  
  lResult := ErrorLevel
  VarSetCapacity(GUID, 16, 0)
  GUID := IID_IHTMLDocument2  ; 这里 IID_IHTMLDocument2 不是个变量,为什么不会出错呢?
  sGUID := "{332C4425-26CB-11D0-B483-00C04FD90119}"
  CLSID := DllCall("ole32CLSIDFromString", "wstr", sGUID, "ptr", &GUID) >= 0 ? &GUID : ""
  DllCall("oleaccObjectFromLresult", "ptr", lResult, "ptr", CLSID, "ptr", 0, "ptr*", pDoc)
  static IID_IWebBrowserApp := "{0002DF05-0000-0000-C000-000000000046}"
  static SID_SWebBrowserApp := IID_IWebBrowserApp
  ComObjError(false)
  pWeb := ComObjQuery(pDoc, SID_SWebBrowserApp, IID_IWebBrowserApp)
  ObjRelease(pDoc)
  static VT_DISPATCH := 9, F_OWNVALUE := 1
  oIE := ComObjParameter(VT_DISPATCH, pWeb, F_OWNVALUE) 
  
  return, oIE
}

GuiSize:
	AutoXYWH(hEdit, "wh")
	AutoXYWH(hEdit1, "wh")
	AutoXYWH(LV5H, "wh")
	AutoXYWH(LV3H, "wh")
	AutoXYWH(hEdit4, "wh")
	AutoXYWH(hEdit5, "wh")
	AutoXYWH(hEdit6, "wh")
	AutoXYWH(hEdit7, "wh")
	AutoXYWH(hEdit8, "wh")
	AutoXYWH("Btn1|Btn2", "hx")
Return

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

一键输出系统版本与autohotkey版本号

2020-3-26 0:05:19

其他教程

ahk取重复前十的一种方法

2020-3-26 13:23:37

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索