标签: vbscript

如何在HTA中获取文件的关联图标(HTML/Javascript/VBScript)

我正在构建一个HTA应用程序,我需要在其中显示一个文件列表及其相关的系统图标.
我正在使用FileSystemObject列出文件,但似乎无法获取图标...

我在VBS中找到了一个可以将文件图标保存为.ico的脚本.
它读取文件(PE资源文件,.exe或dll)并解析图标数据.我修改了该脚本以返回图标的字节,将其转换为base64并在HTML中使用嵌入的base64图像.这是原始脚本:http://gilpin.us/IconSiphon/

问题

  1. )在大多数情况下,.ico包含多个图标(许多尺寸和颜色深度),但我无法指定使用哪一个(因为我需要16x16图标).

  2. )并非所有图标都显示

  3. )因为它读取exe和dll,所以文件可能很慢(但我很好,我可以缓存已经获取的图标)

我也试过一些ActiveX控件,但似乎都没有正常工作.甚至微软提供的那些(ShellFolderView或ListView)都非常错误.

要求

  • 必须显示16x16图标

  • 必须允许多个文件选择

  • 一切都必须嵌入hta(如果可能的话).没有外部.exe

有谁知道实现这一目标的方法?

谢谢!

html javascript vbscript wsh hta

13
推荐指数
1
解决办法
2265
查看次数

如何使用VBScript删除字符串的前n个字符?

如何使用VBScript去除字符串的前四个字符?

Ss表示前四个字符不再是字符串的一部分.

vbscript

13
推荐指数
2
解决办法
7万
查看次数

如何防止'查询超时过期'?(SQLNCLI11错误'80040e31')

我在经典ASP(VBScript)中连接到MS SQL Server 2012数据库.这是我的连接字符串:

Provider=SQL Server Native Client 11.0;Server=localhost;
Database=databank;Uid=myuser;Pwd=mypassword;
Run Code Online (Sandbox Code Playgroud)

当我执行此SQL命令时:

UPDATE [info] SET [stamp]='2014-03-18 01:00:02',
[data]='12533 characters goes here',
[saved]='2014-03-18 01:00:00',
[confirmed]=0,[ip]=0,[mode]=3,[rebuild]=0,
[updated]=1,[findable]=0 
WHERE [ID]=193246;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Microsoft SQL Server Native Client 11.0 
error '80040e31'
Query timeout expired   
/functions.asp, line 476
Run Code Online (Sandbox Code Playgroud)

SQL查询很长,数据字段更新为12533个字符.ID列已编入索引,因此查找ID为193246的帖子应该很快.

当我在SQL Server Management Studio上执行完全相同的SQL表达式(复制和粘贴)时,它立即成功完成.什么都没有问题.所以SQL本身没有问题.我甚至尝试过使用ADODB.Recordset对象并通过它更新(没有自编SQL),但我仍然得到相同的超时错误.

如果我在Management Studio中转到工具>选项>查询执行,我会看到执行超时设置为0(无限).在工具>选项>设计器下,我看到事务超时设置为30秒,因为脚本和数据库在同一台计算机上("localhost"在连接字符串中),所以应该足够了.

这里发生了什么?为什么我可以在Management Studio中执行SQL而不是在我的ASP代码中执行?


编辑:尝试将设计师选项卡中的30秒超时设置为600秒,以确保,但我仍然得到相同的错误(在页面加载btw 30秒后发生).

这是我用来在ASP页面上执行SQL的代码:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=SQL Server Native Client 11.0;
Server=localhost;Database=databank;Uid=myuser;Pwd=mypassword;"
Conn.Execute "UPDATE [info] SET [stamp]='2014-03-18 01:00:02',
[data]='12533 characters goes here',[saved]='2014-03-18 01:00:00',
[confirmed]=0,[ip]=0,[mode]=3,[rebuild]=0,[updated]=1,[findable]=0 
WHERE [ID]=193246;" …
Run Code Online (Sandbox Code Playgroud)

sql sql-server vbscript asp-classic sql-server-2012-express

13
推荐指数
1
解决办法
10万
查看次数

在分配中使用Set时"需要对象"

call main()
sub main()
    Dim scmd
    Set scmd = "c:\windows\system32\cscript.exe //nologo c:\s.vbs"
    createobject("wscript.shell").run scmd,0,false
end sub
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

Object required: '[string: "c:\windows\system32\"]' Code 800A01A8

vbscript asp-classic

13
推荐指数
2
解决办法
2万
查看次数

Microsoft Edge和Windows 10是否支持HTA?

我正在开发一个适用于Windows 8.1的HTML应用程序,而且,由于我们的办公室很快将使用Windows 10,我想知道MS Edge和Windows 10是否仍支持HTA.

vbscript hta windows-10 microsoft-edge

13
推荐指数
1
解决办法
9266
查看次数

GetRef 的内存消耗(垃圾收集)随 KB4525236 改变

