如何在Windows上远程阻止和解除阻止任何应用程序

问题描述:

我正在使用Java套接字创建程序,在该套接字中捕获客户端桌面并向客户端发送消息。它的工作正常,但现在我想拦截记事本,MS-Word等客户端应用程序。如何在Windows上远程阻止和解除阻止任何应用程序

我该怎么做? 谢谢。

+0

您可以使用JNA并调用User32的[''EnumWindows'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497(v = vs.85).aspx)或[' FindWindow'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v = vs.85).aspx)函数检查选定的应用程序并[杀死他们的进程](http: //msdn.microsoft.com/en-us/library/windows/desktop/ms686722(v=vs.85).aspx)后检查['GetWindowThreadProcessId'](http://msdn.microsoft.com/en-us /library/windows/desktop/ms633522(v=vs.85).aspx)。 – ecle 2012-03-01 15:11:06

使用纯Java API很难做到。 当你说“块”时,我不知道你是什么意思。最简单的方法是不时检查正在运行的进程,并通过执行来自java的taskkill杀死一个名为“notepad”的程序。

如果您希望实现应用程序不活动的效果,即用户看到记事本但无法输入,则可以执行以下操作。

你必须检查哪个应用程序在前面。没有干净的纯java解决方案,但你可以编写VBScript或JScript来完成这项任务并从java运行它。一旦检测到记事本位于最上方,将创建占用全屏幕的透明窗口(甚至可能是半透明窗口)。把它放在上面。用户将无法输入到记事本中,因为您的窗口位于顶部,但会看到它。

下面是引用了如何创建透明窗口:http://java.sun.com/developer/technicalArticles/GUI/translucent_shaped_windows/

好运。

+0

感谢您的回复AlexR。块意味着当客户想要打开记事本时不打开。或者其他的话我们可以说我们是在windows中阻止应用程序的执行。可能吗? – Amit 2012-03-02 08:15:31

+0

感谢AlexR ...我得到了使用taskkill的解决方案。 – Amit 2012-03-06 08:52:22