100分 求 win8下postmessage的解决方法

程晨c 2014-03-20 11:27:40
以下是通过postmessage来启动迷你sql的函数,但在win7,win8下postmessage返回false

求解决方法及代码

暂时只剩20分,随后追加100


const
WM_MiniSQLMsg = WM_USER + $829; //定义接收消息索引号
cMiniSqlStart = $0002;


function StartMiniSq: Boolean;
var
vH: HWND;
i:boolean;
begin
vH := findwindow('TfrmMain', PChar('迷你sql'));
if vH = 0 then
begin
Result := False;
end
else
begin
i:=PostMessage(vH, WM_MiniSQLMsg, cMiniSqlStart, 0);
Result := i;
end;
end;

...全文
126 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sparklerl 2014-03-20
  • 打赏
  • 举报
回复
用GetLastError 看看错误是啥
程晨c 2014-03-20
  • 打赏
  • 举报
回复

procedure TForm1.btn1Click(Sender: TObject);
var
  vH: HWND;
  i:boolean;
  x:DWORD;
begin
  vH := findwindow('TfrmMain', PChar(cTitle));
  if vH = 0 then  Exit;
  i:=PostMessage(vH, WM_MiniSQLMsg, cMiniSqlStart, 0);
  if i=false then  ShowMessage('false');
  //x:=GetLastError();
  //ShowMessage(IntToStr(x));
  ShowMessage(SysErrorMessage(GetLastError));
end;

程晨c 2014-03-20
  • 打赏
  • 举报
回复
引用 1 楼 sparklerl 的回复:
用GetLastError 看看错误是啥
getlasterror 的返回值是 0
程晨c 2014-03-20
  • 打赏
  • 举报
回复
引用 2 楼 sololie 的回复:
你先确认是result是在哪里被设为false的,是获取句柄那里,还是在postmessage那里。 另外你用的什么版本delphi,注意ansichar 和 widechar
postmessage返回false 用d7,不是ansichar的问题
sololie 2014-03-20
  • 打赏
  • 举报
回复
你先确认是result是在哪里被设为false的,是获取句柄那里,还是在postmessage那里。 另外你用的什么版本delphi,注意ansichar 和 widechar

1,183

社区成员

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

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