【问题标题】:Use SendKeys to send Alt combinations to enter special characters使用 SendKeys 发送 Alt 组合以输入特殊字符
【发布时间】:2016-08-17 09:32:32
【问题描述】:

我想将 Alt 组合发送到屏幕键盘内的另一个窗口。 组合我的意思是当你按住 Alt 并输入一个数字或十六进制(必须为十六进制设置注册表键)组合时:

ALT down, Add press, 2 press, 5 press, 1 press, ALT up

我试过了

SendKeys.SendWait("%{ADD}251") 但它是 Alt+Add 2 5 1

SendKeys.SendWait("%{ADD}%2%5%1") 但它是 Alt+Add Alt+2 Alt+5 Alt+1

SendKeys.SendWait("%({ADD}251)") 但它是 Alt 然后同时按下其他键

Ref to MSDN

对使用 SendKeys 或其他类的解决方案有何建议?

[编辑] 解决方案:

CharCode 示例(枚举源的元素):ʊ = &H28A

Dim CharCodeUnicodeStr As String = Hex(CInt([Enum].Parse(GetType(Source), CharStr))).ToString SendKeys.SendWait("%{ADD}%" & ChrW(Convert.ToInt32(CharCodeUnicodeStr, 16)))

【问题讨论】:

    标签: vb.net keypress sendkeys


    【解决方案1】:

    将键放在括号内表示 ALT按住同时按下其他键。

    SendKeys.SendWait("%({ADD}251)")
    

    【讨论】:

    • @Lars :我刚刚意识到这与您的第三次尝试相同...我认为您尝试使用SendKeys 是不可能的。我会在大约一个小时内看到我能想出什么。
    • @Lars :好的,那个小时比预期的持续时间更长,对此感到抱歉(出现了意外的事情)。我会看看我是否可以尽快混合一些东西,同时我会尝试 SuperPeanut 的解决方案,因为它非常简单,如果它有效的话。
    • 好的,所以我尝试了SendInput WinAPI 函数的不同变体,但没有成功。您确定您的第三次尝试同时按下按键吗?因为不应该。这到底是为了什么?
    • 我会再试试这个带括号的方法,你很快就会收到回复。
    • SendKeys 的 MSDN 文章:“要指定在按下其他几个键的同时按住 SHIFT、CTRL 和 ALT 的任意组合,请将这些键的代码括在括号中。例如,指定在按下 E 和 C 的同时按住 SHIFT,使用“+(EC)”。”
    【解决方案2】:

    你试过了吗

    SendKeys.SendWait("%{ADD}%" & ChrW(&H251))
    

    这会将您的十六进制代码转换为字符。然后,如果您可以控制其他应用程序,则可以将此字符恢复为数字...

    【讨论】:

    • 我尝试了SendKeys.SendWait("%{ADD}%" & ChrW(Convert.ToInt32(i, 16))),因为我正在使用 var 作为 char 的代码。它不起作用。正如我提到的其他尝试一样,没有任何反应。
    • @Lars 你可以试试Convert.ToInt32(i)(去掉, 16
    • 抱歉正在工作。这只是错误的字符代码。 , 16 必须在那里。
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多