开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 16363|回复: 79
收起左侧

[易源码分享] 【原创】【注释清晰】用超文本做一个程序网页交互(对象方法)!!简单实用!!!

[复制链接]

结帖率:100% (4/4)
发表于 2018-1-18 16:09:12 | 显示全部楼层 |阅读模式   四川省宜宾市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 1185384801 于 2018-1-19 10:44 编辑

网页交互这个东东相信大家应该知道,可是,现在大部分都是通过WKE,CEF或者是Chrome来实现的,这些并不是属于IE内核的范畴了(是的没错是谷歌),由于这个东东并不是系统自带的,大小嘛就小不到哪儿去了(WKE都要3MB,谷歌的直接就是几十MB了),而且目录不能代中文(坑啊),所以我用了一个很简单的方法实现了用IE浏览框可以实现交互了!!!!(是不是很实用?节约空间又节约脑袋,还可以用网页写界面,不用易语言那个自绘了)
实现方法:
首先创建一个新窗口,画上超文本
  
常量名称常量值公 开备 注
网页数据<文本长度: 1527> 


写写网页部分(复制不了的话下载附件吧)
启动窗口创建完毕
  
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
写到文件 (取运行目录 ()“\bootstrap.min.css”, #CSS )  ' 写出核心的CSS,这是网页自绘的关键
写到文件 (取运行目录 ()“\LOGEN.html”, 到字节集 ( #网页数据 ))  ' 写出网页
超文本浏览框1.跳转 (取运行目录 ()“\LOGEN.html”, , )  ' 加载网页



i支持库列表   支持库注释   
HtmlView超文本浏览框支持库

CSS太大了就不发布了


  <button class="btn btn-primary btn-block" type="submit">登 录</button>
        </div>
        
  <div class="form-group">

  </div>
</form>

<script>
        function login_submit() {
                var username = document.getElementById("user_name").value;
                var password = document.getElementById("user_pwd").value;
                var save = document.getElementById("user_save").checked;
                var auto = document.getElementById("user_auto").checked;
        window.open("OK");
        }
</script>
</body>
</hrml>

window.open("OK");
这个命令是打开一个新窗口的意思
然后你就在子程序“_超文本浏览框1_即将打开新窗口”这里“接盘吧”
  
子程序名返回值类型公开备 注
_超文本浏览框1_即将打开新窗口逻辑型 
如果真 (超文本浏览框1.状态条文本 = “javascript:login_submit();”)  ' javascript:login_submit();是什么意思呢,这是那个按钮的状态条文本的文本哦
超文本的文档对象 = 取网页对象 (取网页句柄 (超文本浏览框1.取窗口句柄 ()))
输出调试文本 (超文本的文档对象.对象型方法 (“getElementById”, “user_name”).读文本属性 (“value”, ))  ' 读取用户名,getElementById() 方法可返回对拥有指定 ID 的第一个对象的引用。
' 说明
' HTML DOM 定义了多种查找元素的方法,除了 getElementById() 之外,还有 getElementsByName() 和 getElementsByTagName()
' 不过,如果您需要查找文档中的一个特定的元素,最有效的方法是 getElementById()
' 在操作文档的一个特定的元素时,最好给该元素一个 id 属性,为它指定一个(在文档中)唯一的名称,然后就可以用该 ID 查找想要的元素。
' GET到ID(易语言GET到对象)后就可以进行取值了!value就是取值的意思。
输出调试文本 (超文本的文档对象.对象型方法 (“getElementById”, “user_pwd”).读文本属性 (“value”, ))
' 同理getElementById,用处一样,读取密码
输出调试文本 (超文本的文档对象.对象型方法 (“getElementById”, “user_save”).读逻辑属性 (“checked”, ))
' checked 属性规定在页面加载时应该被预先选定的 input 元素。
' checked 属性 与   配合使用。
' checked 属性也可以在页面加载后,通过 JavaScript 代码进行设置。
输出调试文本 (超文本的文档对象.对象型方法 (“getElementById”, “user_auto”).读逻辑属性 (“checked”, ))
信息框 (“用户名:” + 超文本的文档对象.对象型方法 (“getElementById”, “user_name”).读文本属性 (“value”, )#换行符“密码:” + 超文本的文档对象.对象型方法 (“getElementById”, “user_pwd”).读文本属性 (“value”, )#换行符“是否记住密码:”到文本 (超文本的文档对象.对象型方法 (“getElementById”, “user_save”).读逻辑属性 (“checked”, )) + #换行符“自动登录:”到文本 (超文本的文档对象.对象型方法 (“getElementById”, “user_auto”).读逻辑属性 (“checked”, )), 0, , )
' 读取命令
返回 ()  ' 为什么返回假?因为我是使用网页跳转的方式来触发读取命令的,返回(假)的目的是为了防止新窗口的打开



i支持库列表   支持库注释   
HtmlView超文本浏览框支持库

代码已写出,是不是注释特别全面呢
取得对象的方法:
  
子程序名返回值类型公开备 注
取网页对象对象 主要就是通过向浏览器发送一个消息,得到资源编号,然后以此为参数通过ObjectFromLresult函数返回一个文档对象,这个文档对象就是IHTMLDocument2 这个接口的指针,然后通过这个接口指针来获取IDispatch接口指针,来访问对象中的属性和方法。
参数名类 型参考可空数组备 注
网页句柄整数型
变量名类 型静态数组备 注
资源编号整数型 
消息值整数型 
对象对象 
类名文本型 
类名 = 取空白文本 (256)
' 下为取空白文本 (256)的注释
' 取出指定数量的空格
' 有的时候是自己用来排版用的
' 有的是部分API,某些参数需要指定至少多少字节的存储,如果直接文本型不行,那么就声明个文本型变量,并且给字节一样数量的空格,再给API
GetClassName (网页句柄, 类名, 256)  ' 获取指定窗口的类名
如果真 (类名 ≠ “Internet Explorer_Server”)  ' 一般浏览器的类名都是Internet Explorer_Server
返回 (对象)
消息值 = RegisterWindowMessage (“WM_HTML_GETOBJECT”)  ' RegisterWindowMessage 获取分配给一个字串标识符的消息编号
SendMessageTimeout (网页句柄, 消息值, 0, 0, 2, 1000, 资源编号)
ObjectFromLresult (资源编号, { 32, 197, 111, 98, 30, 164, 207, 17, 167, 49, 0, 160, 201, 8, 38, 55 }, 0, 对象)
返回 (对象)
' 2.IE浏览器的体系结构
' IE浏览器的体系结构如图1所示。其中MSHTML是位于SHDOCVW和HTML页面之间的COM对象,SHDOCVW对象用于处理页面的显示,而MSHTML用于处理页面的语法分析,并且将页面中的标记转换为元素。MSHTML是一个COM服务器,允许COM客户Duan程序访问它对外提供的服务。
' 实现IE浏览器嵌入式编程的基本方法是建立COM对象,从而以COM客户Duan程序的形式和MSHTML COM服务器建立连接,然后通过接口回调实现需要的控制功能。也即首先建立COM对象,实现系统规定的若干接口,然后注册COM对象,并且将COM对象的有关信息写入到IE浏览器扩展功能指定的注册表位置。
' 3.易语言操作com原理
' 那问题就归结为操作MSHTML这个组件了,操作组件要通过组件提供的接口来实现。易语言的”对象“数据类型提供这样的操作,接着学习一下,这个数据类型的基本方法都是怎么回事儿。
' 1、对象.创建如对象.创建("APPLICATION.WORD"),应该就是通过以下函数实现。通过提供”APPLICATION.WORD“字符串,易语言函数自动到注册表中搜索组件的类ID,实例化一个组件对象并返回一个指定接口的指针。
' STDAPI CoCreateInstance(
' REFCLSID rclsid,              //创建的Com对象的类标识符(CLSID)
' LPUNKNOWN pUnkOuter, //指向接口IUnknown的指针
' DWORD dwClsContext,     //运行可执行代码的上下文
' REFIID riid,                        //创建的Com对象的接口标识符
' LPVOID * ppv                    //用来接收指向Com对象接口地址的指针变量
' );
' 2、对象.读属性和对象.方法等:是实现IDispatch接口间接调用组件的方法和属性。
' 3、对象.取接口:就是取com对象的其他接口
' 4.易语言操作MSHTML对象原理。
' 通过开源的精易模块-网页填表源码,找到以下核心代码
子程序名返回值类型公开备 注
取网页句柄整数型 
参数名类 型参考可空数组备 注
浏览框句柄整数型
变量名类 型静态数组备 注
hwnd整数型 
类名文本型 
次数整数型防止死循环
hwnd = 浏览框句柄
判断循环首 (类名 ≠ “Internet Explorer_Server”)
hwnd = GetWindow (hwnd, #GW_CHILD )
类名 = 取空白文本 (256)
GetClassName (hwnd, 类名, 256)
次数 = 次数 + 1
如果真 (次数 > 10)
返回 (-1)

判断循环尾 ()
返回 (hwnd)
常量名称常量值公 开备 注
GW_CHILD5 

DLL命令名返回值类型公开备 注
ObjectFromLresult整数型 
DLL库文件名:
OLEACC.DLL
在DLL库中对应命令名:
ObjectFromLresult
参数名类 型传址数组备 注
lResult整数型
riid字节集
wParam整数型
ppvObject对象
DLL命令名返回值类型公开备 注
RegisterWindowMessage整数型 ,获取分配给一个字串标识符的消息编号 & C000 到 & FFFF之间的一个消息编号。零意味着出错
DLL库文件名:
 
在DLL库中对应命令名:
RegisterWindowMessageA
参数名类 型传址数组备 注
lpString文本型注册消息的名字;
DLL命令名返回值类型公开备 注
SendMessageTimeout整数型 
DLL库文件名:
 
在DLL库中对应命令名:
SendMessageTimeoutA
参数名类 型传址数组备 注
MSG整数型
hwnd整数型
wParam整数型
lParam整数型
fuFlags整数型
uTimeout整数型
lpdwResult整数型
DLL命令名返回值类型公开备 注
GetWindow整数型 ,获得一个窗口的句柄,该窗口与某源窗口有特定的关系
DLL库文件名:
 
在DLL库中对应命令名:
GetWindow
参数名类 型传址数组备 注
源窗口整数型
关系整数型
DLL命令名返回值类型公开备 注
GetClassName整数型 
DLL库文件名:
user32.dll
在DLL库中对应命令名:
GetClassNameA
参数名类 型传址数组备 注
句柄整数型
类名文本型
文本长度整数型


再仔细讲讲:
.版本 2


    ' HTML DOM 定义了多种查找元素的方法,除了 getElementById() 之外,还有 getElementsByName() 和 getElementsByTagName()。
    ' 不过,如果您需要查找文档中的一个特定的元素,最有效的方法是 getElementById()。
    ' 在操作文档的一个特定的元素时,最好给该元素一个 id 属性,为它指定一个(在文档中)唯一的名称,然后就可以用该 ID 查找想要的元素。
    ' GET到ID(易语言GET到对象)后就可以进行取值了!value就是取值的意思。
所以你明白”超文本的文档对象.对象型方法 (“getElementById”, “user_name”).读文本属性 (“value”, )“
这个命令的作用了吧,其实就是一个取表的代码(就是填表)
原理很简单,但确实实用,注释也清楚明了,适合新手学习!!!
动动手指,回复下载,求好评
对象型方法网页交互.zip (25.05 KB, 下载次数: 256)

评分

参与人数 7好评 +5 精币 +23 收起 理由
kyo9766 + 2 支持开源~!感谢分享
longsui48 + 1 讲的很详细 很适合新手的东西
单身汪 + 1 + 2 还不错,就是得会一些简单的html和dom操作
烟斗 + 1 + 2 感谢发布原创作品,精易因你更精彩!
大飛 + 1 + 4 精易因你更精彩!
凌哥 + 1 + 2 挺好的技巧,只是css渲染方面IE貌似有点差
胆小的老虎 + 1 + 10 感谢发布原创作品,精易因你更精彩!

查看全部评分


本帖被以下淘专辑推荐:

发表于 2023-11-1 22:37:49 | 显示全部楼层   湖南省株洲市
谢谢,虽然看不懂
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2023-10-7 21:39:43 | 显示全部楼层   河北省唐山市
66666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:25% (1/4)

签到天数: 25 天

发表于 2023-9-25 12:25:53 | 显示全部楼层   广东省广州市
谢谢楼主,学会了怎么通过易语言改变网页编辑框和模拟点击按钮,目前还不会实现模拟点击下拉选择框,请问有什么办法实现呢
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
发表于 2023-4-21 08:43:11 | 显示全部楼层   安徽省合肥市
666666666666666666
回复 支持 反对

使用道具 举报

结帖率:70% (28/40)
发表于 2021-7-1 18:01:01 | 显示全部楼层   湖北省黄冈市
还是这种代码好
回复 支持 反对

使用道具 举报

结帖率:66% (21/32)

签到天数: 2 天

发表于 2019-4-20 20:59:06 | 显示全部楼层   江西省赣州市
好样的,网页右键菜单有没有办法换成易语言设置的
回复 支持 反对

使用道具 举报

发表于 2019-2-18 13:01:44 | 显示全部楼层   内蒙古自治区呼和浩特市
感谢楼主辛苦分享
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2019-1-13 11:15:48 | 显示全部楼层   安徽省合肥市
写的非常好,谢谢分享!
回复 支持 反对

使用道具 举报

结帖率:91% (39/43)
发表于 2019-1-12 02:27:49 | 显示全部楼层   河南省新乡市
kan  bu dong   hai de zhua  jin  en  bu
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:100% (7/7)
发表于 2019-1-11 09:16:46 | 显示全部楼层   广东省东莞市
終究還是走上了一條開源的不歸路!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表