当VB.NET WebBrowser遇到SSL错误(代理)时,如何禁止打开默认浏览器?
我有个小问题。我的应用程序使用最新安装的IE引擎。有时它可能会遇到问题,当它发生时.NET打开默认浏览器时出错(必须启用SSL才能连接到服务器,我使用的是代理) 由于我的应用程序,我想禁止显示任何外部浏览器当VB.NET WebBrowser遇到SSL错误(代理)时,如何禁止打开默认浏览器?,.net,vb.net,process,parent,.net,Vb.net,Process,Parent,我有个小问题。我的应用程序使用最新安装的IE引擎。有时它可能会遇到问题,当它发生时.NET打开默认浏览器时出错(必须启用SSL才能连接到服务器,我使用的是代理) 由于我的应用程序,我想禁止显示任何外部浏览器 我知道我可以使用Process.start和stop启动浏览器。但是如何识别新进程是由我的应用程序启动的(是否有任何进程或树的父进程?好的,下面是如何通过包装器检索任何给定进程的PPID(父进程id) 首先,您必须向System.Management添加一个引用 然后,您必须查询有问题的流程
我知道我可以使用Process.start和stop启动浏览器。但是如何识别新进程是由我的应用程序启动的(是否有任何进程或树的父进程?好的,下面是如何通过包装器检索任何给定进程的PPID(父进程id) 首先,您必须向
System.Management
添加一个引用
然后,您必须查询有问题的流程:
Dim pid As Int32 = Process.GetCurrentProcess.Id
Dim query As SelectQuery = New SelectQuery(String.Format("select * from Win32_Process where ProcessId = {0}", pid))
接下来,您需要将查询提供给a,并将结果放入a
最后选择第一个(希望也是唯一一个)进程,它是ParentProcessId
Dim ppid As Int32 = mobjProcesses(0)("ParentProcessId")
不幸的是,ManagementObjectCollection
不知道它正在枚举什么类型的对象,因此此时您必须查找并强制转换它,或者满足于后期绑定
当然,有一种方法可以通过互联网在本地实现这一点。这样,您必须从
ntdll.dll
调用该函数时,您将向其传递一个结构以及进程句柄等
成功返回后,您将在stuct的IntPtr InheritedFromUniqueProcessId
字段中找到父PID(您必须将其转换为Int32
)
现在我已经回答了问题“如何检索进程的父PID”,我刚刚意识到,尽管识别应用程序不愿意启动的任何浏览器进程可能会对您有所帮助。。。这很可能不会消除上述应用程序的潜在设计缺陷
它可能是一个的答案X',您可以使用ManagementScripting库来查询任何进程的父进程id。您能告诉我库的确切名称吗?我在Google上找不到任何具有此名称的VB.NET库(是第三方库吗?),我以为.NET中有一个内置库)它实际上是一个.NET库(包装WMI),您可以在名称
System.Management
Dim ppid As Int32 = mobjProcesses(0)("ParentProcessId")