我希望脚本在后台运行,并在按下热键(如CTRL + 1)时将变量的内容“粘贴”到当前活动的文本字段中。我到目前为止的代码:
function Send($key)
{
$wsh.SendKeys($key)
}
$wsh = New-Object -ComObject WScript.Shell
$c1 = "Text to be sent #1"
$c2 = "Text to be sent #2"
$c3 = "Text to be sent #3"
$c4 = "Text to be sent #4"
$c0 = "Text to be sent #5"
switch ($check)
{
1 {Send($c1)}
2 {Send($c2)}
3 {Send($c3)}
4 {Send($c4)}
0 {Send($c0)}
default {Sleep(1)}
}
我尝试搜索,找不到任何有效的解决方案。 我目前使用具有similair功能的AutoIt脚本,虽然我没有写这个,但遗憾的是不知道作者。
#include < Misc.au3 >
Func _SendEx($ss, $warn = "")
Local $iT = TimerInit()
While _IsPressed("10") Or _IsPressed("11") Or _IsPressed("12")
If $warn <> "" And TimerDiff($iT) > 1000 Then
MsgBox(262144, "Avertissement", $warn)
EndIf
Sleep(50)
WEnd
Send($ss)
EndFunc;==>_SendEx
HotKeySet ("^1", "c1")
HotKeySet ("^2", "c2")
HotKeySet ("^3", "c3")
HotKeySet ("^4", "c4")
HotKeySet ("^0", "c0")
While True
Sleep (10000)
WEnd
Func c1 ()
_SendEx ("text 1")
EndFunc
Func c2 ()
_SendEx ("text 2")
EndFunc
Func c3 ()
_SendEx ("text 3")
EndFunc
Func c4 ()
_SendEx ("text 4")
EndFunc
Func c0 ()
_SendEx ("text 0")
EndFunc
我想在powershell中重新创建,如何为该函数分配热键?
答案 0 :(得分:1)
首先,没有本地方式来执行该操作。
如果您真的想继续这种方法,那么我建议您将该功能放在 .ps1
中然后,使用批处理脚本( .bat )
调用脚本最后,您可以为该批处理文件设置一个热键,您可以在每次启动Windows时注册该文件。
屏幕截图的分步方法如下:
希望它有所帮助。
答案 1 :(得分:0)
听起来您正在尝试模拟类似于许多罗技键盘所具有的宏按钮。如果您尝试运行脚本来侦听全局击键,然后在按下某个组合时触发粘贴,您可能需要专门查看来自user32.dll和kernel32.dll的pinvoke,SetWindowsHookEx,{{3} },FindWindow,FindWindowEx和BringWindowToTop
简而言之,您应该能够设置一个带有SetWindowsHookEx和WH_KEYBOARD_LL的钩子,在处理程序中使用FindWindow / FindWindowEx来定位目标窗口,使用BringWindowToTop,然后通过SendKeys发送^ V键以粘贴到该字段中。 powershell有很多键盘记录器Systems.Windows.Forms.SendKeys可以告诉你如何使用pinvoke并设置钩子。