Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 关闭窗口中的其他应用程序_Vb.net_Windows Server - Fatal编程技术网

Vb.net 关闭窗口中的其他应用程序

Vb.net 关闭窗口中的其他应用程序,vb.net,windows-server,Vb.net,Windows Server,我有个问题,我在一个网络中,每个人都通过网络发送信息。虽然这真的很烦人,但我还是想终止MessageBox进程。在csrss.exe下运行,这是不可能的。当我浏览taskmanager时,我注意到,当打开csrss.exe的树结构时,有一个messagebox,我可以杀死它。有人知道如何在Visual Basic中实现这一点吗。一个简单的web搜索让我找到了一些很好的答案 经过一点努力,我想出了这个解决办法。它按名称(csrss)查找进程,然后按窗口标题(消息来源)过滤 Sub-Main() k

我有个问题,我在一个网络中,每个人都通过网络发送信息。虽然这真的很烦人,但我还是想终止MessageBox进程。在csrss.exe下运行,这是不可能的。当我浏览taskmanager时,我注意到,当打开csrss.exe的树结构时,有一个messagebox,我可以杀死它。有人知道如何在Visual Basic中实现这一点吗。

一个简单的web搜索让我找到了一些很好的答案

经过一点努力,我想出了这个解决办法。它按名称(csrss)查找进程,然后按窗口标题(消息来源)过滤

Sub-Main()
killProcesses(“csrss”、“消息来源”)
端接头
私有子进程(processName为字符串,mainWindowTitle为字符串)
Dim Process=Process.GetProcesses()。
其中(函数(p)p.ProcessName.Contains(ProcessName))。
其中(函数(p)p.MainWindowTitle.Contains(MainWindowTitle))
(当然,条款可以合并成一个)
对于进程中的每个p
p、 CloseMainWindow()
下一个
端接头
它是这样工作的。发送消息

C:\Users\djv>msg djv嘿,怎么了

得到消息

这就是任务

代码看到了什么


调用
p.CloseMainWindow()
时,它将关闭。它还将关闭与描述匹配的任何其他窗口,因为它不限于一个。这应该可以满足您的要求。

什么是
msg
确切地说?@djv您可以使用
WindowPattern.WindowOpenedEvent
尝试UI自动化。获取
csrss.exe
进程的进程ID,当您收到打开新窗口的通知时,将窗口进程ID与存储的进程ID进行比较,如果匹配,则关闭窗口。要关闭窗口,您需要获取Automation元素的WindowPattern并使用其close()方法(例如,
Dim pattern As object=Nothing),如果[element].TryGetCurrentPattern(WindowPattern.pattern,pattern),然后Dim wPattern=DirectCast(pattern,WindowPattern)wPattern.close()如果
,则结束。您可以找到
WindowPattern.WindowOpenedEvent
通知的VB.Net实现。顺便说一句,我从来没有在这个场景中测试过,所以就这样吧。