我想得到控制面板中的各项的名称和说明信息,我用Loadlibary打开一个CPL文件先,然后用 TCPLApplet(GetProcAddress(hLib, 'CPlApplet'));来提取,大部分能获取到,可是有几个文件无法得到相关信息,有powercfg.CPL、input.CPL等文件,不知怎样才能解决????
希望有解决问题的代码!!!

解决方案 »

  1.   

    我用这个代码取了一些看能行:user cpl;
    procedure TForm1.Button1Click(Sender: TObject);
    var
    Proc : TCPlApplet;
    Info : TNewCplInfo;
    Mo : THandle;
    buf:pchar;
    info2:cplinfo;
    begin
      getmem(buf,255);
      MO:=LoadLibrary('Sysdm.cpl');
      //showmessage(GetErrorMessage(255));
      @Proc := GetProcAddress(mo,'CPlApplet');
      if @Proc<>nil then
      begin
        proc(handle,CPL_INIT,0,0);
        proc(handle,CPL_GETCOUNT,0,0);
        proc(handle,CPL_INQUIRE,0,LongInt(@info2));
        loadstring(mo,info2.idName,buf,255);
        label3.Caption:=buf;
        loadstring(mo,info2.idInfo,buf,255);
        label4.Caption:=buf;
      end;
      freemem(buf);
      FreeLibrary(Mo);
    end;  
      

  2.   

    首先感谢各位前辈的帮助,ksaiy提供的代码仍然不能提取powercfg.CPL、input.CPL等文件
      

  3.   

    我在win2000下,管理员的权限取不到,我已经花了好几天时间了,解决不了,急,急!!!
      

  4.   

    var
     Proc : TCPlApplet;
     Info : TNewCplInfo;
     Mo : THandle;
    begin
      MO:=LoadLibrary('main.cpl');
      @Proc := GetProcAddress(mo,'CPlApplet');
      if @Proc<>nil then
      begin
        Proc(Handle,CPL_NEWINQUIRE,0,LongInt(@Info));
        Image1.Picture.Icon.Handle:=Info.hIcon;
        Label1.caption:=Info.szName;
        Label2.caption:=Info.szInfo;
      end;
      FreeLibrary(Mo);
    end;上述代码取到的 Label1.caption:=Info.szName;
        Label2.caption:=Info.szInfo;
    若是英文信息,正确,若是中文信息则
    是乱码,为什么?