我在窗体上声明了:
Private Declare Function SetClipboardData Lib "user32" Alias "SetClipboardDataA" (ByVal wFormat As Long, ByVal hMem As Long) As Long
调用时:
BHandle = CreateCompatibleBitmap(SourceDC, rWidth, rHeight)
SetClipboardData 2, BHandle
时出现:
实时错误'453'找不到dll入口点 SetClipboardDataA in user32

解决方案 »

  1.   

    任何时候只有一个程序可以打开剪贴板,你打开了吗?
    OpenClipboard(hwnd)
    CloseClipboard()
      

  2.   

    注意,还要清空
     EmptyClipborad()
      

  3.   

    这是一个抓去屏幕的截图过程:
    Private Sub ScrnCap(Left As Long, Top As Long, Right As Long, Bottom As Long)    Dim rWidth As Long
        Dim rHeight As Long
        Dim SourceDC As Long
        Dim DestDC As Long
        Dim BHandle As Long
        Dim Wnd As Long
        rWidth = Right - Left
        rHeight = Bottom - Top
        SourceDC = CreateDC("DISPLAY", 0, 0, 0)
        DestDC = CreateCompatibleDC(SourceDC)
        BHandle = CreateCompatibleBitmap(SourceDC, rWidth, rHeight)
        SelectObject DestDC, BHandle
        BitBlt DestDC, 0, 0, rWidth, rHeight, SourceDC, Left, Top, &HCC0020    
        Wnd = Screen.ActiveForm.hwnd
        OpenClipboard Wnd
        EmptyClipboard
        SetClipboardData 2, BHandle'******问题点******
        CloseClipboard
        DeleteDC DestDC
        ReleaseDC 0, SourceDCEnd Sub
      

  4.   

    说个可能的题外话。。
    你最好用复制粘贴的方式来写申明,因为我经常遇到自己写申明时找不到dll入口的问题。
    而使用复制粘贴的方法就成功了。我也没懂。:)
      

  5.   

    原因终于查明:
    Private Declare Function SetClipboardData Lib "user32" Alias "SetClipboardDataA" (ByVal wFormat As Long, ByVal hMem As Long) As Long
    '我也是用API浏览器插入的
    原来是win32中的use32.dll中
    就没有"SetClipboardDataA" ,只有 SetClipboardData,把后面的‘A’去掉即可!
    呵呵,是请教一位高人看的!
      

  6.   

    系统的 API 函数申明不要自己乱写,从 API VIEWR 中 COPY 过来使用
      

  7.   

    "SetClipboardDataA",把最后的那个“A“去掉试试