由于windows.pas中没有定义KLF_SETFORPROESS常数,因此当调用Loadkeyboardlayout()Activatekeyboardlayout()这两个API时不能使用KLF_SETFORPROESS参数。为此我修改了windows.pas。不过无法重新编译成Windows.DCU。用dcc32.exe [路径]windows.pas不能通过。显示找不到Program.dpr。请问各位先进如何解决?

解决方案 »

  1.   

    你修改的windows.pas本身就有错误吧?
      

  2.   

    修改前:
    const
      { Keyboard Layout API }
      {$EXTERNALSYM HKL_PREV}
      HKL_PREV = 0;
      {$EXTERNALSYM HKL_NEXT}
      HKL_NEXT = 1;  {$EXTERNALSYM KLF_ACTIVATE}
      KLF_ACTIVATE = 1;
      {$EXTERNALSYM KLF_SUBSTITUTE_OK}
      KLF_SUBSTITUTE_OK = 2;
      {$EXTERNALSYM KLF_UNLOADPREVIOUS}
      KLF_UNLOADPREVIOUS = 4;
      {$EXTERNALSYM KLF_REORDER}
      KLF_REORDER = 8;
      {$EXTERNALSYM KLF_REPLACELANG}
      KLF_REPLACELANG = $10;
      {$EXTERNALSYM KLF_NOTELLSHELL}
      KLF_NOTELLSHELL = 128;修改后:(加入了{$EXTERNALSYM KLF_SETFORPROCSS} KLF_KLF_SETFORPROCSS = 3;)
    const
      { Keyboard Layout API }
      {$EXTERNALSYM HKL_PREV}
      HKL_PREV = 0;
      {$EXTERNALSYM HKL_NEXT}
      HKL_NEXT = 1;  {$EXTERNALSYM KLF_ACTIVATE}
      KLF_ACTIVATE = 1;
      {$EXTERNALSYM KLF_SUBSTITUTE_OK}
      KLF_SUBSTITUTE_OK = 2;
      {$EXTERNALSYM KLF_SETFORPROCSS}
      KLF_KLF_SETFORPROCSS = 3;
      {$EXTERNALSYM KLF_UNLOADPREVIOUS}
      KLF_UNLOADPREVIOUS = 4;
      {$EXTERNALSYM KLF_REORDER}
      KLF_REORDER = 8;
      {$EXTERNALSYM KLF_REPLACELANG}
      KLF_REPLACELANG = $10;
      {$EXTERNALSYM KLF_NOTELLSHELL}
      KLF_NOTELLSHELL = 128;不行吗?
      

  3.   

    直接把Windows.pas文件拷到你的工程文件路径中。