Shell_VB.net_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

Shell

作者:黑客防线网安VB教程基地 来源:黑客防线网安VB教程基地 浏览次数:0

本篇关键词:程序执行Shell调用
黑客防线网安网讯:希望某一VB程序利用Shell执行某一个外部程序(假设是notepad.exe)之后,就一直等到此一程序结束执行时,才回到VB程序继续执行,该怎么办到呢?    当我们调用Shell时,会传回一个数值,此...
希望某一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->

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14523-1.html
网站维护教程更新时间:2012-04-03 01:08:21  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer