【技术贴】ActiveX 部件不能创建对象 Wscript.Shell,右键打开所在目录的批处理ba...

本文提供了解决Windows快捷方式右键打开所在目录问题的批处理脚本,包括安装和卸载两个部分,适用于Windows系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 开始 -- 运行 -- 输入regsvr32 %windir%\system32\WSHom.Ocx 回车

  2. 开始 -- 运行 -- 输入regsvr32 /u scrrun.dll 回车

  3. 以上两步即可解决此问题。没有为什么,微软说的。

  

 

  同时奉献两个最好用的右键打开所在目录的批处理文件,提供卸载。

  下载地址  http://ishare.iask.sina.com.cn/f/33339403.html

 

   --------------------------------------------安装.bat--------------------------

 

@echo off
color 0A
title 开启右键打开快捷方式所在目录成功......
mode con cols=40 lines=10
echo set args = WScript.Arguments>>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs
echo linkname = args(0)>>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs
echo. >>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs
echo set wshshell = CreateObject("WScript.Shell")>>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs
echo. >>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs
echo set scut = wshshell.CreateShortcut(linkname)>>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs
echo. >>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs
echo set fs = CreateObject("Scripting.FileSystemObject")>>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs
echo. >>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs
echo folder = """" ^& fs.GetParentFolderName(scut.TargetPath) ^& """">>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs
echo. >>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs
echo wshshell.Run(folder)>>C:\WINDOWS\system32\open_shrtct_parent_folder.vbs

if exist "tmp.reg" del "tmp.reg"
echo Windows Registry Editor Version 5.00>>tmp.reg
echo. >>tmp.reg
echo [HKEY_CLASSES_ROOT\lnkfile\shell]>>tmp.reg
echo. >>tmp.reg
echo [HKEY_CLASSES_ROOT\lnkfile\shell\打开所在目录]>>tmp.reg
echo. >>tmp.reg
echo [HKEY_CLASSES_ROOT\lnkfile\shell\打开所在目录\command]>>tmp.reg
echo @="wscript.exe \"C:\\windows\\system32\\open_shrtct_parent_folder.vbs\" \"%%%L\"">>tmp.reg
echo. >>tmp.reg 
regedit /s "tmp.reg" >nul 2>nul
del "tmp.reg"

echo.
echo.
echo.
echo.
echo.      【开启成功,任意键退出】 
pause>nul 
exit

-----你懂得怎么用的。(以上内容复制进txt并重命名为xx.bat双击即可。)------------- 

--------------------------------------------- 卸载.bat--------------------------------------

 

@echo off
color 0A
mode con cols=40 lines=10
title 关闭右键打开快捷方式所在目录成功......
reg delete HKEY_CLASSES_ROOT\lnkfile\shell /f
del C:\WINDOWS\system32\open_shrtct_parent_folder.vbs

echo.
echo.
echo.
echo.       【按任意键退出】 
pause>nul 
exit

 

 

---------------------------------------你懂得怎么用的。------------------------------------------

 

之所以出现这个帖子就是因为这个错误的出现,使得这两个bat文件操作后,不能打开所在目录,所以运行了开头的那两个步骤后,一切完美。

 

 下载地址  http://ishare.iask.sina.com.cn/f/33339403.html

 

