我的程序是在按了ctrl+alt+del后返回就会出A call to an OS function failed 的错误提示, 也是有用到xpmenu控件, 但如果去掉了xpmenu就无这个提示了. 我的环境是:winxp sp2,delphi7, xpmenud7(源程序修改日期是2006.4.28的版本). 现在想知道是xpmenu源代码哪里的问题, 看能否修复.
如果是在DELPHI下run程序, ctrl+alt+del 后返回DELPHI就会提示出现一个EOSERROR,然后光标就停在了XPMENU.PAS里面的procedure TXPMenu.DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); begin if FActive then MenueDrawItem(Sender, ACanvas, ARect, Selected); end; 最后的end;哪里的, 估计是 menudrawitem里面出问题了,但如在menudrawitem里面设置断点,从锁屏恢复后单步执行却没出错, 所以怀疑是锁屏恢复后的一瞬间drawitem对一个不能显示的资源进行操作了,但是哪个就找不到了...
还是没有解决.我测试的情况好象与XPMenu没有太大的关系.
刚刚找到原因。程序中用了一个Timer来判断鼠标是否移动到窗体上,此时用了windows函数: nowHandle := WindowFromPoint(Mouse.CursorPos);当屏保或者锁定计算机,解锁后,就会提示: a call to an os function failed.将nowHandle := WindowFromPoint(Mouse.CursorPos);屏蔽后不再出现该错误提示。希望以上的解答能给遇到相同问题的兄弟帮助!
以前没有出现这样的问题,最近出现,XPMenu一直都有的.去掉试试看.
Selected: Boolean);
begin
if FActive then
MenueDrawItem(Sender, ACanvas, ARect, Selected);
end;
最后的end;哪里的, 估计是 menudrawitem里面出问题了,但如在menudrawitem里面设置断点,从锁屏恢复后单步执行却没出错, 所以怀疑是锁屏恢复后的一瞬间drawitem对一个不能显示的资源进行操作了,但是哪个就找不到了...
nowHandle := WindowFromPoint(Mouse.CursorPos);当屏保或者锁定计算机,解锁后,就会提示:
a call to an os function failed.将nowHandle := WindowFromPoint(Mouse.CursorPos);屏蔽后不再出现该错误提示。希望以上的解答能给遇到相同问题的兄弟帮助!