关于电源管理powrprof中的EnumPwrSchemes回调函数问题

快活林 2008-10-04 11:25:25
使用jedi win32api 封装的powrprof
在EnumPwrSchemes中的回调函数定义为:
PWRSCHEMESENUMPROC = function(uiIndex: UINT; dwName: DWORD; sName: LPWSTR; dwDesc: DWORD; sDesc: LPWSTR; pp: PPOWER_POLICY; lParam: LPARAM): ByteBool; stdcall;


dwname返回电源使用方案名的字符个数
sname 返回指向电源使用方案名的指针

我的目的想把所有的电源使用方案名提取出来。
但在回调函数中使用字符串变量。定义赋值,getlasterror返回5

使用win32回调函数需要注意哪些问题
以及如何保存枚举出来的电源使用方案名
请高手指点
...全文
205 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
老之 2008-10-08
  • 打赏
  • 举报
回复
回调函数里要有返回值,不然就会只找到一个
function mypower(uiIndex: UINT; dwName: DWORD; sName: LPWSTR; dwDesc: DWORD; sDesc: LPWSTR; pp: PPOWER_POLICY; lParam: LPARAM): ByteBool; stdcall;
begin
Form1.Memo1.Lines.Add(sName);
Result := True;
end;
快活林 2008-10-07
  • 打赏
  • 举报
回复
function mypower(uiIndex: UINT; dwName: DWORD; sName: LPWSTR; dwDesc: DWORD; sDesc: LPWSTR; pp: PPOWER_POLICY; lParam: LPARAM): ByteBool; stdcall;
var
pname:array of char;
begin
i:=i+1;

end


失败,定义都不行~~~~~~~

呵呵~~~~~~~
快活林 2008-10-05
  • 打赏
  • 举报
回复
var i:integer;

i:=0;

function mypower(uiIndex: UINT; dwName: DWORD; sName: LPWSTR; dwDesc: DWORD; sDesc: LPWSTR; pp: PPOWER_POLICY; lParam: LPARAM): ByteBool; stdcall;
begin
i:=i+1;

end

能返回正确的电源管理方案数量

但在函数体中加入

form1.memo1.line.add(sname);

执行后会显示第一个方案名称,之后就退出EnumPwrSchemes,getlasterror返回5
如果在函数中使用字符串变量也会出现上述问题

五维思考 2008-10-05
  • 打赏
  • 举报
回复
变量用CHAR数组,不用STRING类型,试试
五维思考 2008-10-05
  • 打赏
  • 举报
回复
BOOLEAN EnumPwrSchemes(
PWRSCHEMESENUMPROC lpfnPwrSchemesEnumProc,
LPARAM lParam
);

typedef BOOLEAN (CALLBACK* PWRSCHEMESENUMPROC)(
UINT uiIndex, // power scheme index
DWORD dwName, // size of the sName string, in bytes
LPWSTR sName, // name of the power scheme
DWORD dwDesc, // size of the sDesc string, in bytes
LPWSTR sDesc, // description string
PPOWER_POLICY pp, // receives the power policy
LPARAM lParam // user-defined value
);

回调函数细节你是怎么写的?
panrongzeng 2008-10-04
  • 打赏
  • 举报
回复
你看看李维的《深入vcl》,里面有很详细的介绍,网上很多pdf下载,你下载来看看该章

1,183

社区成员

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

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