win10将Submit Text3添加到右键打开

因为电脑新装了固态,重装了win10系统,所以下载了Submit Text3后右键发现没有这个选项

我是习惯了用Submit Text3的

所以就又搞了一下,很简单,觉得还是写下博客记录一下,以免以后忘了要百度很麻烦

先win+R 输入regedit 打开注册表编辑器

这里写图片描述

选择HKEY_CLASSES_ROOT下的 * 下的shell,右键,新建项,命名为Edit with Sublime Text3

然后在右边 新建-字符串值,命名为“Icon”,值为”C:\Program Files (x86)\Sublime Text3\sublime_text.exe,0″。(值是你电脑的sublime_text.exe目录)

这里写图片描述

这里写图片描述

然后右键Edit with Sublime Text3选择 新建–>项,命名为command,修改右边的默认值为”C:\Program Files (x86)\Sublime Text3\sublime_text.exe%1″

这里写图片描述

点击确认,回到桌面,选中一个文件,右键,啦啦啦,又看到Edit with Sublime Text3啦~

搞定

<think>好的,用户的需求是在按钮点击后,通过手动移动鼠标到目标窗口并右键单击来获取窗口句柄。我需要结合之前的对话历史和大漠插件的解决方案来回答这个问题。 首先回顾用户的上一个问题,他们使用了AutoHotkey和大漠插件来实现类似的功能,但现在可能希望用Python或其他方法?不过用户这次没有明确指定工具,但之前的引用提到了PyAutoGUI,所以可能需要考虑Python的方案。不过用户之前的回答里用的是大漠插件,所以可能还是需要延续这个方案。 用户当前的请求是,在点击按钮后,手动移动鼠标到目标窗口,然后右键单击,从而获取窗口句柄。这需要几个步骤:创建触发按钮,等待用户移动鼠标,捕获鼠标位置的窗口句柄,执行右键点击,返回句柄信息。 之前的回答中使用了AutoHotkey和大漠插件,所以可能需要继续使用这个组合。用户可能对AutoHotkey比较熟悉,或者希望用更直接的方法。需要确保代码能够正确绑定事件,在按钮点击后进入捕获模式,然后通过移动鼠标到目标窗口,右键单击时触发获取句柄的操作。 可能需要使用大漠插件的GetMousePointWindow函数来实时获取鼠标所在窗口的句柄,然后在右键单击时记录该句柄。需要处理事件循环,确保在按钮点击后开始监听鼠标移动,直到右键单击发生为止。 另外,用户提到的PyAutoGUI可能用于模拟鼠标点击,但获取窗口句柄可能需要其他库,比如win32gui或者pywin32。不过根据之前的引用,用户可能希望结合大漠插件,所以可能需要用COM对象在Python中调用大漠插件的方法。不过这可能比较复杂,或者用户更倾向于使用AutoHotkey的解决方案,因为之前的示例是AutoHotkey的代码。 需要明确的是,用户想要的是一个完整的流程:点击按钮→移动鼠标到窗口→右键单击→获取句柄。所以可能需要设置一个触发按钮,当点击按钮后,程序进入等待状态,监听鼠标移动,直到右键单击事件发生,然后捕获此时的窗口句柄。 在AutoHotkey中,可以使用热键或者循环检测来实现这一点。例如,点击按钮后设置一个标志位,进入循环,持续获取鼠标位置的窗口句柄,直到检测到右键单击事件,然后返回当前的句柄。 或者,使用大漠插件的功能,在按钮点击后调用GetMousePointWindow,然后执行右键单击,但用户需要手动移动鼠标,所以可能需要等待用户操作完成后再执行右键单击。这里可能需要一个提示,让用户移动鼠标到目标窗口后,按下某个键或点击右键,此时才捕获句柄。 可能需要调整代码结构,在按钮点击后显示提示信息,用户移动鼠标到目标窗口后右键单击,此时触发事件处理函数,获取句柄。这可能需要事件钩子的使用,例如监听鼠标右键按下的事件,在事件发生时获取当前窗口句柄。 总结步骤: 1. 创建GUI按钮,用户点击后启动捕获流程。 2. 提示用户移动鼠标到目标窗口并右键单击。 3. 监听鼠标右键事件,发生时获取当前鼠标位置的窗口句柄。 4. 返回该句柄给用户。 在AutoHotkey中,可以使用OnMessage或SetTimer来持续检测鼠标状态,但需要确保在捕获模式下才执行这些操作。大漠插件提供了相关的方法来获取窗口句柄和模拟点击,所以结合使用会更高效。 需要注意权限问题,可能需要以管理员权限运行程序,特别是对于某些受保护的窗口。此外,要考虑防病毒软件可能拦截模拟操作,需要用户信任程序。 另外,用户提到的PyAutoGUI可能作为替代方案,但PyAutoGUI本身没有直接获取窗口句柄的功能,可能需要结合其他库如pywin32的win32gui模块。例如,使用pyautogui获取鼠标位置,然后用win32gui的WindowFromPoint函数获取句柄。但这样可能需要更多的代码,且跨平台兼容性可能有问题。 用户可能更倾向于使用之前的大漠插件方案,所以应继续基于AutoHotkey和大漠插件来构建解决方案。确保代码示例中的按钮点击触发事件,进入捕获模式,等待用户移动和右键单击,然后正确获取句柄。 最后,要验证代码的正确性,确保各步骤衔接顺畅,异常处理完善,比如插件未注册时的提示,捕获失败时的处理等。</think>### 基于大漠插件的窗口句柄捕获方案 #### 实现步骤解析 1. **创建触发按钮** 通过AutoHotkey GUI构建交互界面,用户点击按钮后触发事件链: ```autohotkey Gui, MainGUI:New Gui, Add, Button, w200 h50 gStartCapture, 启动捕获模式 Gui, Show return ``` 2. **实时捕获窗口句柄** 使用大漠插件的$dm.GetMousePointWindow()$方法,结合鼠标移动事件监听: ```autohotkey StartCapture: ; 初始化大漠插件 dm := ComObjCreate("dm.dmsoft") if (dm.Ver() == "") { MsgBox 大漠插件未注册! return } ; 创建提示窗口 Gui, HintGUI:New Gui, Add, Text,, 请移动鼠标到目标窗口后`n按鼠标右键获取句柄 Gui, Show ; 设置鼠标钩子 OnMessage(0x0204, "WM_RBUTTONDOWN") ; 监听右键按下消息 return WM_RBUTTONDOWN() { global dm hwnd := dm.GetMousePointWindow() ; 获取当前窗口句柄 Gui, HintGUI:Destroy MsgBox 捕获成功!窗口句柄:%hwnd% } ``` 3. **操作验证机制** 通过$dm.GetWindowProcessId()$验证句柄有效性: ```autohotkey pid := dm.GetWindowProcessId(hwnd) if (pid == 0) { MsgBox 无效窗口句柄! return } ``` #### 增强型代码实现 ```autohotkey ; 主界面 #Persistent Gui, MainGUI:New Gui, Add, Button, w200 h50 gStartCapture, 开始捕获窗口句柄 Gui, Show return StartCapture: try { dm := ComObjCreate("dm.dmsoft") ver := dm.Ver() } catch { MsgBox 大漠插件初始化失败 return } ; 显示操作提示 SplashTextOn 300, 100, 操作指引, 移动鼠标至目标窗口`n单击右键获取句柄 ; 注册热键监控 Hotkey, ~RButton, CaptureHandler return CaptureHandler: hwnd := dm.GetMousePointWindow() WinGetTitle, title, ahk_id %hwnd% SplashTextOff MsgBox 窗口标题:%title%`n句柄值:%hwnd% return MainGUIGuiClose: ExitApp ``` #### 核心原理说明 1. **窗口层级定位** 通过Windows API的$WindowFromPoint$函数实现坐标到窗口的映射,该方法可穿透透明窗口但无法穿透系统级保护窗口[^1] 2. **事件驱动架构** 采用$OnMessage$函数监听WM_RBUTTONDOWN消息(消息代码0x0204),实现零延迟响应 3. **异常处理机制** 通过$try-catch$块捕获COM组件异常,结合$GetWindowProcessId$验证句柄有效性 #### 性能优化建议 1. **降低资源占用** 在等待阶段插入$Sleep 100$减少CPU占用: ```autohotkey While !GetKeyState("RButton", "P") { Sleep 100 hwnd := dm.GetMousePointWindow() } ``` 2. **多模态支持** 添加前台/后台模式切换: ```autohotkey Gui, Add, DropDownList, vMode, 前台模式|后台模式 Gui, Submit if (Mode = "后台模式") { dm.BindWindow(hwnd, "dx2", "windows", "windows", 0) } ``` #### 常见问题解决方案 | 问题类型 | 排查方法 | |---------|----------| | 捕获延迟 | 1. 检查防病毒软件<br>2. 降低屏幕分辨率 | | 跨进程失效 | 使用$dm_ret := dm.SetPath("C:\dm_soft")$设置插件路径 | | 权限不足 | 以管理员身份运行脚本 |
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值