不知道你的参数是如何定义的,可以定义为 Byval sec as LONG
然后调用时将参数设置为0。这个方法是我在使用API函数CreateFile
时使用成功的,你试一下

解决方案 »

  1.   

    "可以定义为 Byval sec as LONG"
    你是说将Function ThreadProc(lpParameter As Variant)改成
    Function ThreadProc(Byval sec as LONG)吗?可是不行啊。
    CreateThread()的第三个参数是应当穿递线程函数的收地址,而VB中应当如何处理。
    Addressof是否可以在次应用?
      

  2.   

    我的范例中定义CreateThread是这样的:
    Private Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
    调用:
    lNull = 0
    lStackSize = 0
    lCreationFlags = CREATE_SUSPENDED
    uThread.Handle = CreateThread(lNull, lStackSize, lpfnBasFunc, lNull, lCreationFlags, lpThreadId)
    其中lpfnBasFunc是使用AddressOf函数获得的函数地址。
      

  3.   

    如果不是activeX工程,我知道好象除了vb7,无法实现多线程
      

  4.   

    如果不是activeX工程,我知道好象除了vb7,无法实现多线程
      

  5.   

    我记得
    TTT = CreateThread(Sec, 0, AddressOf ThreadProc, 0, 0, 0)
    应该是
    TTT = CreateThread(Sec, 0, AddressOf Module1.ThreadProc, 0, 0, 0)
      

  6.   

    to TechnoFantasy(www.applevb.com)
    是用了你的方法,还是返回错误“该内存不可写”.
    uThread.Handle = CreateThread()的第一个参数必须为SECURITY_ATTRIBUTES类型。
    VB中对NULL的使用只能是0领来替代吗?
    在VC中,我使用Null来替代第1、4个参数,可以执行。
      

  7.   

    1:把CreateThread的第一的参数申明为: ByRef As Any, 调用时使用 ByVal 0.
    2:ThreadProc的参数申明和CreateThread中保持一致。
      

  8.   

    在www.mvps.org找找  不推荐用vb直接写多线程,可以用VC。