模拟发送WM_DROPFILES消息出现异常......

mdejtod 2010-05-22 10:25:15
procedure TfrmCollage.OnPhotoMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var Size: Cardinal;
DropFiles: PDropFiles;
Run: PChar;
MemHandle: THandle;
aFile : string;
begin
FSelectPhoto := Button = mbLeft;
if not FSelectPhoto then Exit;
aFile := TImageThumb(Sender).FileName;
size := 0;
Inc(Size, Length(aFile) + SizeOf(TDropFiles) + 1 );
MemHandle := GlobalAlloc(GMEM_ZEROINIT,Size);
DropFiles := PDROPFILES(GlobalLock(MemHandle));
with DropFiles^ do
begin
pFiles := SizeOf(TDropFiles);
pt := Point(0, 0);
fNC := False;
fWide := False;
end;
Run := Pointer(DropFiles);
Inc(Run, SizeOf(TDropFiles));
lstrcpy(Run, PChar(aFile));
Inc(Run, Length(aFile) + 1);
Run^ := #0;
PostMessage(Handle, WM_DROPFILES, MemHandle, 0);
GlobalUnlock(MemHandle);
GlobalFree(MemHandle);
在调试时,执行到最后一句时出现CPU窗口 但不报错,而且WM_DROPFILES这个消息能拦截到,正常获取到文件名,但是脱离IDE运行时,获取不到文件名
不知道什么原因?
在WIN 7系统下
...全文
266 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mdejtod 2010-05-24
  • 打赏
  • 举报
回复
水平有限,不明白楼上的说的是啥
再顶一下
gyk120 2010-05-23
  • 打赏
  • 举报
回复
Win7的UAC关掉之后再试试?
mdejtod 2010-05-23
  • 打赏
  • 举报
回复
每一句都执行成功,但最后一句,会弹CPU窗口,
脱离IDE运行时,就取不到文件名,

人都跑哪去了?难道是周未。。
cnzdgs 2010-05-23
  • 打赏
  • 举报
回复
判断一下各个函数调用是否成功,失败时将错误码输出以便分析原因。
另外可以试试“以管理员身份运行”是否正常。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