公司原来的一套软件是用InstallShield Profession 6.10做安装的。
我修改了一下,加一个DLL调用(Delphi写的),这个DLL会显示一个窗体,没问题。
但是我升级到了InstallShield Profession 6.22+东方语言包时(为了显示中文),再运行时DLL中的窗体跳到下面去了,不在最上面了。如何解决?
还有一个问题,我初用InstallShield,安装了东东方语言包后,为什么InstallShield的IDE还是英文的,做出来折安装包还是英文界面,仅我在脚本中写的提示可以显示中文,怎么让它所有的界面变成中文的?

解决方案 »

  1.   

    1.in installshield you can call win32 api.call findwindow,bringwindowtoTop api to do this.
    2.you should use chinese resource in resources tab.or you can create a new project.
      

  2.   

    能给个调用Windows API例子吗?
    我的脚本里只有调用DLL的代码
    我看见InstallShield有个DefineDialog函数,它只能调用VC做的Dialog吗?
      

  3.   

    #define DLL_FILE  "MyDLL.dll;"   // Prototype MydllReturn in Mydll.dll.   prototype  Mydll.MydllReturn (INT, BYREF STRING);   STRING  svString;   INT     nValue;   NUMBER  nResult;   BOOL    bDone;#include "ifx.h"program   // Load the dll into memory.   nResult = UseDLL (DLL_FILE);   if (nResult = 0) then      MessageBox ("UseDLL successful \n\n.DLL file loaded.", INFORMATION);   else      MessageBox ("UseDLL failed.\n\nCouldn't load .DLL file.", INFORMATION);      abort;   endif;   // bDone controls the following while loop.   bDone = FALSE;   // Loop while bDone is FALSE.   while (bDone = FALSE)      // Disable the Back button in setup dialogs.      Disable (BACKBUTTON);      // Get a string from the euser.      AskText ("Enter an example string.", "Example string.", svString);      // Get the string length to pass to MydllReturn.      nValue = StrLength (svString);      // Call MydllReturn.       MydllReturn (nValue, svString);      // Display the string to observe how it was altered by MydllReturn.      SprintfBox (INFORMATION, "UseDLL", "MydllReturn() changed the string " +                 "to: %s", svString);       // Give the user a chance to do another example.      if (AskYesNo ("Do another example?", YES) = NO) then         bDone = TRUE;      endif;   endwhile;   // Remove the dll from memory.   if (UnUseDLL (DLL_FILE) < 0) then      MessageBox ("UnUseDLL failed.\n\nDLL still in memory.", SEVERE);   else      MessageBox ("UnUseDLL successful.\n\n.DLL file removed from memory.",                 INFORMATION);   endif;endprogram
      

  4.   

    知道了,调用API和调用DLL是一样的(API本身就是Windows DLLs中的函数)
    十分感谢 kingzai() 大侠的帮助,谢谢。