vbnet 进程监控,监控Acad开启的数量,并且添加到开机启动

1# 自定义函数,添加到注册表

 1 Public Sub StartRunRegHKLM()
 2 
 3         REM HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Microsoft \ Windows \ CurrentVersion \ Run
 4 
 5         Dim strName As String = Application.StartupPath + "\" + Application.ProductName + ".exe"
 6 
 7         Dim strNewName As String = System.IO.Path.GetFileNameWithoutExtension(strName)
 8         If Not System.IO.File.Exists(strName) Then Return
 9         Try
10             Dim Rkey As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run", True)
11             If IsNothing(Rkey) Then
12                 Rkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run")
13                 Rkey.SetValue(strNewName, Chr(34) & strName & Chr(34)) '修改注册表,使程序开机时自动执行.
14             Else
15                 Rkey.SetValue(strNewName, Chr(34) & strName & Chr(34)) '修改注册表,使程序开机时自动执行。 
16             End If
17         Catch ex As Exception
18             MessageBox.Show(ex.Message, "StartRun") ' //MessageBox.Show(ex.Message);
19         End Try
20     End Sub
View Code

 2# timer 事件中写入处理机制,不笔者限制ACAD程序最多运行2个

 

 1 Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
 2         Dim listacad = CheckAppProcess("acad"), proAcad As Process
 3         If listacad.Count > 2 Then
 4             Me.Timer1.Stop()
 5             If MessageBox.Show("进程数量超过服务器的载荷!请排队等候", "AutoCAD 报告", MessageBoxButtons.OK, MessageBoxIcon.Warning) = DialogResult.OK Then
 6                 For index = listacad.Count - 1 To 2 Step -1
 7                     proAcad = listacad(index)
 8                     If Not proAcad.HasExited Then proAcad.Kill()
 9                 Next
10                 Me.Timer1.Start()
11             End If
12         End If
13     End Sub
View Code

3# 读取进程的数量

 

1 Public Function CheckAppProcess(appName As String) As List(Of Process)
2         Dim pros As Process() = Process.GetProcesses()
3         Dim processAcad As List(Of Process) = New List(Of Process)()
4         For Each p As Process In pros
5             If p.ProcessName = "acad" Then processAcad.Add(p)
6         Next
7         Return processAcad
8     End Function
View Code

 4# 最后将相关的启动timer空间的语句写入到程序开始

 

1  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
2         Me.Timer1.Interval = 3000
3         Me.Timer1.Start()
4     End Sub
View Code

 

运行开机启动需要提权到管理员权限

https://www.cnblogs.com/zbfamily/p/6269335.html

转载于:https://www.cnblogs.com/NanShengBlogs/p/10973508.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值