Option Explicit Private WithEvents Timer1 As Timer Private wsh As Object Private objWnd As Object Private Const ObjHour As Integer = 1 Private Const ObjMinute As Integer = 59 Private Const ObjSecond As Integer = 0 Private LastSwitchTime As Date ' 记录上次切换时间 '显示窗口 Private Sub Form_Load() On Error Resume Next Set wsh = CreateObject("WScript.Shell") '屏蔽显示窗口代码 'Set objWnd = wsh.Exec("mshta.exe ""about:<title>页面自动程序</title><body bgcolor=white><center><h1>运行中</h1><p>系统每1分钟自动按一次F11和Tab键,防止桌面自动锁屏.<br> @@@@@关闭窗口停止运行程序@@@@@</p></center><script>window.resizeTo(800,400);window.moveTo((screen.width-800)/2,(screen.height-400)/2);</script>""") If Err.Number <> 0 Then MsgBox "错误创建窗口: " & Err.Description Exit Sub End If Set Timer1 = Controls.Add("vb.timer", "Timer1") Timer1.Interval = 1000 ' 1秒检测一次 Timer1.Enabled = True ' 初始状态启用定时器 OpenBrowserUrls End Sub Private Sub OpenBrowserUrls() Dim browserPath As String Dim urls(1 To 4) As String ' 4个URL browserPath = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" urls(1) = "http://192.168.10.81/decision/view/form?viewlet=%25E5%2588%25B6%25E9%2580%25A02%25E9%2583%25A8%252F%25E7%25AC%25AC3%25E5%2588%25B6%25E9%2580%25A0%25E7%25A7%2591%252F%25E7%25AE%25A1%25E7%2590%2586%25E6%259D%25BF%252F%25E6%2580%25BB%25E8%25A3%2585%25E7%25BB%2584%25E7%25AE%25A1%25E7%2590%2586%25E6%259D%25BF%252F%25E7%25AC%25AC3%25E5%2588%25B6%25E9%2580%25A0%25E7%25A7%2591%25E6%2595%25B0%25E5%25AD%2597%25E5%258C%2596%25E5%258F%25AF%25E8%25A7%2586%25E7%2594%25BB%25E9%259D%25A2.frm&ref_t=design&ref_c=c1f4da3a-8211-44b6-94c4-3a88c1251739" '3科数字化页面 urls(2) = "http://192.168.154.11:4000/gridWebAndon/revoAssembly_Allparts" '#12线装配安东 urls(3) = "http://192.168.10.81/decision/view/form?viewlet=%25E5%2588%25B6%25E9%2580%25A02%25E9%2583%25A8%252F%25E7%25AC%25AC3%25E5%2588%25B6%25E9%2580%25A0%25E7%25A7%2591%252F%25E7%25AC%25AC3%25E5%2588%25B6%25E9%2580%25A0%25E7%25A7%2591%25E4%25BA%25BA%25E5%2591%2598%25E7%25AE%25A1%25E7%2590%2586%25E6%259D%25BF%252F%25E7%25AC%25AC3%25E5%2588%25B6%25E9%2580%25A0%25E7%25A7%2591%25E4%25BA%25BA%25E5%2591%2598%25E7%25AE%25A1%25E7%2590%2586%25E6%259D%25BF.frm&ref_t=design&ref_c=aa9c72db-5215-48d4-b36f-a5841c32c7c6" '人员管理板 urls(4) = "http://192.168.154.11:5000/gridWebAndon/revoAllparts" '#12线加工安东 Dim i As Integer For i = 1 To 4 ' 打开浏览器窗口 wsh.Run Chr(34) & browserPath & Chr(34) & " " & Chr(34) & urls(i) & Chr(34) DoEvents ' 等待页面加载 Sleep 2000 ' 确保窗口激活后再发送F11 wsh.AppActivate "Microsoft Edge" Sleep 500 ' 短暂延迟确保激活完成 wsh.SendKeys "{F11}" Next i ' 额外确保最后一个窗口全屏 wsh.AppActivate "Microsoft Edge" Sleep 500 wsh.SendKeys "{F11}" LastSwitchTime = Now ' 初始化切换时间 End Sub Private Sub Timer1_Timer() Dim CurHour As Integer Dim CurMinute As Integer Dim CurSecond As Integer CurHour = Hour(Now) CurMinute = Minute(Now) CurSecond = Second(Now) ' 检查是否到达关机时间 If CurHour = ObjHour And CurMinute >= ObjMinute Then 'wsh.Run "cmd.exe /c shutdown -s -f" ' 原关机命令已禁用 Exit Sub End If ' 每1分钟切换一次标签页 If DateDiff("n", LastSwitchTime, Now) >= 1 Then wsh.AppActivate "Microsoft Edge" Sleep 500 ' 确保窗口激活 wsh.SendKeys "^{TAB}" ' Ctrl+Tab切换标签页 LastSwitchTime = Now End If End Sub Private Sub Sleep(ms As Long) Dim endTime As Date endTime = DateAdd("s", ms / 1000, Now) Do While Now < endTime DoEvents Loop End Sub 增加按钮启动停止程序
08-10
Private WithEvents cmdStart As CommandButton Private WithEvents cmdStop As CommandButton Private WithEvents Timer1 As Timer Private lblStatus As Label Private wsh As Object Private objWnd As Object ' 配置常量 Private Const ObjHour As Integer = 1 Private Const ObjMinute As Integer = 59 Private Const ObjSecond As Integer = 0 Private LastSwitchTime As Date ' 记录上次切换时间 Private isRunning As Boolean ' 程序运行状态标志 ' 窗体加载事件 - 初始化界面 Private Sub Form_Load() On Error Resume Next Set wsh = CreateObject("WScript.Shell") ' 创建界面控件 CreateControls ' 创建定时器(但不立即启用) Set Timer1 = Controls.Add("vb.timer", "Timer1") Timer1.Interval = 1000 ' 1秒检测一次 Timer1.Enabled = False ' 初始禁用定时器 ' 设置初始状态 lblStatus.Caption = "状态: 已停止" isRunning = False ' 创建信息窗口 Set objWnd = wsh.Exec("mshta.exe ""about:<title>页面自动程序</title><body bgcolor=white><center><h1>运行中</h1><p>系统每1分钟自动按一次F11和Tab键,防止桌面自动锁屏.<br> @@@@@点击停止按钮停止程序@@@@@</p></center><script>window.resizeTo(800,400);window.moveTo((screen.width-800)/2,(screen.height-400)/2);</script>""") If Err.Number <> 0 Then MsgBox "警告: " & Err.Description Err.Clear End If End Sub ' 创建界面控件 Private Sub CreateControls() ' 创建启动按钮 Set cmdStart = Controls.Add("VB.CommandButton", "cmdStart") With cmdStart .Caption = "启动" .Top = 1560 .Left = 3960 .Width = 1095 .Height = 375 .BackColor = &H8000000F ' 浅灰色背景 .Font.Bold = True End With ' 创建停止按钮 Set cmdStop = Controls.Add("VB.CommandButton", "cmdStop") With cmdStop .Caption = "停止" .Top = 2040 .Left = 3960 .Width = 1095 .Height = 375 .BackColor = &H8000000F .Enabled = False ' 初始禁用 .Font.Bold = True End With ' 创建状态标签 Set lblStatus = Controls.Add("VB.Label", "lblStatus") With lblStatus .Caption = "状态: 已停止" .Top = 120 .Left = 3000 .Width = 2415 .Height = 615 .Font.Bold = True End With End Sub ' 启动按钮点击事件 Private Sub cmdStart_Click() If isRunning Then Exit Sub ' 更新状态 isRunning = True lblStatus.Caption = "状态: 运行中" cmdStart.Enabled = False cmdStop.Enabled = True ' 打开浏览器页面 OpenBrowserUrls ' 启动定时器 Timer1.Enabled = True LastSwitchTime = Now End Sub ' 停止按钮点击事件 Private Sub cmdStop_Click() If Not isRunning Then Exit Sub ' 更新状态 isRunning = False lblStatus.Caption = "状态: 已停止" cmdStart.Enabled = True cmdStop.Enabled = False ' 停止定时器 Timer1.Enabled = False ' 关闭信息窗口 If Not objWnd Is Nothing Then objWnd.Terminate Set objWnd = Nothing End If ' 关闭所有Edge窗口(可选) ' wsh.Run "taskkill /f /im msedge.exe", 0, True End Sub Private Sub OpenBrowserUrls() Dim browserPath As String Dim urls(1 To 4) As String ' 4个URL browserPath = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" urls(1) = "http://192.168.10.81/decision/view/form?viewlet=%25E5%2588%25B6%25E9%2580%25A02%25E9%2583%25A8%252F%25E7%25AC%25AC3%25E5%2588%25B6%25E9%2580%25A0%25E7%25A7%2591%252F%25E7%25AE%25A1%25E7%2590%2586%25E6%259D%25BF%252F%25E6%2580%25BB%25E8%25A3%2585%25E7%25BB%2584%25E7%25AE%25A1%25E7%2590%2586%25E6%259D%25BF%252F%25E7%25AC%25AC3%25E5%2588%25B6%25E9%2580%25A0%25E7%25A7%2591%25E6%2595%25B0%25E5%25AD%2597%25E5%258C%2596%25E5%258F%25AF%25E8%25A7%2586%25E7%2594%25BB%25E9%259D%25A2.frm&ref_t=design&ref_c=c1f4da3a-8211-44b6-94c4-3a88c1251739" '3科数字化页面 urls(2) = "http://192.168.154.11:4000/gridWebAndon/revoAssembly_Allparts" '#12线装配安东 urls(3) = "http://192.168.10.81/decision/view/form?viewlet=%25E5%2588%25B6%25E9%2580%25A02%25E9%2583%25A8%252F%25E7%25AC%25AC3%25E5%2588%25B6%25E9%2580%25A0%25E7%25A7%2591%252F%25E7%25AC%25AC3%25E5%2588%25B6%25E9%2580%25A0%25E7%25A7%2591%25E4%25BA%25BA%25E5%2591%2598%25E7%25AE%25A1%25E7%2590%2586%25E6%259D%25BF%252F%25E7%25AC%25AC3%25E5%2588%25B6%25E9%2580%25A0%25E7%25A7%2591%25E4%25BA%25BA%25E5%2591%2598%25E7%25AE%25A1%25E7%2590%2586%25E6%259D%25BF.frm&ref_t=design&ref_c=aa9c72db-5215-48d4-b36f-a5841c32c7c6" '人员管理板 urls(4) = "http://192.168.154.11:5000/gridWebAndon/revoAllparts" '#12线加工安东 Dim i As Integer For i = 1 To 4 ' 打开浏览器窗口 wsh.Run Chr(34) & browserPath & Chr(34) & " " & Chr(34) & urls(i) & Chr(34) DoEvents ' 等待页面加载 Sleep 2000 ' 确保窗口激活后再发送F11 wsh.AppActivate "Microsoft Edge" Sleep 500 ' 短暂延迟确保激活完成 wsh.SendKeys "{F11}" Next i ' 额外确保最后一个窗口全屏 wsh.AppActivate "Microsoft Edge" Sleep 500 wsh.SendKeys "{F11}" LastSwitchTime = Now ' 初始化切换时间 End Sub Private Sub Timer1_Timer() If Not isRunning Then Exit Sub Dim CurHour As Integer Dim CurMinute As Integer CurHour = Hour(Now) CurMinute = Minute(Now) ' 检查是否到达关机时间 If CurHour = ObjHour And CurMinute >= ObjMinute Then ' wsh.Run "cmd.exe /c shutdown -s -f" ' 关机命令 Exit Sub End If ' 每1分钟切换一次标签页 If DateDiff("n", LastSwitchTime, Now) >= 1 Then wsh.AppActivate "Microsoft Edge" Sleep 500 ' 确保窗口激活 wsh.SendKeys "^{TAB}" ' Ctrl+Tab切换标签页 LastSwitchTime = Now End If End Sub 对象变量或With块变量未设置
最新发布
08-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值