当前位置: 代码迷 >> 汇编语言 >> SetClipboardData为啥不能直接用指针
  详细解决方案

SetClipboardData为啥不能直接用指针

热度:1751   发布时间:2013-02-26 00:00:00.0
SetClipboardData为什么不能直接用指针
SetClipboardData第二个参数为什么不能直接用程序定义好的字符串指针
而用内存管理函数分配的的指针就可以呢?
------解决方案--------------------------------------------------------
HANDLE SetClipboardData( UINT uFormat,HANDLE hMem); 
你调用代码是什么?后者不是point而是一个内存句柄。
------解决方案--------------------------------------------------------
用invoke GlobalAlloc,GMEM_FIXED,sizeof szDest + 1
返回的是个指向内存首地址的指针。我用这个指针没有问题啊
------解决方案--------------------------------------------------------
.386
.model flat,stdcall
option casemap:none

include user32.inc
include kernel32.inc
include windows.inc
includelib user32.lib
includelib kernel32.lib

.data
hMemory dd ?
.const

szDest db '这里的内容来自“剪切板操作api.exe”执行的结果',0
szCaption db 'ok',0
szText db '请右键粘贴!',0
szFormat db '%s',0

.code

start:
invoke OpenClipboard,NULL
invoke EmptyClipboard

invoke GlobalAlloc,GMEM_FIXED,sizeof szDest + 1
mov hMemory,eax
invoke wsprintf,hMemory,offset szFormat,offset szDest

invoke SetClipboardData,CF_TEXT,hMemroy

invoke wsprintf,offset szBuffer,offset szFormat1,hMemory
invoke CloseClipboard
invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
invoke ExitProcess,NULL
end start