VB 用SendKeys 发送变量大写字母会变成小写字母的问题。

我想要的结果是,用SendKeys发送变量里的大写或者小写字母不会有任何改变。比如:发送A就是A,发送a就是a... 我想要的结果是,用SendKeys 发送变量里的大写或者小写字母不会有任何改变。比如:发送A就是A,发送a就是a 展开
 我来答
网海1书生
科技发烧友

2014-07-23 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
sendkeys本身就是模拟按键,所以键盘上的一些当前状态也肯定会起作用的,比如大小写锁定键如果锁定,那么发送的字母按键就会出现大小写相反的情况,这本来是正常现象,因为我们实际在键盘上操作就是这么个结果的,如果你要强行改变这种情况,反而显得违反常理了。
如果你确实要这么做,那么你除了要解决大小写的问题,还要解决输入法的问题,因为如果输入法打开的话,你发送的字母按键也会自动激活输入法窗口的,这同样也是你不想要的结果对吧?要解决的方法有多种,一种是在运行sendkeys之前,先把键盘恢复到初始状态,这个可以通过API函数解决;还有一种是不用sendkeys,改用API函数keybd_event
追问
改用API函数keybd_event 发送怎么发送呢
ljl88900
2014-07-23 · TA获得超过2661个赞
知道大有可为答主
回答量:2197
采纳率:100%
帮助的人:2633万
展开全部
本来可以用API来实现此功能,如果你一定要用Sendkeys,又不想改变CapsLock状态,可以用下面代码实现:

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Function SendkeyEx(zfc As String)
Dim S As String, S1 As String, i As Long
If GetKeyState(&H14) And &H1 Then
For i = 1 To Len(zfc)
S1 = Mid(zfc, i, 1)
If S1 >= "A" And S1 <= "Z" Then
S = S & LCase(S1)
Else
S = S & UCase(S1)
End If
Next
Else
S = zfc
End If
Sendkeys S
End Function

Private Sub Command1_Click()
Text1.SetFocus
Dim S As String, i As Long
S = "Abdr1ertSdf888"
SendkeyEx S
End Sub
更多追问追答
追问
如果不用sendkeys,用API怎么弄
追答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianqing20wen

2014-07-23 · TA获得超过2.4万个赞
知道大有可为答主
回答量:8226
采纳率:88%
帮助的人:5130万
展开全部
Private Sub Command1_Click()
Text1.SetFocus
SendKeys "A"
SendKeys "b"
End Sub

一点都没改变 一个textbox 一个按钮
更多追问追答
追问
你按CAPS LOCK 试试看,比如一个A 和b,它就会反过来,A变成a,b变成B。我想让它没有任何改变。怎么弄
追答
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Private Sub Command1_Click()
Text1.SetFocus
Dim s As String
s = "Ab"
If GetKeyState(&H14) And &H1 Then
SendKeys "{CAPSLOCK}"
SendKeys s
SendKeys "{CAPSLOCK}"
Else
SendKeys s
End If
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bdb9803
2014-07-23 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:1亿
展开全部
难道我们用不一样的VB?无论我怎么按Caps Lock,无论当前键盘状态是大写还是小写,执行SendKeys "A"一定是发送大写A,不可能发送小写a。你的代码呢?我再测试一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式