Windows 10上的Windows Update 1703之后,OpenEdge 10.2A - INPUT THROUGH设置不起作用

时间:2017-04-25 15:13:57

标签: set progress-4gl openedge windows-update

我们使用下面的代码来获取计算机的名称。

def new shared var cHost as char format "x(40)" no-undo. 
INPUT THROUGH hostname NO-ECHO. 
SET cHost. 
INPUT CLOSE.
DISPLAY chost.

我们更新了计算机(Windows 10 - 1703)后,它不再有效。似乎 SET cHost 是失败的部分。我尝试过 IMPORT UNFORMATTED cHost ,但它不起作用。

PS:我可以使用 OS-GETENV(“COMPUTERNAME”)获取计算机名称,但我必须使用 INPUT THROUGH 语句来完成。

编辑:它似乎不仅是10.2A的问题,而是更普遍的问题。此外,它不仅与主机名相关,而且与所有控制台应用程序 ms-dos命令相关。现在,我将尝试将 INPUT THROUGH 语句替换为另一个Progress命令(如果有),或尝试使用其他方法与现有控制台应用程序通信。

3 个答案:

答案 0 :(得分:0)

我要做的第一件事就是验证“主机名”'命令仍在命令窗口中正常工作。

假设我会将你的代码段编码为:

INPUT THROUGH VALUE( "hostname" ).
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
DISPLAY cHOST format "x(60)".

这可能会显示比#34更有用的错误消息;它不再有效"。

由于COMPUTERNAME符合您的需求,但您必须使用INPUT THROUGH出于一些非常神秘的原因,您也可以尝试:

INPUT THROUGH VALUE( "echo %COMPUTERNAME%" ).
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
DISPLAY cHOST format "x(60)".

答案 1 :(得分:0)

似乎问题可能不仅限于Openedge版本10.我正在使用Progress / Openedge 8.3运行Windows 10 winver 1703设备进行开发,我无法再执行此操作。

    def var a as char format "x(70)".

    input through "echo %cd%" no-echo.
    import unformatted a.
    input close.

    message a. pause.

使用progress / opensge 8.3在Windows Server 2012 R2上运行。

哪里不再有效,它只是在命中导入命令时退出程序。

答案 2 :(得分:0)

由于它似乎是一个错误,在有人提出更好的解决方案之前,这就是我改变代码的方式:

DEF VAR cHost AS CHAR FORMAT "x(40)" NO-UNDO. 
OS-CREATE-DIR VALUE("c:\temp").
OS-COMMAND SILENT VALUE("hostname >c:\temp\hostname.txt").
INPUT FROM VALUE("c:\temp\hostname.txt").
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
MESSAGE cHost.

此代码也可用于其他 ms-dos命令控制台应用程序

DEF VAR cHost AS CHAR FORMAT "x(40)" NO-UNDO. 
OS-CREATE-DIR VALUE("c:\temp").
OS-COMMAND SILENT VALUE("ECHO %cd% >c:\temp\result.txt").
INPUT FROM VALUE("c:\temp\result.txt").
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
MESSAGE cHost.

感谢您的帮助。