×

releasecapture

Vb 怎么调用IE?关于C#调用 API.ReleaseCapture(); API.SendMessage(this.Handle, 161, 2, 0); 的问题

admin admin 发表于2022-07-09 17:39:02 浏览107 评论0

抢沙发发表评论

Vb 怎么调用IE


我前一段时间也做了个自动登录记录考勤的程序,可以使用WebBrowser控件。以下是当时在CSDN上查到的说明文档,希望对你有所帮助。

32.WebBrowser 控件-说明
很多地方还是空白,我还不知道用法。望各位赐教,谢谢
这是我自己编制浏览器时的资料,供各位参考。
控件文件:system32\shdocvw.oca shdocvw.dll
注册:regsvr32 shdocvw.dll
WebBrowser 是 IE 内核做的 VB 控件,
WebBrowser.Document 为活动的文档返回自动化对象,引用 Microsoft HTML Object Library 可查看详细属性和方法

下面的解说假设窗体中有一个名称为 Web1 的 WebBrowser 控件
■■方法 ==============================
▲GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项
▲GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项
▲GoHome 相当于IE的“主页”按钮,连接用户默认的主页
▲GoSearch 相当于IE的“搜索”按钮,连接用户默认的搜索页面
▲Navigate 连接到指定的 URL,并显示网页
▲Navigate2 与 Navigate 作用同?
▲Refresh 刷新当前页面
▲Refresh2 同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,
该表定义在ExDisp.h中,可以指定的不同值如下:
REFRESH_NORMAL 执行简单的刷新,不将HTTP pragma: no-cache头发送给服务器
REFRESH_IFEXPIRED 只有在网页过期后才进行简单的刷新
REFRESH_CONTINUE 仅作内部使用。在MSDN里写着DO NOT USE! 请勿使用
REFRESH_COMPLETELY 将包含pragma: no-cache头的请求发送到服务器
▲Stop 相当于IE的“停止”按钮,停止当前页面及其内容的载入
■■属性===================================
▲Document 为活动的文档返回自动化对象。如果HTML当前正被显示在 Web1 中,则 Document 提供
对DHTML Object Model的访问途径。下面有详细介绍
▲TopLevelContainer 返回一个Boolean值,表明 IE 是否是 Web1 控件顶层容器,是就返回 true
▲Type 返回已被 Web1 控件加载的对象的类型。例如:
如果加载.doc文件,就会返回 Microsoft Word Document
▲LocationName 返回一个字符串,该字符串包含着 Web1 当前显示的资源的名称,
如果资源是网页就是网页的标题;
如果是文件或文件夹,就是文件或文件夹的名称
▲LocationURL 返回 Web1 当前正在显示的资源的 URL
▲Busy 返回一个Boolean值,说明 Web1 当前是否正在加载 URL,如果返回 true
就可以使用 stop 方法来撤销正在执行的访问操作
▲Object 设置返回一个显现网页的 SHDocVwCtl.WebBrowser_V1 对象。参见下文。
▲MenuBar
▲StatusBar
▲ToolBar
▲Visible

