如何解决调用 osk.exe 的问题
在研究如何使 osk 可见时,我找到了下面的代码,创建了一个新的解决方案,添加了 2 个按钮,粘贴到代码中,它完美地工作。 当我将它添加到我一直在研究的解决方案中时,什么也没发生:
Public Class Form1
Declare Function Wow64disableWow64FsRedirection Lib "kernel32" (ByRef oldvalue As Long) As Boolean
Declare Function Wow64EnableWow64FsRedirection Lib "kernel32" (ByRef oldvalue As Long) As Boolean
Private osk As String = "C:\Windows\System32\osk.exe"
Private pOSK As Process = nothing
Private Sub Keyboard_Show()
'An instance is running
For Each pkiller As Process In Process.GetProcesses
If String.Compare(pkiller.ProcessName,"osk",True) = 0 Then pOSK = pkiller
Next
'If no instance of OSK is running than create one depending on 32/64 bit
For Each pkiller As Process In Process.GetProcesses
If Not (String.Compare(pkiller.ProcessName,True) = 0) And (pOSK Is nothing) Then
Dim old As Long
If Environment.Is64BitOperatingSystem Then ' returns true
'64 Bit
If Wow64disableWow64FsRedirection(old) Then ' returns false
pOSK = Process.Start(osk)
Wow64EnableWow64FsRedirection(old)
End If
Else
'32 Bit
pOSK = Process.Start(osk)
End If
Exit For
End If
Next
End Sub
Public Sub Keyboard_Show()
'An instance is running
For Each pkiller As Process In Process.GetProcesses
If String.Compare(pkiller.ProcessName,True) = 0) And (pOSK Is nothing) Then
Dim old As Long
If Environment.Is64BitOperatingSystem Then
'64 Bit
If Wow64disableWow64FsRedirection(old) Then
pOSK = Process.Start(osk)
Wow64EnableWow64FsRedirection(old)
End If
Else
'32 Bit
pOSK = Process.Start(osk)
End If
Exit For
End If
Next
End Sub
在我的实际项目上运行时,
If Environment.Is64BitOperatingSystem Then
返回 True
,但 If Wow64disableWow64FsRedirection(old) Then
返回 False
出于故障排除目的,我尝试避免使用整个子例程而仅使用 Process.Start("c:\windows\system32\osk.exe")
抛出异常:System.ComponentModel.Win32Exception: 'The requested operation requires elevation.'
想法?任何帮助将不胜感激!
解决方法
Bonjour,après beaucoup de recherche,j'arrive a ca : (/!\x86)
10 = 100
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。