Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 将GUI集成到控制台应用程序中 我有两个C++开发的独立控制台应用程序。我被要求为他们两个开发一个GUI。在这个GUI中,我收集了启动这些应用程序所需的一些参数。任何人都可以介绍如何将控制台应用程序与此GUI集成?是否可以从GUI启动应用程序而不查看控制台?应用程序在控制台中写入的内容是否可以重定向到日志文件_User Interface_Visual C++_Console_Integration - Fatal编程技术网

User interface 将GUI集成到控制台应用程序中 我有两个C++开发的独立控制台应用程序。我被要求为他们两个开发一个GUI。在这个GUI中,我收集了启动这些应用程序所需的一些参数。任何人都可以介绍如何将控制台应用程序与此GUI集成?是否可以从GUI启动应用程序而不查看控制台?应用程序在控制台中写入的内容是否可以重定向到日志文件

User interface 将GUI集成到控制台应用程序中 我有两个C++开发的独立控制台应用程序。我被要求为他们两个开发一个GUI。在这个GUI中,我收集了启动这些应用程序所需的一些参数。任何人都可以介绍如何将控制台应用程序与此GUI集成?是否可以从GUI启动应用程序而不查看控制台?应用程序在控制台中写入的内容是否可以重定向到日志文件,user-interface,visual-c++,console,integration,User Interface,Visual C++,Console,Integration,提前谢谢。看一看。可以使用不同的实现,并将链接到GUI库 Expect设计用于与CLI接口并与之交互(输入输出、读取输出)。根据选择的实现(有Perl/Java/Python和原始的Tcl),您可以使用相应的GUI工具包(例如Swing to Java)。从GUI开始: 1)尝试提取控制台应用程序中纯逻辑的部分,这些部分与在屏幕上显示内容无关。扔掉控制台内显示数据的部件 例如,您可以使用GUI工具包,它非常易于设置和使用 然后 2)如果希望应用程序将内容写入日志文件,则可以执行两项操作: a)

提前谢谢。

看一看。可以使用不同的实现,并将链接到GUI库

Expect设计用于与CLI接口并与之交互(输入输出、读取输出)。根据选择的实现(有Perl/Java/Python和原始的Tcl),您可以使用相应的GUI工具包(例如Swing to Java)。

从GUI开始:

1)尝试提取控制台应用程序中纯逻辑的部分,这些部分与在屏幕上显示内容无关。扔掉控制台内显示数据的部件

例如,您可以使用GUI工具包,它非常易于设置和使用


然后

2)如果希望应用程序将内容写入日志文件,则可以执行两项操作:

a)使用将标准输出重定向到文件的参数启动程序,例如:

./MyProgram > logfile.txt
b)只需打开一个文件并通过修改打印代码从应用程序中写入即可


我希望这能有所帮助。

我想你有两个明确的选择:

  • 扩展应用程序并将它们与GUI链接,从GUI进行函数调用
  • 创建一个GUI,它是一个独立的应用程序(由它自己编译,没有来自控制台应用程序的任何代码依赖项),在运行时调用(执行)控制台应用程序,传递从表单收集的参数或它提供的任何交互机制

  • 第二个选项通常更简单、更简洁,但如果控制台应用程序参数语法发生变化,则可能会“不同步”。

    要将GUI与命令行工具分离,您的GUI调用提供适当参数的现有程序

    您可以使用API函数。该调用接收一个结构,您可以在其中指定是否显示该命令的窗口

    查看链接中的示例,可以找到完整的创建流程示例

    这是纯Windows API的工作方式

    如果你正在进行C++/.NET开发,那么通过它,事情就容易多了

    如果你可以选择任何一种语言来实现它,我当然会选择.NET方式(甚至将语言更改为C#),这几乎是微不足道的(因为它自己管理所有API调用,并且你有一个健全的接口)

    您也可以通过shell重定向输出,但这相当不灵活,而且容易出错。请看一看,它是专门为将脚本修改为命令行C程序而设计的,并且有一个C API,可以非常简单地执行此操作。 作为奖励,您还可以获得程序的脚本功能。它有几种支持这种集成的方式:

    • 将Tcl解释器链接到程序中。有一个简单的API可以将Tcl数据结构转换为
      argv
      type
      char**
      结构。这使您可以调用程序并按原样使用命令行参数

    • 将管道生成到C/C++程序,并通过管道与之交互

    • 使用Tcl脚本中的命令参数生成程序

    • 其他更复杂的RPC构造(但您可能不需要这些)

    Tcl非常便携,可以在包括Windows在内的许多平台上运行。Tcl还附带了一个名为Tk的易于编程的GUI工具包。现代版本支持主题引擎,使其具有本机外观,因此您可以使Tk应用程序与本机windows应用程序非常接近


    深入讨论如何使用Tcl/Tk来完成您所询问的事情。

    应该不是问题。尽管该页面涉及Unix/X11,但不同的平台可以使用不同的实现。e、 g.Java变体显然是独立于平台的。我将尝试从我开发的gui调用应用程序,但我还将了解Expect如何工作,以防其他解决方案无法正常工作。再次感谢!非常有用。。。我没想过“>”这件事。其中一个应用程序是我写的,可以很容易地提取逻辑部分,但另一个是一个非常大和修改的应用程序。。。这可能很棘手。。。谢谢流重定向非常方便,有三种标准重定向:,当然是out,2>用于错误,无论打印到STDERR的是什么。我将尝试exec,看看会发生什么。谢谢!非常感谢,我想这就是我一直在寻找的解决方案。我使用WinApi32编写GUI,但也许我应该使用.NET。如果你觉得有用,你可以对答案进行投票(这就是这样的想法)。