■■事件===================================
▲BeforeNavigate2 导航发生前触发(打开网页前),刷新时不触发
▲CommandStateChange 当命令的激活状态改变时触发。它表明何时激活或关闭Back和Forward菜单项或按钮
▲DocumentComplete 当整个文档完成是触发,刷新页面不触发
▲DownloadBegin 当某项下载操作已经开始后触发,刷新也可触发此事件
▲DownloadComplete 当某项下载操作已经完成后触发,刷新也可触发此事件
▲NavigateComplete2 导航完成后触发,刷新时不触发
▲NewWindow2 弹出新窗口以前触发
可在此事件中设置 ppDisp 参数新网页显示对象,同时不会出现 SHDocVwCtl.WebBrowser_V1 的 NewWindow 事件
▲OnFullScreen 当 FullScreen 属性改变时触发。该事件采用 VARIENT_BOOL 的一个输入参数来指示 IE 是全
屏显示方式(VARIENT_TRUE)还是普通显示方式(VARIENT_FALSE)
▲OnMenuBar 改变 MenuBar 属性时触发,标示参数是 VARIENT_BOOL 类型的。
VARIANT_TRUE 可见,VARIANT_ FALSE 隐藏
▲OnQuit 无论是用户关闭浏览器还是开发者调用Quit方法,当IE退出时就会触发
▲OnStatusBar 改变 StatusBar 属性时触发,标示状态栏是否可见。
▲OnToolBar 改变 ToolBar 属性时触发,标示工具栏是否可见。
▲OnVisible 改变 Visible 属性时触发
▲StatusTextChange 控件的状态信息改变时触发。
▲TitleChange 网页标题改变时触发。参数 Text 是新标题,Web1.LocationName 属性是旧标题
■■SHDocVwCtl.WebBrowser_V1 对象==================
在窗体声明部分加入:Private WithEvents Web_V1 As SHDocVwCtl.WebBrowser_V1
在 Form_Load 加入:Set Web_V1 = Web1.Object
这样,Web_V1 就会有如下事件:
▲NewWindow 弹出新窗口以前触发
如果在 Web1_NewWindow2 设置了 ppDisp 为新显示对象,就不会出现此事件
★例子1,用自己开发的程序的新窗口显示弹出网页:
Dim nForm As New FormMain ’FormMain 为你的放有 Web1 控件的窗体
Processed = True ’阻止控件调用 IE 弹出窗口
nForm.Show
nForm.Web1.Navigate URL
★例子2,在同一窗口显示网页:
Processed = True ’阻止控件调用 IE 弹出窗口
Web1.Navigate URL
■■■■■■■■■■■■■■■■■■■■■■■■
■■Web1.Document 对象(HTMLDocument 对象)=======================
▲All(1)集合,已加载到 Web1 中的 html 文档包含的所有标签对象:HTMLAreaElement
集合对象索引起点为0,总个数为 All.length
可以用索引访问其中对象,如:All(1)
也可以用 Html 头元素名称访问对象,如:All(“body“)
All(0) 一般是自身的 outerHTML,可以这样返回文档代码(查看源文件):
Text1.Text = Web1.Document.All(0).outerhtml
但上一条语句并不可靠,有的网页开头的代码不是《html》,而是其他,例如:《!--STATUS OK--》
All()集合有 HTMLAreaElement 对象的大多数属性,有的元素还有特有的属性。
注意 某元素的 sourceIndex 属性就是该对象在 Document.All() 集合中的编号
▲body 主体元素对象:IHTMLElement
▲activeElement 活动元素:IHTMLElement
▲anchors 锚集合:IHTMLElementCollection
▲appendChild 方法:附加子对象(newChild As IHTMLDOMNode) As IHTMLDOMNode
▲applets 程序集合Java:IHTMLElementCollection
▲attachEvent 方法:隶属事件(event As String, pdisp As object) As Boolean
▲attributes 属性对象:object
▲bgColor 背景色:Variant
▲childNodes 子节点:object
▲clear 方法:清除
▲cloneNode 方法:复制节点(fDeep As Boolean) As IHTMLDOMNode
▲close 方法:关闭
▲compatMode
▲cookie 缓存
▲createAttribute 方法:创建属性(bstrattrName As String) As IHTMLDOMAttribute
▲createComment 方法:创建注释(bstrdata As String) As IHTMLDOMNode
▲createDocumentFragment 方法:创建文档片段() As IHTMLDocument2
▲createDocumentFromUrl 方法:从URL创建文档(bstrUrl As String, bstrOptions As String) As IHTMLDocument2
▲createElement 方法:创建元素(eTag As String) As IHTMLElement
▲CreateEventObject 方法:创建事件对象([pvarEventObject]) As IHTMLEventObj
▲createRenderStyle 方法:(v As String) As IHTMLRenderStyle
▲createStyleSheet 方法:创建方式表([bstrHref As String], [lIndex As Long = -1]) As IHTMLStyleSheet
▲createTextNode 方法:创建文本节点(text As String) As IHTMLDOMNode
▲defaultCharset 默认字符集?
▲detachEvent 方法:分离事件(event As String, pdisp As object)
▲dir
▲doctype 文档类型:IHTMLDOMNode
▲documentElement 文档元素:IHTMLElement
▲domain
▲elementFromPoint 方法:点所属组(x As Long, y As Long) As IHTMLElement
▲embeds :IHTMLElementCollection
▲execCommand 方法:实行命令(cmdID As String, [showUI As Boolean = False], [value]) As Boolean
▲execCommandShowHelp 方法:帮助命令(cmdID As String) As Boolean
▲fgColor 前景色:Variant
▲fileCreatedDate 文件创建日期
▲file Modified Date 文件修改日期
▲fileSize 文件大小
▲fileUpdatedDate 文件更新日期
▲FireEvent 方法:首事件(bstrEventName As String, [pvarEventObject]) As Boolean
▲firstChild 首子对象:IHTMLDOMNode
▲focus 方法:
▲forms 窗体:IHTMLElementCollection
▲frames 框架结构:FramesCollection
▲getElementById 方法:获取指定的 ID 元素(v As String) As IHTMLElement
▲getElementsByName 方法:获取指定的 Name 元素集合(v As String) As IHTMLElementCollection
▲getElementsByTagName 方法:获取指定的 TagName 元素集合(v As String) As IHTMLElementCollection
▲hasChildNodes 方法:
▲hasFocus 方法:() As Boolean
▲images 图像集合:IHTMLElementCollection

