当前位置: 首页 > 知识库问答 >
问题:

在Inno安装程序中从运行命令行应用程序获取输出

闾丘树
2023-03-14

场景是我们编写了一个控制台应用程序,我们希望在Inno设置期间调用该应用程序并读取其输出。与此问题相反,当其他程序仍在运行时,必须从Inno设置读取此输出。输出将包含runnig应用程序的进度信息(double或int值),我们希望用ProgressGauge在Inno中显示这些信息。该应用程序是一个用C#编写的简单可执行程序,可以运行几秒钟到几分钟。

这可能吗?如果可能,是否可以在不冻结Inno设置的GUI的情况下完成(因为应用程序可能需要一些时间)?

共有1个答案

巫懿轩
2023-03-14

通过TLama指向进度条消息,我能够解决这个问题。

起初,我需要将进度条句柄从Inno传递到我的C#应用程序。为此,我创建了一个函数,它将以字符串的形式返回int指针

function GetProgressHandle(Param: String): String;
begin
  Result := Format('%d',[WizardForm.ProgressGauge.Handle]);
end;

并在运行部分调用我的应用程序时使用它:

[Run]
Filename: "{app}\myApp.exe"; Parameters: "{code:GetProgressHandle}"; ....
IntPtr pointer = new IntPtr(Int32.Parse(args[0]));
[DllImport("user32.dll")]
public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

public const uint PBM_SETRANGE = 0x401;
public const uint PBM_SETPOS = 0x402;
PostMessage(pointer, PBM_SETRANGE, (IntPtr)0, (IntPtr)(max << 16));    
PostMessage(pointer, PBM_SETPOS, (IntPtr)pos, (IntPtr)0);
 类似资料:
  • 问题内容: 我正在使用运行时从Java程序运行命令提示符命令。但是,我不知道如何获得命令返回的输出。 这是我的代码: 我尝试做,;但是没有返回任何东西。该命令的执行应返回两个数字,以分号分隔。我怎样才能在变量中打印出来? 这是我现在使用的代码: 但是我没有得到任何输出,但是当我自己运行该命令时,它可以正常工作。 问题答案: 这是要走的路:

  • 问题内容: 我正在尝试为新的Apple编程语言Swift的命令行应用程序获取键盘输入。 我扫描了文档无济于事。 有任何想法吗? 问题答案: 我设法弄清楚了,而没有陷入C: 我的解决方案如下: 较新的Xcode版本需要显式的类型转换(在Xcode 6.4中有效):

  • 问题内容: 所以我在这里有一个菜鸟般的时刻,我以前从未使用过命令行来运行Java程序,但现在我需要。我遇到的问题是,当我尝试运行程序时,出现ClassNotFoundException。我的课叫做OmadUpdate。我已经使用javac命令将OmadUpdate.java文件编译为OmadUpdate.class。我已经检查了目录,并且它们都绝对存在,但是当我运行java OmadUpdate命

  • 我下载了一个java程序,它由两个文件夹src和classes组成,分别包含源文件和类文件。现在,src和classes文件夹包含几个嵌套的子文件夹,其中最后一个子文件夹分别包含源文件和类文件。更准确地说,源文件和类文件的路径是src/edu/univ/。java和classes/edu/univ/。班假设包含main函数的文件是main。java,如何从命令行运行此程序。 我尝试过: 我也尝试过

  • 问题内容: 嗨,我正在开发一个需要我运行一些bash代码的应用程序,有没有一种方法可以将脚本硬编码到我的应用程序中然后运行它?例如(这是一个非常简化的示例) 我有以下方法来运行一行bash命令,但需要在多行中运行类似的内容。同样,上面的代码是一个非常简化的示例,我实际上在执行的操作必须通过脚本运行,而不能通过Java完成。我也想对它进行硬编码,因为我知道可以将脚本存储在手机上并使用以下命令运行它,

  • 问题内容: 我对Java的经验不是很丰富,这使我发疯。我编写了一个Java程序,需要从命令行运行它。 我可以从命令行编译它,它将在该文件夹中创建所有类,但是当我尝试时说: 线程“主”中的异常java.lang.NoClassDefFoundError:FileManagement / Main 事实是,我已经在远程计算机上尝试了相同的过程,并且工作正常。它不适用于我的。 问题答案: 如果您的课程在