VBS如何获得窗口句柄

bluesmile979 2007-01-29 10:36:42
最近任务要求写一段VBS程序经过一定的处理之后打开一个IE窗口。

当第二次执行这段VBS程序的时候,如果先前(第一次执行)的窗口没有被关闭需要在先前的窗口中打开。

这里就需要得到打开IE窗口的句柄,不知道该如何获得,高人指点一下啊。
...全文
2564 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluesmile979 2007-02-08
  • 打赏
  • 举报
回复
我也觉得上面那么些应该好用,可惜不好用,可能别的什么地方出问题了。哎
孟子E章 2007-02-07
  • 打赏
  • 举报
回复
目前只能做到这样的情况

<input type=button onclick="vbs:openWin" value=open>
<script language="vbscript">
dim win
dim a
Set win = Nothing
sub openWin()

If win Is Nothing Then
set win=window.open("about:blank")
win.document.body.innerHTML="First New"
else
If win.closed Then
set win=window.open("about:blank")
win.document.body.innerHTML="New"
Else
win.focus
win.document.body.innerHTML="Exists"
End If
end if

end sub


</script>
dh20156 2007-02-07
  • 打赏
  • 举报
回复
OPEN的时候指定窗口名称就可以了:
<script language="vbscript">
window.open "http://community.csdn.net/Expert/topic/5324/5324568.xml?temp=.9649622","csdn"
</script>
cloudgamer 2007-02-07
  • 打赏
  • 举报
回复
帮顶
孟子E章 2007-02-07
  • 打赏
  • 举报
回复
.Write " option='toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+window.screen.width +',height='+window.screen.height" & vbcrlf
bluesmile979 2007-02-07
  • 打赏
  • 举报
回复
谢谢楼上的朋友,给了我启发,下面的代码基本可用,但是全屏的一段代码没会直接写,能不能教教我应该怎么写,现在用replace做的,哈直接用'width='+window.screen.width不好用,这块儿参数怎么做成比较好啊


Private Sub main()

Dim objNetwork


Dim portal_url


Dim user


Dim idForPassword


Dim password


Dim IE

portal_url = "url"


Set objNetwork = WScript.CreateObject("WScript.Network")


user = objNetwork.UserName



idForPassword = convertToArabia(user)



password = makePassword(idForPassword)

set IE=WScript.CreateObject("InternetExplorer.Application","event")

IE.navigate "about:blank"


with IE.document
.Write "<html>" & vbcrlf
.Write "<head>" & vbcrlf
.Write "<title>ƒiƒŒƒbƒWƒ|[ƒ^ƒ‹‚ɐڑ±’†</title>" & vbcrlf

.Write "<SCRIPT LANGUAGE='VBScript'>" & vbcrlf
.Write "Sub ReSize()" & vbcrlf
.Write " moveTo 0,0" & vbcrlf
.Write " resizeTo window.screen.width,window.screen.height" & vbcrlf
.Write "End Sub" & vbcrlf
.Write "</SCRIPT>" & vbcrlf
.Write "<SCRIPT LANGUAGE='JavaScript'>" & vbcrlf
.Write "function openSubmitWindow(){" & vbcrlf
.Write " option='toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=window.screen.width,height=window.screen.height'" & vbcrlf
.Write " option=option.replace('window.screen.width',window.screen.width)" & vbcrlf
.Write " option=option.replace('window.screen.height',window.screen.height)" & vbcrlf
.Write " window.open('about:blank','PortalLogin',option)" & vbcrlf
.Write "}" & vbcrlf
.Write "</SCRIPT>" & vbcrlf
.Write "</head>" & vbcrlf

.Write "<body onLoad='ReSize()'>" & vbcrlf
.Write "ƒiƒŒƒbƒWƒ|[ƒ^ƒ‹‚ɐڑ±‚ðŽŽ‚Ý‚Ä‚¢‚Ü‚·cc" & vbcrlf
.write "<form name=login target=PortalLogin id=login action="+portal_url+" method=POST onsubmit=openSubmitWindow() >" & vbcrlf
.write "<input type=hidden name=userid value='"+user+"'>" & vbcrlf
.write "<input type=hidden name=password value="+password+"><br>" & vbcrlf
.write "<input type=submit id=submitb name=submitb visible=false><br>" & vbcrlf
.write "</form>" & vbcrlf
.write "</body>" & vbcrlf
.write "</html>"
end with

IE.document.login.submitb.click()
IE.quit()

