VB列队调用外部程序运行文件

VB列队调用外部程序运行文件,第1张

    Const SYNCHRONIZE = &H100000

    Const INFINITE = &HFFFF

    Private Declare Function OpenProcess Lib "kernel32" (ByVal 

dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId

 As Long) As Long

    Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

    

    Sub RunExe(strCmd as string)

        Dim lProcessID As Long

        Dim lHandleID As Long

        Dim lReturVal As Long

        

        lProcessID = Shell(strCmd , vbNormalFocus)

        If lProcessID <> 0 Then

            lHandleID = OpenProcess(SYNCHRONIZE, 0, lProcessID)

            If lHandleID <> 0 Then

                lReturVal = WaitForSingleObject(lHandleID, INFINITE)

                CloseHandle(lHandleID)

            End If

        End If

    End Sub

调用这个函数即可,参数为一次执行的完整命令行

函数的功能是执行命令行,并等待其运行完毕

RunExe "C:\Procomm Plus\PROGRAMS\PW5exe C:\Procomm Plus\Aspect\Scripts_Temp\1was"

RunExe "C:\Procomm Plus\PROGRAMS\PW5exe C:\Procomm Plus\Aspect\Scripts_Temp\2was"

声明一个DLL过程,首先需要在代码窗口的"通用(General)"部分增加一个Declare语句。如果该过程返回一个值,应将其声明为\x0d\Function:\x0d\DeclareFunctionpublicnameLib"libname"[Alias"alias"][([[ByVal]variable[Astype][,[ByVal]variable[Astype]]])]AsType\x0d\如果过程没有返回值,可将其声明为Sub:\x0d\DeclareSubpublicnameLib"libname"[Alias"alias"][([[ByVal]variable[Astype][,[ByVal]variable[Astype]]])]\x0d\缺省情况下,在标准模块中声明的DLL过程,可以在应用程序的任何地方调用它。在其它类型的模块中定义的DLL过程则是模块私有的,必须在它们前面声明Private关键字,以示区分。下面分别介绍声明语句的各个组成部分。\x0d\(一)、指定动态库:\x0d\Declare语句中的Lib子句用来告诉VisualBasic如何找到包含过程的dll文件。如果引用的过程属于Windows核心库(User32、Kernel32或GDI32),则可以不包含文件扩展名,如:\x0d\DeclareFunctionGetTickCountLib"kernel32"Alias"GetTickCount"()AsLong\x0d\对于其它动态连接库,可以在Lib子句指定文件的路径:\x0d\DeclareFunctionlzCopyLib"c:/windows/lzexpanddll"_\x0d\(ByValSAsInteger,ByValDAsInteger)AsLong\x0d\如果未指定libname的路径,VisualBasic将按照下列顺序查找该文件:\x0d\①exe文件所在的目录\x0d\②当前目录\x0d\③Windows系统目录\x0d\④Windows目录\x0d\⑤Path环境变量中的目录\x0d\下表中列出了常用的 *** 作系统环境库文件。\x0d\动态链接库描述\x0d\Advapi32dll高级API服务,支持大量的API(其中包括许多安全与注册方面的调用)\x0d\Comdlg32dll通用对话框API库\x0d\Gdi32dll图形设备接口API库\x0d\Kernel32dllWindows32位核心的API支持\x0d\Lz32dll32位压缩例程\x0d\Mprdll多接口路由器库\x0d\Netapi32dll32位网络API库\x0d\Shell32dll32位ShellAPI库\x0d\User32dll用户接口例程库\x0d\Versiondll版本库\x0d\WinmmdllWindows多媒体库\x0d\Winspooldrv后台打印接口,包含后台打印API调用。\x0d\对于Windows的系统API函数,可以利用VB提供的工具APIViewer查找某一函数及其相关数据结构和常数的声明,并复制到自己的程序中。

就用shell函数 足够了

shell "cmdexe",vbhide

如果不加vbhide的ua会闪过一个黑屏 不爽

如果要执行cmd命令 shell "cmd /c net user>c:\1txt",vbhide

执行了net user命令 回显输出到了c:\1txt里

private function checkexeisrun(byval exename as string) as boolean

dim ps

'枚举进程

For Each ps In GetObject("winmgmts:\\\root\cimv2:win32_process")instances_ 

'循环进程

If ucase(psname) = ucase(exename) then 

 checkexeisrunning = True  

 exit function

 end If

 next

 end function

private sub command1_click()

shell "Aexe" '调用Aexe

timer1enabled=true '启动计时器

end sub

private sub timer1_timer()

if checkexeisrun("aexe")=false then '"aexe"就是程序名

'你要执行的命令

end if

end sub

'计时器interval属性越小响应时间就越快,但不要调太小,否则可能会无响应。

以上就是关于VB列队调用外部程序运行文件全部的内容,包括:VB列队调用外部程序运行文件、如何让VB调用外部的DLL、VB中如何调用外部程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9365848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存