本帖最后由 不死猫 于 2013-7-30 23:05 编辑
首先确保你的电脑能访问明经通道论坛.
通过本地Lisp代码访问远程页面实现数学运算表达式的隐藏封装(重点是思路)
服务器会自动生成代码封装页面.
本地Lisp生成的Lisp函数包含远程访问代码.
每个远程页面访问代码几乎相同,但能够返回你自己定义的数学运算表达式的结果!
测试方法:
加载WebCal.lsp之后 执行tt命令
其中
测试页码提供999个,大家尽量选用不容易用到的页码为好.
计算表达式中使用x作为变量
最终要封装的函数类似于
(defun mycal (x)
(/ (+ x 5) 2)
)
那么表达式就写 (x + 5) / 2 就行了
大家在测试的时候可能会发生同时访问相同页面的情况,因此加入了验证码(验证码为5位任意数字),如果同时访问,则会提示错误.此时换个其他的页码测试即可.
生成的函数加载后 用 (MyCal 一个数字)进行测试
测试结果与表达式返回结果相同,实现隐藏数学表达式的目的.
此为测试版,尽量用简单的数学表达式吧.
网络Asp源码
lisp程序源码
自动生成的代码- (defun MyCal(x)
- (setq Page 33)
- (setq x (rtos x 2 6))
- (while (/= x (setq x (vl-string-subst "!" "." x))))
- (setq ie (Vlax-Create-Object "InternetExplorer.Application" ))
- (Vlax-Invoke ie 'Navigate (strcat "http://nonsmall.mjtd.com/test/" (itoa Page) ".asp?x=" x))
- (while (= -1 (Vlax-Get ie 'busy));等待网页打开
- (repeat 1000 (1+ 1))
- )
- (setq all (vlax-get (vlax-get ie 'Document) 'all))
- (setq outtext (vlax-get (vla-item all 0) "outerText"))
- (if (/= (substr outtext 1 (strlen "666")) "666")
- (progn
- (print "校验码不同!有人与你使用相同测试页面,请输入其他不同页码再测试")
- (Vlax-Invoke-Method ie 'Quit);关闭IE
- (vlax-release-object ie)
- (exit)
- )
- )
- (setq text (substr outtext (1+ (strlen "666")) (- (strlen outtext) (strlen "666"))))
- (Vlax-Invoke-Method ie 'Quit);关闭IE
- (vlax-release-object ie)
- (read text)
- )
不死猫20130730晨
|