找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: yyz219

[其他] 【已解决】能不能用bat复制百分浏览器地址栏的地址?谢谢

[复制链接]
 楼主| 发表于 2025-7-17 07:03:49 | 显示全部楼层
回复 15# aloha20200628


    没有复制  谢谢
发表于 2025-7-17 10:17:46 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-7-17 11:52 编辑

回复 16# yyz219

正常的运行步骤如下(确保运行批处脚本之前,百分浏览器窗口未被最小化
一。先自动将当前正在浏览的网页窗口置顶
二。再将被置顶的网页地址栏高显(或加亮)
三。最后会在cmd窗口命令行显示被抓取的网页地址
楼主可确认是在哪一步出错?或出现什么相应结果?
 楼主| 发表于 2025-7-17 12:04:57 | 显示全部楼层
可能窗口置顶,我再试一试 谢谢
发表于 2025-7-17 12:05:12 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-7-17 18:47 编辑

回复 16# yyz219

又复查了一遍百分浏览器内置的快捷键列表,竟然发现其中有 '一键(alt+c)复制地址栏数据到剪贴板' 的功能,据此可将15楼代码针对百分浏览器定制化,如下

  1. 2>1/* ::
  2. @echo off &for /f "tokens=2 delims= " %%p in ('tasklist /v /fi "imagename eq chrome.exe"^|more +3') do for /f "delims=" %%v in ('cscript /nologo /e:jscript "%~f0" %%p') do (echo,%%v&pause&exit/b)
  3. exit/b */
  4. v=WSH.arguments, ws=WSH.createobject('wscript.shell'), ws.appactivate(v(0));
  5. WSH.sleep(500), ws.sendkeys('%c'), WSH.sleep(300);
  6. hf=WSH.createobject('htmlfile'), url=hf.parentWindow.clipboardData.getData('text');
  7. WSH.echo(url), WSH.quit();
复制代码
运行以上代码之前要确保百分浏览器窗口未被最小化!若还有问题,请按17楼中所述第一和第三步骤两项检查回复...

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

发表于 2025-7-20 16:34:37 | 显示全部楼层
改了下2楼链接里的AHK代码
注意: 浏览器显示语言需要为简中 ,因为使用的是类名Chrome_WidgetWin_1 ,vsc或edge之类的也有这个类名 ,结果可能不准确

  1. setbatchlines -1
  2. navName := "地址和搜索栏"
  3. ;navName := "Address and search bar";english ver navName
  4. IUIAutomation := ComObjCreate(CLSID_CUIAutomation := "{ff48dba4-60ef-4201-aa87-54103eef594e}", IID_IUIAutomation := "{30cbe57d-d9d0-452a-ab13-7ac5ac4825ee}")
  5. DllCall(NumGet(NumGet(IUIAutomation+0)+6*A_PtrSize), "ptr", IUIAutomation, "ptr", WinExist("ahk_class Chrome_WidgetWin_1"), "ptr*", ElementFromHandle)   ; IUIAutomation::ElementFromHandle
  6. AddressBarName := DllCall("oleaut32\SysAllocString", "str", navName, "ptr")
  7. VarSetCapacity(variant, 8+A_PtrSize*2, 0)
  8. NumPut(VT_BSTR := 8, variant, 0, "ushort")
  9. NumPut(AddressBarName, variant, 8, "ptr")
  10. if (A_PtrSize = 4)
  11.    DllCall(NumGet(NumGet(IUIAutomation+0)+23*A_PtrSize), "ptr", IUIAutomation, "int", UIA_NamePropertyId := 30005, "int64", NumGet(variant, 0, "int64"), "int64", NumGet(variant, 8, "int64"), "ptr*", condition1)   ; IUIAutomation::CreatePropertyCondition
  12. else
  13.    DllCall(NumGet(NumGet(IUIAutomation+0)+23*A_PtrSize), "ptr", IUIAutomation, "int", UIA_NamePropertyId := 30005, "ptr", &variant, "ptr*", condition1)   ; IUIAutomation::CreatePropertyCondition
  14. VarSetCapacity(variant, 8+A_PtrSize*2, 0)
  15. NumPut(VT_I4 := 3, variant, 0, "ushort")
  16. NumPut(UIA_EditControlTypeId := 50004, variant, 8, "int")
  17. if (A_PtrSize = 4)
  18.    DllCall(NumGet(NumGet(IUIAutomation+0)+23*A_PtrSize), "ptr", IUIAutomation, "int", UIA_ControlTypePropertyId := 30003, "int64", NumGet(variant, 0, "int64"), "int64", NumGet(variant, 8, "int64"), "ptr*", condition2)   ; IUIAutomation::CreatePropertyCondition
  19. else
  20.    DllCall(NumGet(NumGet(IUIAutomation+0)+23*A_PtrSize), "ptr", IUIAutomation, "int", UIA_ControlTypePropertyId := 30003, "ptr", &variant, "ptr*", condition2)   ; IUIAutomation::CreatePropertyCondition
  21. DllCall(NumGet(NumGet(IUIAutomation+0)+25*A_PtrSize), "ptr", IUIAutomation, "ptr", condition1, "ptr", condition2, "ptr*", conditions)   ; IUIAutomation::CreateAndCondition
  22. DllCall(NumGet(NumGet(ElementFromHandle+0)+5*A_PtrSize), "ptr", ElementFromHandle, "int", TreeScope_Descendants := 0x4, "ptr", conditions, "ptr*", element) ; IUIAutomationElement::FindFirst
  23. VarSetCapacity(variant, 8+A_PtrSize*2, 0)
  24. DllCall(NumGet(NumGet(element+0)+10*A_PtrSize), "ptr", element, "int", UIA_ValueValuePropertyId := 30045, "ptr", &variant)   ; IUIAutomationElement::GetCurrentPropertyValue
  25. ObjRelease(element)
  26. ObjRelease(conditions)
  27. ObjRelease(condition1)
  28. ObjRelease(condition2)
  29. ObjRelease(ElementFromHandle)
  30. clipboard := StrGet(NumGet(variant, 8, "ptr"), "utf-16")
  31. DllCall("oleaut32\SysFreeString", "ptr", AddressBarName)
  32. return
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-7-21 15:08:16 | 显示全部楼层
回复 19# aloha20200628


    没有解决 谢谢
 楼主| 发表于 2025-7-21 15:09:03 | 显示全部楼层
回复 20# Five66


    我试一试先  谢谢
 楼主| 发表于 2025-7-21 15:14:28 | 显示全部楼层
回复 20# Five66


    提示错误
发表于 2025-7-21 16:16:24 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-7-21 16:25 编辑

回复 21# yyz219

楼主可简单做一个测试》在百分浏览器中用 alt+c 组合键是否能复制当前网页的网址到剪贴板?
运行19楼代码后,百分浏览器中的当前网页是否会被自动置顶?当然前提是运行代码之前百分浏览器不能被最小化!
 楼主| 发表于 2025-7-21 17:12:15 | 显示全部楼层
回复 24# aloha20200628


    用 alt+c 组合键 不能 复制当前网页的网址到剪贴板
发表于 2025-7-21 18:06:49 | 显示全部楼层
回复 25# yyz219

进入百分浏览器》设置》快捷键》右侧窗口中应该可以查看到 “复制地址栏网址到剪贴板 - Alt+C” 选项...
是否在 “快捷键” 选项中没有开启 “启用快捷键” ?
 楼主| 发表于 2025-7-21 18:09:56 | 显示全部楼层
回复 26# aloha20200628


    非常感谢。我曾经删除过用不到的快捷键。

现在重新设置以后可以了,问题也得到解决。

再次感谢
 楼主| 发表于 2025-7-21 18:09:57 | 显示全部楼层
回复 26# aloha20200628


    非常感谢。我曾经删除过用不到的快捷键。

现在重新设置以后可以了,问题也得到解决。

再次感谢
 楼主| 发表于 2025-7-21 18:09:57 | 显示全部楼层
回复 26# aloha20200628


    非常感谢。我曾经删除过用不到的快捷键。

现在重新设置以后可以了,问题也得到解决。

再次感谢
发表于 2025-7-21 23:25:10 | 显示全部楼层
回复 23# yyz219


    额 ,应该是系统缺少UIA相关的文件 ,例如uiautomationcore.dll之类的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:06 , Processed in 0.022734 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表