SendInput %userInput% 导致我的计算机做一些非常奇怪的事情。有时它会注销,有时我的键盘箭头会被禁用,有时它会在 Windows 中无限次运行 cmd...
更新:这是在命令行中输入并运行的内容: runas /user:administrator cmd
更新:我认为我几乎遇到了问题,因此我编辑了问题以省略我现在认为不相关的内容。
当 SendInput 发生时,用户仍在键盘上输入数据,例如按下 win-key,那么这可能会导致系统注销,因为 win-key + l 是一个快捷键。对于正在发生的所有其他事情也必须如此。另一个观察结果是 SendInput 会跳过某些字符,例如 {enter} 等。它只在最后处理它们,当所有常规字符都放置到位时。我注意到最后,SendInput 仍然忙于做一些事情,也许是一些奇异的字符延迟到最后。因为用户认为输出完成,他最终再次按下快捷键,结合当前的sendInput导致系统崩溃。
更新:
如果有一个“!”,它也会变得很糟糕。用 SendInput 发送。
这是我粘贴到电子白板上的一个字符串:
dsjkfhjdsfsjdh!!!!!!!!!!!@@@@@@@@############$$$$$$$$ $$$%%%%%%%%%^^^^^^^^^^^^^&&&&&&&&&&&&& * ** * * (((((((((())))))))) ))) _ __ _ ++++++++++++++++=======------------000000000000000099999988888。
但是输出没有感叹号。像这样:
dsjkfhjdsfsjdh@@@@@@@$$$$$$$$$%%%%%%%%%&&&&&&&&&&& * ** * * ((((((((()))))) )))))))) _ __ _ +======------------000000000000000099999988888。
这是为什么?还有其他角色吗?我觉得感叹号很重要,我不想删除它们。有什么解决方法吗?
更新:比这更复杂。当我复制粘贴上面没有感叹号的字符时,它仍然会做一些奇怪的事情。
下面是一些最终 userInput 与 SendInput 组合并发送出去的代码:
StringReplace, contents, save_selection, ``, ````, All ; Do this replacement first to avoid interfering with the others below.
StringReplace, contents, contents, `r`n, %A_SPACE%, All ; Using `r works better than `n in MS Word, etc.
StringReplace, contents, contents, `;, ```;, All
;* loc_title origanally contains browser specification. Remove it.
StringGetPos, pos_delim, loc_title, - , R
length := StrLen(loc_title)
count := length - pos_delim
StringTrimRight, loc_title, loc_title, count