代码之家  ›  专栏  ›  技术社区  ›  George Mauer

为我的应用程序获取交互式控制台的最简单方法

  •  0
  • George Mauer  · 技术社区  · 15 年前

    我想要一个简单的,交互式的方式来演示我的应用程序的中间层功能还没有一个UI创建。我想要一个交互式控制台。

    或者,我可以启动我的应用程序,从外部powershell窗口连接到进程appdomain,并获取对ServiceLocator的引用。这有可能吗?

    无论如何,我以前创建过IronRuby引擎并在作用域中设置变量,但如果我这样做的话,我基本上需要创建自己的控制台输入/显示机制。

    有人知道更好的方法吗?

    5 回复  |  直到 15 年前
        1
  •  2
  •   Amir Gonnen    12 年前

    你可以用这个 ConsoleShell
    比如:

    using System.Management.Automation;
    using System.Management.Automation.Runspaces;
    ...
    RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
    runspaceConfiguration.Cmdlets.Append(...);
    ConsoleShell.Start(runspaceConfiguration, Console.Title, Console.Title, new string[] { });
    ...
    

    ConsoleShell提供了输入/输出机制,包括制表符完成和命令行界面的其他特性。

        2
  •  1
  •   Jim Mischel    15 年前

    任何Windows应用程序都可以通过调用Windows AllocConsole API函数。不幸的是,.NET控制台类没有公开该功能。几年前,我写了一系列文章和一些代码来扩展.NET控制台接口,包括 AllocConsole公司 支持。不幸的是,DevSource似乎丢失了该系列的第一篇文章。

    以下是您需要的两个函数:

    [DllImport("kernel32.dll", SetLastError=true)]
    public static extern bool AllocConsole();
    
    [DllImport("kernel32.dll", SetLastError=true)]
    public static extern bool FreeConsole();
    

    您可以从我的网站下载完整的扩展控制台支持包: http://mischel.com/pubs/consoledotnet.zip

        3
  •  0
  •   Charlie Salts    15 年前

        4
  •  0
  •   LBushkin    15 年前
        5
  •  0
  •   Brian Schroer    15 年前

    这个 June 20 episode of the CodeCast podcast 采访了IronPython团队的jimmyschementi,他谈到了Silverlight中的IronPython交互式DLR控制台。以下是演示网站: http://ironpython.net/ironpython/browser/examples/dlrconsole/

    推荐文章