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

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

本帖最后由 小白龙 于 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")
复制代码

试试将源码包src目录里的AutoHotkey.Interop单独解压出来
用文本方式打开AutoHotkey.Interop.csproj
将79-82行的去掉后用dotnet之类的重新编译

TOP

回复 2# Five66


    多谢大佬指导, 我没有装VS, 能编译吗?

TOP

回复 2# Five66


    powershell的 add-type 命令也支持将C#代码生成dll 但是, 懂的太少, 搞不定

TOP

powershell的 add-type 命令基于单文件的
像这种基于项目的多文件得用生成系统
不一定要用vs
dotnet或者直接用系统自带的msbuild也行(安装了对应生成目标的话)
例如(路径换成自己的)
  1. "%systemroot%\Microsoft.NET\Framework64\v4.0.30319\msbuild" /p:Configuration=Release
复制代码

注释去掉资源引用后的源码http://ybshare.com/download/ibpvfziyt5

TOP

回复 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" />
-->

TOP

回复 6# 小白龙

好像是通过创建对象(实例)时的参数控制的,无参数时为默认版本1
参数是个AutoHotKeyVersion枚举,ps如果支持的话,可以直接用字符串"1"或"2"

TOP

回复 7# Five66

多谢大佬, 确实可以

TOP

返回列表