我要用VB制作了一个exe程序,用另外一个专业工具软件制作了一个图像检测的exe程序,我打算用VB的程序调用这个图像检测程序并接收true or false的判断结果,不知该如何实现?请大家指教。

解决方案 »

  1.   

    下面是一段用内存共享实现EXE通信的简单例子:
    '\\ Global memory management functions
    private Declare Function GlobalLock Lib "kernel32" (byval hMem as Long) as Longprivate Declare Function GlobalSize Lib "kernel32" (byval hMem as Long) as Longprivate Declare Function GlobalUnlock Lib "kernel32" (byval hMem as Long) as Longprivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest as Any, lpvSource as Any, byval cbCopy as Long)private Declare Function GlobalAlloc Lib "kernel32" (byval wFlags as Long, byval dwBytes as Long) as Longprivate Declare Function GlobalFree Lib "kernel32" (byval hMem as Long) as Long
        private mMyData() as Byte
        private mMyDataSize as Long
        private mHmem as Long
    public Enum enGlobalmemoryAllocationConstants
        GMEM_FIXED = &H0
        GMEM_DISCARDABLE = &H100
        GMEM_MOVEABLE = &H2
        GMEM_NOCOMPACT = &H10
        GMEM_NODISCARD = &H20
        GMEM_ZEROINIT = &H40
    End Enum
    '**************************************
    ' Name: Global memory
    ' Description:Allows you to read and wri
    '    te global memory blocks, which in turn a
    '    llows you to pass big chunks of data bet
    '    ween applications easily.
    ' By: Duncan Jones
    '
    '
    ' Inputs:None
    '
    '\\ --[CopyFromHandle]---------------------------
    '\\ Copies the data from a global memory handle
    '\\ to a private byte array copy
    '\\ ---------------------------------------------public Sub CopyFromHandle(byval hMemHandle as Long)
        Dim lRet as Long
        Dim lPtr as Long
        lRet = GlobalSize(hMemHandle)
        If lRet > 0 then
            mMyDataSize = lRet
            lPtr = GlobalLock(hMemHandle)
            If lPtr > 0 then
                ReDim mMyData(0 to mMyDataSize - 1) as Byte
                CopyMemory mMyData(0), byval lPtr, mMyDataSize
                Call GlobalUnlock(hMemHandle)
            End If
        End If
    End Sub
    '\\ --[CopyToHandle]-----------------------------
    '\\ Copies the private data to a memory handle
    '\\ passed in
    '\\ ---------------------------------------------public Sub CopyToHandle(byval hMemHandle as Long)
        Dim lSize as Long
        Dim lPtr as Long
        '\\ Don't copy if its empty
        If Not (mMyDataSize = 0) then
            lSize = GlobalSize(hMemHandle)
            '\\ Don't attempt to copy if zero size..
            
            If lSize > 0 then
                lPtr = GlobalLock(hMemHandle)
                If lPtr > 0 then
                    CopyMemory byval lPtr, mMyData(0), lSize
                    Call GlobalUnlock(hMemHandle)
                End If
            End If
        End If
    End Sub
    另外也可以考虑采用消息机制。