| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 673 人关注过本帖
标题:[求助]请问高手怎么来实现一个程序来检测另一个程序是否已运行(已解决,谢 ...
只看楼主 加入收藏
蓟菜
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-3-3
收藏
 问题点数:0 回复次数:5 
[求助]请问高手怎么来实现一个程序来检测另一个程序是否已运行(已解决,谢谢puran
请问高手怎么来实现一个程序来检测另一个程序是否已运行,然后在Label控件里显示程序运行的字样.谢谢各位能指教.

[此贴子已经被作者于2007-3-23 3:32:48编辑过]


搜索更多相关主题的帖子: puran 检测 运行 
2007-03-17 17:16
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
win32api FindWindow

我的msn: myfend@
2007-03-17 17:30
蓟菜
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-3-3
收藏
得分:0 

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long '寻找窗口列表中第一个符合指定条件的顶级窗口的API调用
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal lpdw As Long, lpdwProcessId As Long) As Long '获取与指定窗口关联在一起的一个进程和线程标识符的API调用

Private Function ncnr(lpADDress As Long) As Integer ' 声明一些需要的变量
Dim lpdw As Long ' 储存 FindWindow 函数返回的句柄
Dim pid As Long ' 储存进程标识符( Process Id )
Dim pHandle As Long ' 储存进程句柄
lpdw = FindWindow(vbNullString, "程序名") ' 取得进程标识符
GetWindowThreadProcessId hwnd, pid ' 使用进程标识符取得进程句柄
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid) ' 在内存地址中读取数据
ReadProcessMemory pHandle, lpADDress, ByVal VarPtr(ncnr), 4, 0& ' 关闭进程句柄
CloseHandle hProcess
End Function

Private Sub Timer1_Timer()
Dim lpdw As Long
lpdw = FindWindow(vbNullString, "程序名")

If lpdw = 0 Then
Label1.Caption = "程序未加载"
Exit Sub
End If
Label1.Caption = "程序已加载"
End If
End Sub

这样写为什么不行啊!!错在哪里啊!谢谢高手指点

2007-03-18 20:21
蓟菜
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-3-3
收藏
得分:0 
帮帮我吧!在线等!谢谢了
2007-03-19 19:29
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
直接FindWindow就可以了.不需要其它的了.

我的msn: myfend@
2007-03-19 19:47
蓟菜
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-3-3
收藏
得分:0 
谢谢purana的帮助。

终于解决了.代码如下,供菜鸟参考
1、Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long '寻找窗口列表中第一个符合指定条件的顶级窗口的API调用
'在窗口中建立一timer控件和Label1控件,然后在代码窗口输入如下代码:
Private Sub Form_Load()
Timer1.Interval = 500
End Sub
'timer控件和Label1控件的代码如下:
Private Sub Timer1_Timer()
Dim hwnd As Long
hwnd = FindWindow(vbNullString, "程序名") '抓取"你需要的程序名"的窗口名称.
If (hwnd = 0) Then
Label1.Caption = "程序未加载"
ElseIf (hwnd <> 0) Then
Label1.Caption = "程序已加载"
End If
End Sub

2、Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long '寻找窗口列表中第一个符合指定条件的顶级窗口的API调用
'在窗口中建立一timer控件,然后在代码窗口输入如下代码:
Private Sub Form_Load()
Timer1.Interval = 500
End Sub
timer控件的代码如下:
Private Sub Timer1_Timer()
Dim hwnd As Long
hwnd = FindWindow(vbNullString, "程序名") '抓取"你需要的程序名"的窗口名称.
If (hwnd = 0) Then
If MsgBox("你没有打开程序!点击“确定”退出。点“取消”继续。", 49, "错误!") = 1 Then End
ElseIf (hwnd <> 0) Then
MsgBox "你已经打开了程序.点“确定”退出本程序", , "退出"
End
End If
End Sub
2007-03-23 03:31
快速回复:[求助]请问高手怎么来实现一个程序来检测另一个程序是否已运行(已解决 ...
数据加载中...
 
   



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

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