【问题标题】:Osk.exe not killed properly and continu working in backgroundOsk.exe 未正确终止并继续在后台工作
【发布时间】:2022-10-19 04:31:01
【问题描述】:

我正在尝试以编程方式杀死 Osk.exe 的实例。

我有一个对话框,允许用户使用按钮启动 osk,如果他们不自己关闭它,我会通过关闭形式的代码关闭它。

我的代码在创建和关闭时看起来像这样。

    Public Sub ClavierCommandExecute()
        Dim path64 = "C:\Windows\winsxs\amd64_microsoft-windows-osk_31bf3856ad364e35_10.0.19041.1_none_60ade0eff94c37fc\osk.exe"
        Dim path32 = "C:\windows\system32\osk.exe"
        Dim Path = If(Environment.Is64BitOperatingSystem, path64, path32)
        Me.ProcessusClavier = Process.Start(Path)
    End Sub

    Public Sub FermerCommandExecute()
        Dim processOSK = Process.GetProcessesByName("osk")
        For Each proc In processOSK
            proc.Kill()
        Next
        Me.Close()
    End Sub

问题是,如果我这样做,osk 进程将继续在后台运行。我可以告诉它,因为当我锁定我的笔记本电脑时,它会打开 osk。如果它可以帮助我仍然在 Windows 10 64 位。

但是,如果我使用关闭按钮甚至通过任务管理器手动关闭它,一切正常。

通常这不会是一个问题,但我觉得它没有被正确杀死而造成了内存泄漏。

【问题讨论】:

  • 检查Process.GetProcessesByName("osk") 的返回值是多少。很可能进程名称是错误的,而您的 for each 什么也不做。
  • 感谢 Alejandro,实际上 GetProcessesByName 工作正常。我得到了 1 个名为 osk 的进程,它进入了循环。我的信念是,它附加了另一个过程,称为其他过程,我不会杀死它。或者64位的osk不能以这种方式被杀死。
  • 可能总是程序从其他文件启动另一个进程,或者您没有权限杀死它(如果您提升osk,可能会发生这种情况,您也需要提升才能杀死它,例如) . 64位与否在这里无关紧要。
  • 感谢亚历杭德罗的回答。我想朝那个方向挖掘,但我在那个主题上没有受过良好的教育。你能给我指出一些关于这方面的资源,这样我就可以在我身边尝试一些东西吗?感谢您的时间。

标签: 64-bit kill-process on-screen-keyboard


【解决方案1】:

好的,问题来自于我需要成为管理员才能正确杀死 OSK.exe。

我替换了简单的 processOSK.kill() 通过该代码,我可以以管理员身份通过 taskill 杀死它。

        Dim process As System.Diagnostics.Process = New System.Diagnostics.Process()
        Dim startInfo As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo()
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden
        startInfo.FileName = "taskkill.exe"
        startInfo.Arguments = "/im osk.exe"
        startInfo.Verb = "runas"
        process.StartInfo = startInfo
        process.Start()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 2020-12-27
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    相关资源
    最近更新 更多