| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3655 人关注过本帖
标题:这个错错误在哪里?怎么搞都提示程序没有打开!我是新手,请指正!
只看楼主 加入收藏
uxljhc
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-5-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
这个错错误在哪里?怎么搞都提示程序没有打开!我是新手,请指正!
  '查找进程句柄的快照
    Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Integer, ByRef lProcessID As Integer) As Integer
    '获得第一个进程的句柄
    Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Integer, ByRef uProcess As PROCESSENTRY32) As Integer
    '获得下一个进程的句柄
    Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Integer, ByRef uProcess As PROCESSENTRY32) As Integer
    '关闭打开的API句柄
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
    Private Const TH32CS_SNAPPROCESS = &H2
    Private Const TH32CS_SNAPheaplist = &H1
    Private Const TH32CS_SNAPthread = &H4
    Private Const TH32CS_SNAPmodule = &H8
    Private Const TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + TH32CS_SNAPmodule

    Private Structure PROCESSENTRY32
        Dim dwSize As Integer
        Dim cntUseage As Integer
        Dim th32ProcessID As Integer
        Dim th32DefaultHeapID As Integer
        Dim th32ModuleID As Integer
        Dim cntThreads As Integer
        Dim th32ParentProcessID As Integer
        Dim pcPriClassBase As Integer
        Dim swFlags As Integer
        Dim szExeFile As String
    End Structure

    Private Sub demo()
        Dim MySnapHandle As Integer
        Dim ProcessInfo As PROCESSENTRY32
        MySnapHandle = CreateToolhelpSnapshot(TH32CS_SNAPall, 0)
        ProcessInfo.dwSize = Strings.Len(ProcessInfo)
        If ProcessFirst(MySnapHandle, ProcessInfo) <> 0 Then
            Do
                If Strings.Left(Strings.LCase(ProcessInfo.szExeFile), Strings.InStr(ProcessInfo.szExeFile, ".") + 3) = "notepad.exe" Then
                    '遍历进程,查找notepad.exe,找到后执行操作.......
                    MsgBox("写字本已打开")
                    Exit Do
                End If
            Loop While ProcessNext(MySnapHandle, ProcessInfo) <> 0
        Else
            MsgBox("写字本没有打开")
        End If
        CloseHandle(MySnapHandle)
    End Sub



    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        demo()

    End Sub
2016-06-01 14:48
uxljhc
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-5-24
收藏
得分:0 
怎么没有人回答呢?我自已顶一下、
2016-06-01 15:18
uxljhc
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-5-24
收藏
得分:0 
为什么在程序启动的时候 Process32First(MySnapHandle, ProcessInfo) 始终等于0呢?
2016-06-01 16:37
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:20 
在.NET环境下,枚举系统进程已经不用象在VB6下那么费事了。几行代码就可以搞定:
下面的例子是通过进程名判断,当然你也可以通过进程的ID搞定。
程序代码:
    Private Sub demo()
        Dim flags As Integer = 0
        Dim myProcesses() As Process = Process.GetProcesses
        For Each myProcess As Process In myProcesses
            TextBox1.Text += myProcess.ProcessName.ToString & vbCrLf'这里文本框是枚举进程的示例
            If myProcess.ProcessName = "notepad" Then
                flags = 0
                Exit For'如果找到,则确认已打开,必须退出循环。
            Else
                flags = 1
            End If
        Next
        If flags = 0 Then
            MsgBox("写字本已打开")
        Else
            MsgBox("写字本没有打开")
        End If
    End Sub

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2016-06-04 10:26
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:0 
你看,既不用调用API,又不用声明那么多常数,类型。  .NET将这些全部封装到了Process对象中了。
既然用.NET,就要抛弃VB6下编程的思维。说起容易,做起来难,我现在也不能完全做到。

[此贴子已经被作者于2016-6-4 10:32编辑过]


===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2016-06-04 10:28
快速回复:这个错错误在哪里?怎么搞都提示程序没有打开!我是新手,请指正!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018574 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved