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

[问题求助] 在powershell中执行ahk的代码遇到的问题

[复制链接]
发表于 2024-1-10 19:32:30 | 显示全部楼层 |阅读模式
本帖最后由 小白龙 于 2024-1-10 19:34 编辑

不知道有没有人分享过, 在powershell上执行ahk代码可以这么简单, 先从下面链接下载dll放到桌面, 然后执行代码即可
https://www.nuget.org/packages/AutoHotkey.Interop

开源地址:https://github.com/kaiser-chris/AutoHotkey.Interop

现在遇到一个问题, 这个DLL体积有点大,好像打包了两个版本的dll,一个x86的一个x64, 执行时, 会在临时文件夹中解包出对应的dll,
而我又不用x86, 只用x64的, 怎样修改源代码只留下x64的dll? 另外解压也需要时间, 怎样实现不解包到临时文件夹, 而是在当前文件夹下直接调用? 这样应该就快一些了, 求路过大佬支招, 感谢!
  1. Add-Type -Path "$HOME\desktop\AutoHotkey.Interop.dll"

  2. #create an autohtkey engine.
  3. $ahk = New-Object AutoHotkey.Interop.AutoHotkeyEngine

  4. $code = @'
  5. SayHello(name)
  6. {
  7. MsgBox, Hello %name%
  8. }
  9. '@
  10. $ahk.LoadScript($code)
  11. $ahk.ExecFunction("SayHello", "lucy")
复制代码
发表于 2024-1-20 14:49:57 | 显示全部楼层
试试将源码包src目录里的AutoHotkey.Interop单独解压出来
用文本方式打开AutoHotkey.Interop.csproj
将79-82行的去掉后用dotnet之类的重新编译
 楼主| 发表于 2024-1-20 19:11:05 | 显示全部楼层
回复 2# Five66


    多谢大佬指导, 我没有装VS, 能编译吗?
 楼主| 发表于 2024-1-20 19:20:55 | 显示全部楼层
回复 2# Five66


    powershell的 add-type 命令也支持将C#代码生成dll 但是, 懂的太少, 搞不定
发表于 2024-1-21 00:45:28 | 显示全部楼层
powershell的 add-type 命令基于单文件的
像这种基于项目的多文件得用生成系统
不一定要用vs
dotnet或者直接用系统自带的msbuild也行(安装了对应生成目标的话)
例如(路径换成自己的)

  1. "%systemroot%\Microsoft.NET\Framework64\v4.0.30319\msbuild" /p:Configuration=Release
复制代码

注释去掉资源引用后的源码http://ybshare.com/download/ibpvfziyt5
 楼主| 发表于 2024-1-21 08:49:15 | 显示全部楼层
回复 5# Five66


    多谢大佬指导, 我看下面注释掉的块中有 v2_AutoHotkey.dll , 看来也把v2的DLL也嵌入了? 难道还能执行V2版的AutoHotkey代码吗? 如果我的代码是v2的,那怎么切换版本呢? 我看解压到临时文件夹中的dll, 并没有v2_AutoHotkey.dll的情况

<!--
    <EmbeddedResource Include="x64\AutoHotkey.dll" />
    <EmbeddedResource Include="x86\AutoHotkey.dll" />
    <EmbeddedResource Include="x64\v2_AutoHotkey.dll" />
    <EmbeddedResource Include="x86\v2_AutoHotkey.dll" />
-->
发表于 2024-1-21 12:26:57 | 显示全部楼层
回复 6# 小白龙

好像是通过创建对象(实例)时的参数控制的,无参数时为默认版本1
参数是个AutoHotKeyVersion枚举,ps如果支持的话,可以直接用字符串"1"或"2"
 楼主| 发表于 2024-1-21 14:51:49 | 显示全部楼层
回复 7# Five66

多谢大佬, 确实可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 01:13 , Processed in 0.018346 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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