欢迎光临
我们一直在努力

shell_visualbasic教程

建站超值云服务器,限时71元/月

希望某一VB程序利用Shell执行某一个外部程序(假设是notepad.exe)之后,就一直等到此一程序结束执行时,才回到VB程序继续执行,该怎么办到呢?

当我们调用Shell时,会传回一个数值,此一数值称为ProcessId,利用此一ProcessId,我们可以调用OpenProcessAPI取得ProcessHandle,然后再利用ProcessHandle调用WaitForSingleObject,即可等待被Shell执行的程序执行完毕,才继续向下执行。细节如下:

1.API的声明:

ConstSYNCHRONIZE=&H100000
ConstINFINITE=&HFFFFFFFF
PrivateDeclareFunctionOpenProcessLib”kernel32″(ByValdwDesiredAccessAsLong,ByValbInheritHandleAsLong,ByValdwProcessIdAsLong)AsLong
PrivateDeclareFunctionCloseHandleLib”kernel32″(ByValhObjectAsLong)AsLong
PrivateDeclareFunctionWaitForSingleObjectLib”kernel32″(ByValhHandleAsLong,ByValdwMillisecondsAsLong)AsLong

注:如果以上的声明放在「一般模块」底下,应将Declare之前的Private保留字去掉,并且在Const之前加上Public保留字。

2.程序范例:(以执行Notepad程序为例)

DimpIdAsLong,pHndAsLong分别声明ProcessId及ProcessHandle变数

pId=Shell(“Notepad”,vbNormalFocus)Shell传回ProcessId

pHnd=OpenProcess(SYNCHRONIZE,0,pId)取得ProcessHandle
IfpHnd<>0Then
CallWaitForSingleObject(pHnd,INFINITE)无限等待,直到程序结束
CallCloseHandle(pHnd)
EndIf->

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » shell_visualbasic教程
分享到: 更多 (0)