▲implementation 执行:IHTMLDOMImplementation
▲insertBefore 方法:插入前面(newChild As IHTMLDOMNode, [refChild]) As IHTMLDOMNode
▲lastChild
▲lastModified 上一修改
▲linkColor 链接色
▲alinkColor A 链接色:
▲vlinkColor V 链接色:
▲links 连接集合:IHTMLElementCollection
▲location 位置:HTMLLocation
▲media 媒体
▲mimeType
▲nameProp
▲namespaces 名称空间:object
▲nextSibling 下一相同对象
▲nodeName
▲nodeType
▲nodeValue
▲open 方法:打开([url As String = “text/html“], [name], [features], [replace]) As object
▲ownerDocument 所有者文档:object
▲parentNode 父节点:IHTMLDOMNode
▲parentWindow 父窗口:IHTMLWindow2
▲plugins 插件集合?:IHTMLElementCollection
▲previousSibling 前一兄弟:IHTMLDOMNode
▲protocol 协议
▲queryCommandEnabled 方法:查询命令能否执行(cmdID As String) As Boolean
▲queryCommandIndeterm 方法:查询命令? (cmdID As String) As Boolean
▲queryCommandState 方法:查询命令状态(cmdID As String) As Boolean
▲queryCommandSupported 方法:查询命令支持(cmdID As String) As String
▲queryCommandText 方法:查询命令文本(cmdID As String) As Boolean
▲queryCommandValue 方法:查询命令值 (cmdID As String)
▲readyState
▲recalc 方法:([fForce As Boolean = False])
▲referrer
▲releaseCapture 方法:
▲removeChild 方法:
▲removeNode 方法:
▲replaceChild 方法:
▲replaceNode 方法:替换节点(replacement As IHTMLDOMNode) As IHTMLDOMNode
▲scripts script集合:IHTMLElementCollection
▲security 安全:String
▲selection 已选择的对象集合:IHTMLSelectionObject
▲styleSheets 方式表单:HTMLStyleSheetsCollection
▲swapNode 方法:交换节点(otherNode As IHTMLDOMNode) As IHTMLDOMNode
▲title
▲toString 方法:
▲url
▲URLUnencoded
▲write 方法:(ParamArray psarray() As Variant)
▲writeln 方法:(ParamArray psarray() As Variant)
▲onstop 既是属性,又是事件
▲共有属性和事件
■■共有属性和事件:既是属性,又是事件。面带 on 的=======================
▲onactivate onActivate 激活
▲onafterupdate onAfterUpdate 更新后
▲onbeforeactivate onBeforeActivate 激活前
▲onbeforecopy onBeforeCopy 复制前
▲onbeforecut onBeforeCut 剪切前
▲onbeforedeactivate onBeforeDeactivate 无效前
▲onbeforeeditfocus onBeforeEditFocus 获得编辑焦点前
▲onbeforepaste onBeforePaste 粘贴前
▲onbeforeupdate onBeforeUpdate 更新前
▲onblur onBlur 模糊
▲oncellchange onCellChange 单元改变
▲onclick onClick 单击
▲oncontextmenu onContextMenu 上下文菜单
▲oncontrolselect onControlSelect 控件选定
▲oncopy onCopy 复制
▲oncut onCut 剪切
▲ondataavailable onDataAvailable 有用数据
▲ondatasetchanged onDataSetChanged 数据设置改变
▲ondatasetcomplete onDataSetComplete 数据设置完成
▲ondblclick onDblClick 双击
▲ondeactivate onDeactivate 变为非活动
▲ondrag onDrag 拖
▲ondragend onDragEnd 拖结束
▲ondragenter onDragEnter 拖进
▲ondragleave onDragLeave 拖离
▲ondragover onDragOver 拖过
▲ondragstart onDragStart 拖开始
▲ondrop onDrop
▲onerrorupdate onErrorUpdate 更新错误
▲onfilterchange onFilterChange 过滤器改变
▲onfocus onFocus
▲onfocusin onFocusIn 焦点进入
▲onfocusout onFocusOut 焦点离开
▲onhelp onHelp
▲onkeydown onKeyDown
▲onkeypress onKeyPress
▲onkeyup onKeyUp
▲onlayoutcomplete onLayoutComplete 版面完成
▲onlosecapture onLoseCapture 失去捕获
▲onmousedown onMouseDown
▲onmouseenter onMouseEnter
▲onmouseleave onMouseLeave
▲onmousemove onMouseMove
▲onmouseout onMouseOut
▲onmouseover onMouseOver
▲onmouseup onMouseUp
▲onmousewheel onMouseWheel 鼠标滚轮
▲onmove onMove
▲onmoveend onMoveEnd
▲onmovestart onMoveStart
▲onpage onPage
▲onpaste onPaste 粘贴
▲onpropertychange onPropertyChange 性质改变
▲onreadystatechange onSeadyStateChange 准备状态改变
▲onresize onResize
▲onresizeend onResizeEnd
▲onresizestart onResizeStart
▲onrowenter onRowEnter 行进入
▲onrowexit onRowExit
▲onrowsdelete onRowsDelete
▲onrowsinserted onRowsInserted
▲onscroll onScroll
▲onselectstart onSelectStart
-------
■■HTMLDivElement 对象:div 元素特有的属性=======================
▲align 排列:String
▲dataFld 数据流体:String
▲dataFormatAs 数据格式:String
▲dataSrc 数据Src:String
▲noWrap
■■HTMLAreaElement 对象:区域元素 大多数元素共有的属性=======================
一个 HTMLAreaElement 可以包含多个 HTMLAreaElement 对象,用 all() 集合访问
▲sourceIndex 对象在 Document.All() 集合中的编号
▲accessKey String:访问键
▲addBehavior 方法:添加行为(bstrUrl As String, [pvarFactory]) As Long
▲addFilter 方法:添加过滤器(pUnk As Unknown)
▲all 【参 HTMLAreaElement】
▲alt
▲appendChild 【参 HTMLAreaElement】
▲applyElement 方法:申请元素(apply As IHTMLElement, where As String) As IHTMLElement
▲attachEvent 方法:隶属事件(event As String, pdisp As object) As Boolean
▲attributes 【参 HTMLAreaElement】
▲behaviorUrns 行为缸对象:object
▲blur 方法:模糊
▲canHaveChildren 是否能拥有子对象
▲canHaveHTML 是否能拥有HTML
▲childNodes 子节点:object
▲children 是否子对象
▲className 类名
▲clearAttributes 方法:清除属性
▲click 方法:单击
▲clientHeight 内部高度?
▲clientLeft
▲clientTop
▲clientWidth
▲cloneNode 方法:克隆节点(fDeep As Boolean) As IHTMLDOMNode
▲componentFromPoint 方法:点所属组(x As Long, y As Long) As String
▲contains 方法:包含contains(pChild As IHTMLElement) As Boolean
▲contentEditable
▲coords
▲createControlRange 方法:创建控制山脉(行列)() As object
▲currentStyle 当前样式:IHTMLCurrentStyle
▲detachEvent 方法:分离事件(event As String, pdisp As object)
▲dir
▲disabled 不可用
▲document 文档对象:object
▲doScroll 方法([component])
▲dragDrop 方法:拖放
▲filters 过滤器: IHTMLFiltersCollection
▲FireEvent 方法FireEvent(bstrEventName As String, [pvarEventObject]) As Boolean
▲firstChild 首子对象:IHTMLDOMNode
▲focus 方法
▲getAdjacentText 方法:获取临近文本(where As String) As String
▲getAttribute 方法:获取属性(strAttributeName As String, [lFlags As Long])
▲getAttributeNode 方法:获取属性节点(bstrName As String) As IHTMLDOMAttribute
▲getBoundingClientRect 方法:获取内部范围矩形() As IHTMLRect
▲getClientRects 方法:获取委托矩形() As IHTMLRectCollection
▲getElementsByTagName 【参 HTMLAreaElement】
▲getExpression 方法:获取表达(propname As String)
▲hasChildNodes 【参 HTMLAreaElement】
▲hash 无用信息
▲hideFocus
▲host 主人
▲hostname 主人名称
▲href 默认属性
▲id 标示字符串
▲innerHTML 元素内的 html 代码
▲innerText 内部的纯文本,可以显示到网页上的文字
▲insertAdjacentElement 方法:插入临近元素(where As String, insertedElement As IHTMLElement) As IHTMLElement
▲insertAdjacentHTML 方法:(where As String, html As String)
▲insertAdjacentText 方法:(where As String, text As String)
▲insertBefore 方法:(newChild As IHTMLDOMNode, [refChild]) As IHTMLDOMNode
▲isContentEditable
▲isDisabled
▲isMultiLine
▲isTextEdit
▲lang
▲language
▲lastChild
▲mergeAttributes 方法:合并属性(mergeThis As IHTMLElement, [pvarFlags])
▲nextSibling 下一同级对象
▲nodeName
▲nodeType
▲nodeValue
▲noHref
▲normalize 方法:规格化
▲offsetHeight 偏移(缩进)高度
▲offsetLeft
▲offsetParent
▲offsetTop
▲offsetWidth

