调用API函数FindExecutable和CreateProcess时需要注意的问题。

原创 2006年06月07日 16:09:00

下面是一个打开指定文件的函数,用到了API函数FindExecutable、CreateProcess和ShellExecute,需要注意的是,通过FindExecutable找到的关联文件字符串strResult在返回时,后面会有很多null(asc=0),不把这些null去掉就无法打开指定的文件,只会打开一个空的文件,所以要写一个专门去掉null的函数,不知道VB里面有没有这样的函数 :)。

Public Function GF_lSpawn(ByVal sFileName As String,  Optional ByVal bWait As Boolean = True) As Long
    Dim strResult       As String * 260
    Dim lResult         As Long
    Dim start           As STARTUPINFO
    Dim proc            As PROCESS_INFORMATION
    Dim rc              As Long
    Dim strCommandLine  As String
   
    On Error GoTo ErrProc
    
    lResult = FindExecutable(sFileName, "", strResult)
   
    If Asc(Left(strResult, 1)) = 0 Then
        MsgBox "没有可以打开" & sFileName & "文件的软件!"
        Exit Function
    End If
   
    If bWait Then
        start.cb = Len(start)
        start.lpReserved = vbNullString
        start.cbReserved2 = 0
        start.lpReserved2 = 0
        strCommandLine = My_Trim(strResult) + " " + My_Trim(sFileName)
        rc = CreateProcess(vbNullString, strCommandLine, ByVal 0, ByVal 0, False, NORMAL_PRIORITY_CLASS, ByVal 0, vbNullString, start, proc)
        
        rc = WaitForSingleObject(proc.hThread, INFINITE)
        
        rc = CloseHandle(Proc.hThread)
    Else
        ShellExecute 0, "open", strFileName, "", "", SW_SHOWNORMAL
    End If
   
    GF_lSpawn = rc
   
    Exit Function
   
ErrProc:
   
    GF_lSpawn = 0
    MsgBox "打开文件出错,错误信息:" + Err.Description
   
End Function

Public Function My_Trim(ByVal strSrc As String) As String
    Dim i           As Integer
    Dim str         As String
    Dim strDesc     As String
   
    str = ""
    strDesc = ""
   
    For i = 1 To Len(strSrc)
        str = Mid(strSrc, i, 1)
        If Asc(str) <> 0 Then
            strDesc = strDesc + str
        End If
    Next i
   
    My_Trim = strDesc
   
End Function

在使用分组操作时的几个注意事项

注意事项一: 如果没有groub   by子句,则在select子句中只允许出现统计函数,其他任何字段都不允许出现。 错误范例:select   deptno,count(empno)    fr...
  • q1054261752
  • q1054261752
  • 2015年11月07日 16:24
  • 525

[数据库]关于设计表时应该注意的问题

如有错误欢迎大家指出。这段时间在家里,做了点修正。 1、慎重选择表名。 有两种选择: 按照多数开发语言的命名规则。比如(myCustomer)。 按照多数开源思想命名规则。比如(my_cust...
  • SunnyYoona
  • SunnyYoona
  • 2014年05月19日 10:25
  • 1467

C语言——使用scanf函数时需要注意的问题

转自:http://blog.csdn.NET/wayne92   scanf函数我曾经在这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好...
  • qq_31108501
  • qq_31108501
  • 2016年12月01日 18:21
  • 1516

前端和后端交互的一些原规范问题

应该怎么去规避一些不该属于自己的任务而被后台强加于自己?等等问题, 关于交互会给大家详细介绍9个方面的细节: 1.前端请求数据URL由谁来写? 在开发中,URL主要是由后台来写的,写好了给前端开发者...
  • xcymorningsun
  • xcymorningsun
  • 2017年01月20日 14:22
  • 1884

Ajax需要注意的几个问题

在应用Ajax时,需要注意安全问题、性能问题和浏览器兼容性问题,下面进行具体介绍。 一 安全问题 随着网络的普及,安全问题已经是一个不可忽略的重要问题了。由于Web本身就是不安全的,所以尽可能降低...
  • chengqiuming
  • chengqiuming
  • 2017年04月12日 10:49
  • 220

接口开发注意事项

第一:接口开发的流程问题。   接口开发的大致流程: 1.和第三方讨论需要实现哪些接口。 重点是要确定每个接口的具体功能。接口参数在开发过程中常常会有变动,所以讨论中一般不会明确定义。...
  • u010854543
  • u010854543
  • 2013年11月01日 23:35
  • 2585

CreateProcess函数详解之一

CreateProcess
  • eickandy
  • eickandy
  • 2015年09月23日 10:07
  • 2640

API接口设计 注意问题

摘要: 总结一下API接口开发过程中的注意事项 1、跨平台性 所谓跨平台是指我们的接口要能够支持不同的终端,比如Android、iOS、windowsphone以及桌面软件、网站等。如:不同的终端每页...
  • gb4215287
  • gb4215287
  • 2017年02月16日 09:50
  • 1117

使用变量的一般注意事项

看完代码大全第11章『使用变量的一般事项』,我想根据我们目前最容易遇到的以及对于我们目前最需要重视的方面,提炼出一些书中的精华。在这经典之上再进行浓缩一下。 先说一点知识:数据认知要想创建有效数据,那...
  • AndyNikolas
  • AndyNikolas
  • 2017年02月12日 16:36
  • 807

在书写高效 CSS 时会有哪些问题需要考虑?

1.样式是:浏览器是从右向左来解析一个选择器的 2.ID最快,Universal最慢 有四种类型的key selector,解析速度由快到慢依次是:ID、class、tag和universal 3.不...
  • xujie_0311
  • xujie_0311
  • 2014年12月30日 21:03
  • 1215
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:调用API函数FindExecutable和CreateProcess时需要注意的问题。
举报原因:
原因补充:

(最多只允许输入30个字)