请帮我创建一个始终位于顶部的消息框,用户不能使用其他窗口函数,如调用开始菜单或与其他窗口交互,直到他按下消息框上的确定按钮.
我有一个包含64位数(双)参数的设备.我可以使用Modbus协议分两部分读取其Double参数.所以我使用按位运算将64位数分成两个32位数.
示例:( 2289225.841082十进制)= 41417724-EBA8953E(十六进制)
您可以在以下站点中检查并测试Hex对话:http://babbage.cs.qc.edu/IEEE-754/复制41417724EBA8953E并粘贴上面站点中的"要分析的值"编辑框,然后按Enter键.
但在传输两个32位整数后,我无法将其合并到原始的64位数.我试图在VBScript中使用CDbl和FormatNumber函数,但它失败了!
Dim nL, nH, fL, fH, f64
nL = 1094809380 ' 4141 7724
nH = 3953694014 ' EBA8 953E
fL = CDbl($nL)
fH = CDbl($nH)
f64 = CDbl((fH * CDbl(2 ^ 32)) + CDbl(fL))
$strNum64 = FormatNumber( f64, 2)
Run Code Online (Sandbox Code Playgroud)
那么,如何在32位操作系统上使用VBScript显示64位数?
我在Windows上创建一个VB脚本,在IE中打开一个站点.我想要的:检测网页何时加载并显示消息.我通过使用sleep(WScript.Sleep)来实现这一目标.网站加载时的秒数.但是,该网站在中途弹出用户名,密码.只有当用户输入凭据时,才会完成加载页面.所以我不想使用"睡眠"大约几秒钟,而是使用精确的函数或检测页面加载的方法.我查了线路和尝试使用Do While循环,onload,onclick功能,但没有任何工程.为了简化,即使我编写脚本来打开像yahoo这样的站点并检测,在页面加载时显示消息"Hi":如果不使用sleep(WScript.Sleep),它将无法工作.
我有一个包含以下文字的文本文件
161624.406 : Send:[sometext1] 161624.437 : Send:[sometext2] 161624.468 : Send:[sometext3] 161624.499 : Send:[sometext4] 161624.531 : Send:[sometext5]
我想只保留该文件中的sometext部分.期望的输出是
sometext1 sometext2 sometext3 sometext4 sometext5
我在Excel-VBA中使用以下代码
Public Sub testa()
a = "C:\Users\pankaj.jaju\Desktop\test.log"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTxtFile = objFSO.OpenTextFile(a, 1)
strText = objTxtFile.ReadAll
objTxtFile.Close
Set objTxtFile = Nothing
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.Global = True
.MultiLine = True
.Pattern = "\[([^]]+)\]"
Set objRegMC = .Execute(strText)
b = objRegMC(0).SubMatches(0)
End With
Set objRegEx = Nothing
Debug.Print b
End Sub …Run Code Online (Sandbox Code Playgroud) 如何验证是否加载了不可见的网页.
由于互联网连接问题或从网站加载页面我在Internet Explorer for XP或Windows 7或10中显示错误,如"网页无法显示".
需要告诉我网页是否成功加载或有问题所以我可以决定下一步是什么.
我有一个 Access 数据库,供希望使用 vbscript 连接和查询数据库的客户使用(这样他们就可以实现自动化,而无需实际打开 Access 2000 MDB)。我不知道如何建立数据库连接。
我已经尝试了几个脚本,使用 DAO 和 OLEDB。下面我粘贴了我所得到的最接近的,使用 ODBC 文件 DSN(恐怕使用系统 DSN 需要在客户端进行额外的工作,我试图保持简单)。
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
'ERROR OCCURS HERE
objConnection.Open "FileDSN=D:\RLS.dsn;"
objRecordset.CursorLocation = adUseClient
objRecordset.Open "SELECT County FROM CountyTBL" , objConnection, adOpenStatic, adLockOptimistic
Run Code Online (Sandbox Code Playgroud)
以下是 RLS.dsn 的内容(我使用 Windows 控制面板创建了它,因此我确信它是正确的):
[ODBC]
DRIVER=Microsoft Access Driver (*.mdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=D:\
DBQ=D:\RLS_be.mdb
Run Code Online (Sandbox Code Playgroud)
我收到的错误消息(这与我尝试过的其他两个脚本类似)是:
“第 5 行,字符 4 错误:[Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序。来源:Microsoft OLE DB Provider for ODBC Drivers”
有没有办法用 Visual Basic 脚本播放声音文件(MP3)?
Set obj = CreateObject("WScript.Shell")
obj.run "C:/test.mp3"
Run Code Online (Sandbox Code Playgroud)
还有一些其他方法,如果尝试过,但没有奏效。
脚本运行时没有显示声音,但没有错误。
我有一个关于 Windows PowerShell 在处理 Com Interop 时如何工作的问题。
我有一个第三方应用程序(我们称之为ThirdPartyApp),它公开了一个我可以调用的 API。
我可以在 Excel 或 Visual Studio 等中提前绑定它并“直接”与其对话。我可以在 VBScript 中后期绑定它,并且仍然“直接”与它对话。
我所说的“直接”是指我可以使用如下语法调用 API 公开的属性和方法的方式:ThirdPartyApp.Name
所以在 VBScript 中我可以这样做:
Dim api : Set api = CreateObject("ThirdPartyApp.API")
WScript.Echo api.Name
Run Code Online (Sandbox Code Playgroud)
在 PowerShell 中,当我这样做时:
$api = New-Object -ComObject ThirdPartyApp.API
Run Code Online (Sandbox Code Playgroud)
我必须使用以下语法来获取名称:
[System.__ComObject].InvokeMember('Name',[System.Reflection.BindingFlags]::GetProperty,$null,$api,$null)
Run Code Online (Sandbox Code Playgroud)
ThirdPartyApp现在,我明白这与建造方式有关。
我知道这不是编码问题,我希望我不会立即遭到否决,但我的问题是:为什么在使用 Powershell 时不能以 VBScript 方式与该程序集对话?New-Object -ComObjectPowershell 与CreateObject(identifier)VBScript有何不同?
在 Windows 10 中,我可以通过简单的 .vbs 脚本使用“Cascade Windows”:
set objShell = CreateObject("shell.application")
call objShell.CascadeWindows()
Run Code Online (Sandbox Code Playgroud)
使用 PowerShell 也可以实现同样的效果:
$ShellExp = New-Object -ComObject Shell.Application
$ShellExp.CascadeWindows()
Run Code Online (Sandbox Code Playgroud)
然而,在 Windows 11 中,这不再可能。不过,该方法存在于 Windows 11 中。发出以下 PowerShell 命令:
New-Object -ComObject "Shell.Application" | gm | select Name, MemberType
Run Code Online (Sandbox Code Playgroud)
使用例如 AutoHotkey,我可以使用以下脚本/命令“级联 Windows”:
DllCall( "CascadeWindows", uInt,0, Int,4, Int,0, Int,0, Int,0 )
Run Code Online (Sandbox Code Playgroud)
有没有办法使用 VBScript 或 PowerShell 恢复正常运行的“Cascade Windows”操作?
vbscript ×10
powershell ×2
autohotkey ×1
dom ×1
double ×1
excel ×1
excel-vba ×1
loading ×1
messagebox ×1
mp3 ×1
ms-access ×1
vba ×1
web-scraping ×1
webpage ×1
windows ×1
windows-11 ×1
wsh ×1