在我们的 Windows 2016 服务器/Windows 10 客户端上安装KB4525236后,我们遇到了内存不足问题。此安全修复程序似乎已经改变了通过GetRef.

预 KB4525236

在通过GetRef将实例变量设置为垃圾收集器调用的函数中创建的每个实例nothing

发布 KB4525236

在调用 through 的函数中创建的每个实例都GetRef保留在内存中,并且只有在整个函数完成时才会垃圾回收。在循环中创建实例时,这会快速累加并导致内存不足,尤其是在 32 位进程中。

问题

  • 我们在网上找不到任何相关内容,因此我们希望得到遇到相同问题的其他人的确认。
    编辑从头开始:是相同的问题,但目前还没有解决方案
    (自 KB4524570(2019 年 11 月 12 日)Windows 10 1903 以来的 vbscript.dll class_terminate 错误)
  • 如果有人可以验证并知道可行的解决方案,那就太棒了。

POC

在安装了 KB4525236 的设备上运行的以下脚本显示了垃圾收集的不同之处

  • 直接调用:只有第一个实例被销毁才会创建第二个实例(这是我们想要的行为)
  • 通过调用GetRef:在销毁第一个实例之前创建第二个实例,因此有两个实例使用内存。

另存为:KB4525236.vbs
运行为:wscript KB4525236.vbs

Dim Name, Log

Class IDummyInstance
  Dim FName
  Sub Class_Initialize
    FName = Name
    Log …
Run Code Online (Sandbox Code Playgroud)

vbscript null garbage-collection memory-management reference-type

13
推荐指数
2
解决办法
393
查看次数

ASP换行符 - \n?

我一直在寻找一种在我的代码中插入换行符的方法来查看我的源代码.我不是在找<br />

类似于PHP的东西 \n

有关如何在ASP中执行此操作的任何想法?我将把它放在一个字符串里面.

vbscript line-breaks asp-classic

12
推荐指数
1
解决办法
5万
查看次数

VB6传递值并通过引用传递

我正在努力理解按值传递并在VB6中通过引用传递.我完全理解这些概念是面向对象的编程语言,如.NET和Java(我意识到Java没有通过引用传递).看看下面的代码:

Private Sub Form_Load()

Dim Test As Integer
Test = 1
TestFunction Test 'line 5
MsgBox (Test)

End Sub

Private Sub TestFunction(ByVal i As Integer)
    i = i + 1
End Sub
Run Code Online (Sandbox Code Playgroud)

当我在第5行的Test周围放置括号时,消息框会按照我的预期打印1.现在看看下面的代码:

Private Sub Form_Load()

Dim Test As Integer
Test = 1
TestFunction Test 'line 5
MsgBox Test

End Sub

Private Sub TestFunction(ByRef i As Integer)
    i = i + 1
End Sub
Run Code Online (Sandbox Code Playgroud)

消息框按照我的预期打印2.但是,如果在第5行添加括号,则消息框将打印1,这是我不希望的.即使被调用函数中定义的变量是ByRef,看起来调用函数也可以通过值传递.反之亦然,即如果被调用函数具有定义为ByVal的变量的签名,则它将始终为ByVal(即使调用函数中的变量周围没有括号).在VB6中,这背后的想法是什么?我意识到这是VB6中的一个基本问题,但它让我很困惑.我已经阅读了MSDN文档,我意识到这一切都是正确的,但它并没有解释它背后的原因.

vb6 vbscript vba

12
推荐指数
2
解决办法
1万
查看次数

经典ASP亚马逊s3休息授权

我对这里的错误感到困惑......

<script language="javascript" runat="server">
  function GMTNow(){return new Date().toGMTString()}
</script>
<%

Const AWS_BUCKETNAME = "uk-bucketname"
Const AWS_ACCESSKEY = "GOES HERE"
Const AWS_SECRETKEY = "SECRET"
LocalFile = Server.Mappath("/test.jpg")

Dim sRemoteFilePath
    sRemoteFilePath = "/files/test.jpg" 'Remote Path, note that AWS paths (in fact they aren't real paths) are strictly case sensitive

Dim strNow
    strNow = GMTNow() ' GMT Date String

Dim StringToSign
    StringToSign = Replace("PUT\n\nimage/jpeg\n\nx-amz-date:" & strNow & "\n/"& AWS_BUCKETNAME & sRemoteFilePath, "\n", vbLf)

Dim Signature
    Signature = BytesToBase64(HMACSHA1(AWS_SECRETKEY, StringToSign))

Dim Authorization
    Authorization = …
Run Code Online (Sandbox Code Playgroud)

rest vbscript wsh amazon-s3 asp-classic

12
推荐指数
2
解决办法
5386
查看次数

如何使用vbs获取用户名

所以我试图用.move文件行移动一个.vbs文件,我想把.vbs给我的朋友,但为了让它工作,我必须知道他们的用户名是什么.我会把.vbs知道他们的用户名Ex"C:\ users\username\desktop"

vbscript username

12
推荐指数
2
解决办法
4万
查看次数