Set ObjNetwork = Nothing
Set IE = Nothing

End Sub
bluesmile979 2007-01-31
  • 打赏
  • 举报
回复
UP
bluesmile979 2007-01-30
  • 打赏
  • 举报
回复
UP
bluesmile979 2007-01-29
  • 打赏
  • 举报
回复
稍微有一点出入。

您的程序是在一个网页里面,网页不关闭的话可以通过win对象来控制被打开的窗口。我需要的功能是类似于点击open按钮后(这里会新开个窗口),关闭您这段程序所在网页之后,再打开您这段程序所在网页,再点击open按钮,这是要求这是要求在原来开的那个窗口里面显示您的计算结果。

我的程序要求是做一个VBS程序(*.vbs文件),双击执行这个文件之后,打开一个IE窗口,在里面显示一个结果。到这里程序执行完毕,推出程序(*.vbs文件)。

当我第二次执行这个VBS程序(*.vbs文件)的时候,需要判断是否存在一个被我这个程序打开过的窗口,如果存在,那么在先前那个窗口里面显示结果,如果不存在,新开窗口打开结果。

这里面因为中间VBS程序退出了,所以可能需要类似hook一类的技术才能拿到窗口句柄,不知道有没有办法,比如通过窗口标题,进程ID之类的。
超级大笨狼 2007-01-29
  • 打赏
  • 举报
回复


<button onclick="vbs:openWin">open</button>
<input type="hidden" id="hhh" value="0">
<script language="vbscript">
dim win
dim a
sub openWin()
hhh.value=int(hhh.value)+1
if isobject(win) then
win.document.body.innerHTML=win.opener.document.getElementById("hhh").value +1
else
set win=window.open("about:blank")
win.document.body.innerHTML =win.opener.document.getElementById("hhh").value +1
end if
end sub


</script>
我将带领大家来系统学习Windows的窗口编程,包括消息、窗口、GDI绘图、游戏开发等。本课程比较基础,非常适合初学者入门,读者可以边学习边实践。具体的章节目录和课程内容如下所示:---------------------------------------------Windows游戏编程系列之1:GUI界面编程及游戏入门实战1、Windows创建第一个窗口 WinMain入口函数 5进行Windows编程的调试手法 6窗口从哪里来? 7窗口编程的步骤 7窗口编程需要的主要结构 8窗口编程需要的主要API 92、Windows的窗口过程与消息机制 如何留住窗口? 121)Windows的消息与消息循环 142)消息处理函数与常用消息 17)Windows的窗口过程函数 19 3、GDI编程之设备上下文 1)GDI的通用编程框架 222)GDI的绘图步骤 253)GDI获取设备句柄 254、GDI编程之绘制几何图形 画点、线 28颜色COLORREF 29矩形 29画圆、饼图、弦图 305、GDI编程之自定义画笔画刷画笔简介 32画刷简介 33画笔案例 33画刷案例 346、GDI编程之绘制文字 DrawText函数 35TextOut 函数 (wingdi.h) 36CreateFont函数 37绘制文本案例 377、GDI编程之绘制位图 位图简介 381)在资源中添加位图资源 392)从资源中加载位图: LoadBitmap 393)创建一个与当前DC相匹配的DC(内存DC) 394)将bitmap放入匹配的DC中:SelectObject 405)成像(1:1 比例 ) 406)取出位图 407)释放位图 418)释放匹配的DC 41绘制位图案例 41   8、Windows鼠标键盘消息 一、键盘消息 421、键盘消息 422、消息参数: 423、消息的使用: 424、键盘消息的案例代码 43二、鼠标消息 441、基本鼠标消息 442、双击消息 443、滚轮消息 454、不响应双击消息 45 9、Windows定时器消息 定时器消息介绍 47创建定时器 47关闭定时器 47定时器消息案例代码 4810、GDI游戏之跳舞动画 11、GDI游戏之走路动画 12、GDI贪吃蛇游戏实战  
2007-6-13 VER 1.5.0.19
1.增加支持库 CServices 可对WinNT以上系统服务进行如果下操作:
1)安装:可将任何可执行文件安装为系统服务
2)卸载:可卸载指定服务
3)查询:可查询任何指定服务的状态,返回如 正在停止,已停止,正在运行,正在启动等
4)设置:可设置任何服务的启动方式,如设置为 系统、自动、手动、已禁用等
2.修正注册表支持库 并且更名为 CConfig 意为配置
3.增强 CWin32 库 新增函数:FindChildWindow 用于查找指定窗口的子窗口
   新增函数:EnumAllChildWindows 枚举指定窗口的所有子窗口(包含子窗口的子窗口
增加函数:GetChildWindows 枚举指定窗口的所有子窗口(不包含子窗口的子窗口
新增函数:WindowsList 枚举所有系统正在运行的顶级窗口
 新增例程:SuperSPY ++ 演示以上功能
2007-6-12 VER 1.5.0.9
1.针对 ActiveX EXE 公开了 CForm 对象 和 CScriptEngine 对象
2.CScriptEngine 对象增加了 ExecuteCode 方法,可以运行字符串代码,这样就修补了 ExecuteFile 的不灵活
2007-6-11 VER 1.5.0.0
1.重要更新:
支持编译命令 /c
可编译所支持的脚本源文件(*.sps,*.sss,*.vbs,*.js)为EXE独立文件
在 *.sps ,*.sss 文件上点击右键弹出菜单有加入“编译”命令
说明:编译器不自动搜索相关文件,如果需相关文件,请保证在运行时存在
2.修正了网络发送文件的BUG(发送的文件总是少一字节,导致某些文件传送后无法使用)
2007-6-8 VER 1.3.0.94
1.修正 CFileIO 的 WriteToFile 函数名为 WriteTextFile 修正BUG
2.全面改变 CFileIO 的接口函数,原有函数名将都已被替换:参数:fNumber 未指定将用 Openfile 打开的句柄
'打开文件,返回一个文件号
OpenFile(文件名[,xType As String = "output"])

'写入二进制内容 Put->WriteBytes(Data()[,offset = 1][,fNumbe = 0])
'读二进制内容 Get->ReadBytes([offset = 1][,Length = -1][,fNumbe = 0])'参数:offset 位置'参数:Length 读入长度'
'移动读写位置 Seek->SeekTo
'写文本 Print->PrintText (what[,fNumber])
'读取字符 ReadStr([lCount=0][,fNumber])
'读入一行 ReadLine
'读入行数 ReadLines(NumberOfLines[, fNumber = 0]) 参数:NumberOfLines 指定要读取多少行
'读取从某行到某行 ReadLinesEx([StartLine = 1][,[EndLine = -1][,fNumber = 0])
'读取由文件名指定的文本文件 ReadTextFile(FileName)
'写文本文件 WriteTextFile(FileName,Texts)
'一行一行读文本文件 ReadFileLineByLine([fNumber])
'关闭文件 Close->CloseFile([fNumber])

3.修正 SControl 的背景色与前景色设置
2007-6-4 VER 1.3.0.83
1.增加了Zlib压缩解压缩支持库,并在 EncryptFile.sps 示例中增加了演示
虚拟机会检查 System 路径和程序路径下是否存在Zlib.dll文件
如果不存在,程序会在 System32 路径下释放此文件
(Zlib.Dll是国外著名的开源压缩程序,压缩率仅次于Winrar,而且速度很快)
2.修正了对VBS和JS文件的程序对象支持,现在可以在VBS脚本或JS脚本中使用App全局对象了
2007-6-3 VER 1.3.0.71
1.修正了窗体 CtrlItems 对象的 DrawControl 捕获错误能力,如果提供了不被支持的控件,将会结束程序
2.增加了著名的几个加密 及解密 控件 SEncrypt.DLL 和示例 EncryptFile.sps
3.增加了窗体关闭时的事件捕捉及取消关闭窗口的能力,同时 所有的 vbscript 窗体过程必须写为 function 形式,对原有的 sub 形式不再支持

2007-6-2 VER 1.3.0.63
1.增强了同一脚本程序的多脚本语言功能,真正实现了同一脚本里使用多种语言
2.增加例程 javascript学习.sps 演示了VBS调用JS的函数并得到返回值
3.修正了多语言脚本的Code代码段读取分析问题
2007-6-1 VER 1.3.0.50
1.增加了Base64加密类支持
2.修整了网络服务器和网络客户端的示例
3.增加了网络服务器监听指定IP地址的功能,现在已经可以捕捉监听出错
4.增加了网络客户端连接时出错的捕获,连接超时为15秒
2007-3-27 VER 1.2.0.3
1.超级脚本虚拟机发布 ,被 IT168 收集(http://download.it168.com/07/0710/72682/72682_3.shtml)

4,008

社区成员

发帖
与我相关
我的任务
社区描述
它是一种微软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系统中的元素,对系统进行管理。
社区管理员
  • vbScript社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