| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2855 人关注过本帖
标题:如何控制用SHELL.EXPLORER.2控件在表单上显示的页面上的链接被点击后弹出新 ...
只看楼主 加入收藏
qiuxingce
Rank: 2
等 级:论坛游民
帖 子:118
专家分:93
注 册:2014-1-17
结帖率:73.33%
收藏
已结贴  问题点数:20 回复次数:11 
如何控制用SHELL.EXPLORER.2控件在表单上显示的页面上的链接被点击后弹出新的IE窗口的一些属性?比如窗口最大化还是最小化等
现在点击表单上网页上的链接新弹出的新的IE窗口,不知道如何对新IE窗口进行一些控制,比如现在新窗口默认不是最大化,还得客户点击最大化按钮,这个不方便。
搜索更多相关主题的帖子: 窗口 IE 链接 最大化 点击 
2020-05-26 11:53
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:20 
都用ⅤFP表单浏览
2020-05-26 12:37
qiuxingce
Rank: 2
等 级:论坛游民
帖 子:118
专家分:93
注 册:2014-1-17
收藏
得分:0 
那如何实现点击表单上网页上的链接时打开一个新的表单用于显示链接所对应的网页呢?
是在PROCEDURE WB.NewWindow3中鼓捣吗?
我试了试,会在新的表单中打开一个网页,但是,不是显示书本的内容网页,是一个其它网页,不知道哪里问题。
全部代码如下:
PUBLIC of
of = CREATEOBJECT("webForm","https://tjebook.)
of.visible=.t.
READ events
RETURN
DEFINE CLASS webForm AS Form
    alwaysontop=.f.
    ShowWindow = 2
    WindowState = 2
    WindowType=1
    autocenter=.t.
    borderstyle=0
    maxbutton=.f.
    minbutton=.f.
    width=8000
    height=6000
    LwebLoaded=.f.
    caption='互动式同步课本'
    ADD OBJECT WB AS Olecontrol WITH Width=this.width,Height=this.height,Anchor=15,OleClass="Shell.Explorer.2",Visible=.T.
    ADD OBJECT tmrlogin as timer with interval=100,enabled=.t.
    PROCEDURE tmrlogin.timer
        IF this.Parent.lWebLoaded
             this.Enabled=.f.
             this.Parent.wb.width=this.Parent.width
             this.Parent.wb.height=this.Parent.height
             this.Parent.mLogin
    endif
    ENDPROC

    PROCEDURE Init
        PARAMETERS cUrl,lOnTop
        this.WB.Silent = .T.
        this.WB.Navigate(cUrl)
    ENDPROC

    PROCEDURE unload
        CLEAR EVENTS
    ENDPROC

    PROCEDURE mLogin
         mykeybd(0x09)        
        mykeybd(0x09)        
        mykeybd(0x09)        
        mykeybd(0x09)
        _cliptext=''
        IF FILE('点读账号.txt')
            _cliptext=FILETOSTR('点读账号.txt')
            IF ';'$_cliptext
                _cliptext=LEFT(_cliptext,AT(';',_cliptext)-1)
            ENDIF
        ENDIF
        IF EMPTY(_cliptext)
            _cliptext='Feimengjie847@'
        ENDIF
        DO ctrlV
        mykeybd(0x09)
        mykeybd(0x09)
        DO ctrlV
        mykeybd(13)
    ENDPROC
   
    PROCEDURE tmrlogin.init
        this.interval=this.Parent.idelay()
    ENDPROC
    PROCEDURE WB.documentComplete(pdisp, url)
        IF (SYS(3095, pdisp) == SYS(3095, this))
            this.parent.lWebLoaded=.t.
        ENDIF
    ENDPROC

    PROCEDURE wb.NewWindow3(ppdisp, cancel, dwflags, bstrurlcontext, bstrurl)
        CANCEL =.f.
        PUBLIC oNewWeb
        oNewWeb = CREATEOBJECT("webForm",bstrurl)
        ppdisp=oNewWeb
        oNewWeb.visible=.t.
    ENDPROC
   
*!*        PROCEDURE WB.NewWindow3(ppdisp, cancel, dwflags, bstrurlcontext, bstrurl)   &&吹版奉献代码,防止点击WEB页面上链接时打开IE窗口,使内容依旧显示在表单的WEB界面上。
*!*            cancel = .T.   && 禁止新窗口
*!*            ppdisp = this  && 在当前窗口打开
*!*            **IF (dwFlags == 6)
*!*              this.Navigate(bstrurl)
*!*              this.SetFocus
*!*            **ENDIF
*!*        ENDPROC   
    PROCEDURE iDelay
        LOCAL cLogMsg
        IF FILE('点读账号.txt')
            cLogMsg=FILETOSTR('点读账号.txt')
            IF ';'$cLogMsg
                RETURN VAL(SUBSTR(cLogMsg,AT(';',cLogMsg)+1))*1000
            ELSE
                RETURN 1000
            ENDIF
        ELSE
            RETURN 1000
        ENDIF
    ENDPROC
ENDDEFINE

FUNCTION mykeybd(Virtual_Key as Integer)
    PRIVATE Virtual_Key &&键盘虚拟值,请参阅列表。
    DECLARE keybd_event IN user32; &&键盘模拟API
    SHORT bVk,; &&表示虚拟键值,其取值范围为1-254。
    SHORT bScan,; &&该值为0
    INTEGER dwFlags,; &&0按下,2弹起
    INTEGER dwExtraInfo &&关于操作的附加说明,一般为0
    DECLARE INTEGER MapVirtualKey IN user32;
    INTEGER VK,;
    INTEGER VI
    DECLARE Sleep IN kernel32 INTEGER dwMilliseconds
    = keybd_event(Virtual_Key, MapVirtualKey(Virtual_Key,0), 0, 0)
    sleep(100)&&按键延时
    = keybd_event(Virtual_Key, MapVirtualKey(Virtual_Key,0), 2, 0)
ENDFUNC
PROCEDURE ctrlV
    Declare keybd_event In Win32API Short bVk,Short bScan,Integer dwFlags, Integer deExtraInfo
    keybd_event(17, 0, 0, 0)
    keybd_event(Asc('V'), 0, 0, 0)
    keybd_event(Asc('V'), 0, 2, 0)
    keybd_event(17, 0, 2, 0)
ENDPROC
2020-05-26 14:50
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:0 
不是所有的网页地址都会触发NewWindow3.NewWindow3
只是要在新建窗口打开的网页地址才会触发的
2020-05-27 07:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:0 
这类问题大都是有针对性,很有个性,没有通式,编程也很被动。
或者详细说说从https://tjebook.开始的各步骤,每一步想要的结果。
2020-05-27 07:48
qiuxingce
Rank: 2
等 级:论坛游民
帖 子:118
专家分:93
注 册:2014-1-17
收藏
得分:0 
老师,要实现的效果就是在我们的系统中可以使用这个网站的课本进行点读学习:
1、自动登录(已经实现),出现了课本大类界面(初中,小学,高中分类);
2、在这个界面上点击某个分类,比如初中,界面将会显示初中各个年级的课本(这个也没有问题,还是在原表单中显示的);
3、在界面上点击某本课本,就会打开新的IE窗口(关键是窗口没有最大化,就是需要点击一下最大化,可用,不太完美),而如果是手动登录网站操作到这一步,不会出现这个情况。
您有时间的时候可以使用账号Feimengjie847@测验一下(密码和账号相同,区分大小写)。手工登录网站的网址是:https://tjebook.

2020-05-27 09:21
qiuxingce
Rank: 2
等 级:论坛游民
帖 子:118
专家分:93
注 册:2014-1-17
收藏
得分:0 
我最想要的结果是点击课本时,在咱们自己的表单中显示课本点读页面。
退而求其次,在新的IE窗口中显示课本点读页面,但窗口要自动最大化,不需要再点击最大化按钮。
再退而求其次,就这样用吧
2020-05-27 09:27
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:0 
还是以前的代码,一直进入到打开课本都是在VFP表单的。
图片附件: 游客没有浏览图片的权限,请 登录注册

of = CREATEOBJECT("webForm")
of.show
READ EVENTS
CLEAR ALL
RETURN

DEFINE CLASS webForm AS Form
    ShowWindow = 2
    WindowState = 2
    bLogin = .T.
    ADD OBJECT WB AS Olecontrol WITH Width=this.width,Height=this.height,Anchor=15,OleClass="Shell.Explorer.2",Visible=.T.
    PROCEDURE Destroy
        CLEAR EVENTS
    ENDPROC
    PROCEDURE Init
        this.WB.Silent = .T.
        this.WB.Navigate("https://tjebook.)
    ENDPROC
    PROCEDURE WB.NewWindow3(ppdisp, cancel, dwflags, bstrurlcontext, bstrurl)
        cancel = .T.
        ppdisp = this
        IF (dwFlags == 6)
          this.Navigate(bstrurl)
          this.SetFocus
        ENDIF
    ENDPROC   
ENDDEFINE
2020-05-27 12:10
qiuxingce
Rank: 2
等 级:论坛游民
帖 子:118
专家分:93
注 册:2014-1-17
收藏
得分:0 
因为我使用的是VFP8,老师使用的是VFP9,所以运行结果出现了差别。不过刚才我用VFP9运行了一下,的确没有弹出新的IE窗口,运行一直在表单中,但是在点击某本已购课本的时候,会切换至大概是网站老版本的课本列表页面,课本名称上显示的都是未购,然后点击登录,再次输入用户名和密码以后才打开显示已购的课本列表页面,接着就可以使用了。这样就多了一个重新输入用户名和密码的环节。
在关闭表单后,重新运行,结果这个需要重新输入用户名和密码的环节又被跳过了,直接可以使用了,估计重新启动电脑后可能又会回到上面所说的需要多输入一次用户名和密码的情况吧,一会试试看。
2020-05-27 15:44
qiuxingce
Rank: 2
等 级:论坛游民
帖 子:118
专家分:93
注 册:2014-1-17
收藏
得分:0 
马上试了一下,重新启动电脑后,在运行软件,出现课本列表页面后(新版网页)点击某本课本名称,本来应该显示课本内容了,结果还是切换到了老版网页的课本列表页面,但是页面上课本名称都显示为已购(看来是记住密码了),然后就可以点开课本名称进行学习了。
2020-05-27 15:48
快速回复:如何控制用SHELL.EXPLORER.2控件在表单上显示的页面上的链接被点击后弹 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017174 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved