2007 年 12 月
      1
2345678
9101112131415
16171819202122
23242526272829
3031   
上一年下一年   上一月下一月

站点统计
日志:516 篇
评论:331 篇
留言:31 篇
收藏夹:0 个书签
会员数:149 人

最新评论
上海地区广告伞太阳伞专业...
没附件了郁闷,还在的话麻...
已经发送到你的邮箱了,请...
写了一个进程间通讯的类....
行啊,二博客都一样
已经发送了附件到你的邮箱...
老马写的..可惜没的附件...
欢迎!
谢谢了。
第一次走进您的博客,^_...


[原创]VB6.0里实现"ShellWait"的一种简单方案(VB6.0代码)   [ 2007-07-13 | 作者:马大哈 | 来自:本站原创]

发现在编程中使用"ShellWait"功能的场合不少.

网上有不少其它的代码,好象代码量都不是很少......

我就在想,能不能利用VB的SHELL函数返回的PID呢?

于是就翻了一下MSDN,还真让我找到了一个API:GetProcessVersion

它只有一个参数,就是PID

如果PID所关联的进程不存在了,这个API就会返回0,否则返回非零值.

哈哈,这下方便了

于是就写成了这个东东了.

以下代码用记事本保存为ModShellEx.bas:

Attribute VB_Name = "ModShellEx"
'*************************************************************************
'**模 块 名:ModShellEx
'**说 明:增强SHELL函数
'**创 建 人:马大哈
'**描 述:紫水晶工作室 http://www.m5home.com/
'**日 期:2007年4月24日
'**版 本:V1.0
'*************************************************************************
Option Explicit

Private Declare Function GetProcessVersion Lib "kernel32" (ByVal ProcessId As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Function ShellEx(ByVal FileName As String, Optional ByVal WindowStyle As VbAppWinStyle = vbNormalFocus, Optional ByVal DelayTime As Long = -1)
'与SHELL函数一样的参数,不过是阻塞执行.(同步)
'FileName - 目标文件名
'WindowStyle - 程序运行时窗口的样式
'DelayTime - 等待的时间,单位为ms
'备注:
' DelayTime设置为-1时表示一直等待,直到目标程序运行结束
Dim I As Long, J As Long

I = Shell(FileName, WindowStyle)
Do
If GetProcessVersion(I) = 0 Then Exit Do
Sleep 10
J = J + 1
If DelayTime <> -1 And J > DelayTime \ 10 Then Exit Do
Loop
End Function

Public Function ShellOnce(ByVal FileName As String, Optional ByVal WindowStyle As VbAppWinStyle = vbNormalFocus)
'与SHELL函数一样的参数,但只将目标执行一次
'FileName - 目标文件名
'WindowStyle - 程序运行时窗口的样式
Static I As Long

If I <> 0 Then '如果有PID值就判断其是否正在执行
If GetProcessVersion(I) <> 0 Then Exit Function '如果正在执行,函数返回
End If
I = Shell(FileName, WindowStyle)
End Function

点击下载此文件

一只MM玉手引发的BT露富---摘于网络 蚊子升级了........

 qq624674099 于 2009-10-12 01:09 PM 发表评论: 

垃圾网 没东西值得学习 你的网站有漏洞.我已成功的进入管理后台.请下载最新的补丁.