▲outerHTML 包含元素本身及内部的 html 代码
▲outerText
▲ownerDocument
▲parentElement
▲parentNode
▲parentTextEdit
▲pathname
▲port
▲previousSibling
▲protocol
▲readyState
▲recordNumber
▲releaseCapture 方法:释放捕获
▲removeAttribute 方法:移除属性
▲removeAttributeNode 方法
▲removeBehavior 方法:移除行为
▲removeChild 方法
▲removeExpression 方法
▲removeFilter 方法
▲removeNode 方法
▲replaceAdjacentText 方法:替换临近文本
▲replaceChild 方法
▲replaceNode 方法
▲runtimeStyle 运行方式:IHTMLStyle
▲scopeName 范围名称
▲scrollHeight
▲scrollIntoView 方法
▲scrollLeft
▲scrollTop
▲scrollWidth
▲search
▲setActive 方法
▲setAttribute 方法
▲setAttributeNode 方法
▲setCapture 方法
▲setExpression 方法
▲shape
▲style
▲swapNode 方法:交换节点
▲tabIndex
▲tagName 标签名
▲tagUrn 标签缸
▲target 目标
▲title
▲toString
■■Web1 应用例子
▲在网页加裁完毕后,运行其中某层的链接,当然事先必须知道该层链接的TagName:
WebBrowser1.Document.getElementsByname(“TagName“).click。

关于C#调用 API.ReleaseCapture(); API.SendMessage(this.Handle, 161, 2, 0); 的问题


if (e.Button == MouseButtons.Left && e.Clicks == 1)
{
ReleaseCapture();
SendMessage(this.Handle, 161, 2, 0);
SendMessage(this.Handle, 0x0202, 0, 0);
}
else
{
//添加双击或右击代码……
}
base.OnMouseDown(e);

VB6.0 透明的窗体怎么弄


设置:窗体的Borderstyle=0 ’此时窗体无边框
然后:
Private Declare Function GetWindowLong Lib “user32“ Alias “GetWindowLongA“ (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib “user32“ Alias “SetWindowLongA“ (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib “user32“ (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function SetWindowPos& Lib “user32“ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Declare Function ReleaseCapture Lib “user32“ () As Long
Private Declare Function SendMessage Lib “user32“ Alias “SendMessageA“ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_SYSCOMMAND = &H112
Private Const SC_MOVE = &HF010&
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2

Private Sub Form_Load()
Call SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, 3)
Me.BackColor = vbred ’透明色为红色
SetWindowLong Me.hwnd, -20, GetWindowLong(Me.hwnd, -20) Or &H80000
SetLayeredWindowAttributes Me.hwnd, vbred, 0, 1
end sub

这样的话所有的红色元素都会消失
此时你会无法移动窗体
所以
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0
End Sub
这样你按住command1就可以拖动窗体了
-releasecapture