OpenEdge 10.2A - 在 Windows Windows 10 上更新 1703 后,INPUT THROUGH 集不起作用
OpenEdge 10.2A - INPUT THROUGH set does not work after Windows Update 1703 on Windows 10
我们使用下面的代码来获取计算机的名称。
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 命令 相关。现在我将尝试用另一个 Progress 命令替换 INPUT THROUGH 语句,或者尝试用其他方法与现有的控制台应用程序通信。
我要做的第一件事是从命令 window.
验证 'hostname' 命令是否仍然正常工作
假设是,我会像这样编写您的代码段:
INPUT THROUGH VALUE( "hostname" ).
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
DISPLAY cHOST format "x(60)".
这可能会揭示比 "it no longer works" 更有用的错误消息。
既然 COMPUTERNAME 满足您的需求,但出于某些非常神秘的原因您必须使用 INPUT THROUGH,您也可以尝试:
INPUT THROUGH VALUE( "echo %COMPUTERNAME%" ).
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
DISPLAY cHOST format "x(60)".
看来问题可能不限于Openedge version 10。我是运行一个windows 10 winver 1703开发设备,使用Progress/Openedge 8.3,我不再能够执行这个。
def var a as char format "x(70)".
input through "echo %cd%" no-echo.
import unformatted a.
input close.
message a. pause.
这在 windows 服务器 2012 R2 上运行,使用 progress/openedge 8.3。
Where 不再有效,它只是在输入命令时从程序中退出。
由于这似乎是一个错误,在有人提出更好的解决方案之前,这就是我更改代码的方式:
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.
感谢您的帮助。
我们使用下面的代码来获取计算机的名称。
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 命令 相关。现在我将尝试用另一个 Progress 命令替换 INPUT THROUGH 语句,或者尝试用其他方法与现有的控制台应用程序通信。
我要做的第一件事是从命令 window.
验证 'hostname' 命令是否仍然正常工作假设是,我会像这样编写您的代码段:
INPUT THROUGH VALUE( "hostname" ).
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
DISPLAY cHOST format "x(60)".
这可能会揭示比 "it no longer works" 更有用的错误消息。
既然 COMPUTERNAME 满足您的需求,但出于某些非常神秘的原因您必须使用 INPUT THROUGH,您也可以尝试:
INPUT THROUGH VALUE( "echo %COMPUTERNAME%" ).
IMPORT UNFORMATTED cHost.
INPUT CLOSE.
DISPLAY cHOST format "x(60)".
看来问题可能不限于Openedge version 10。我是运行一个windows 10 winver 1703开发设备,使用Progress/Openedge 8.3,我不再能够执行这个。
def var a as char format "x(70)".
input through "echo %cd%" no-echo.
import unformatted a.
input close.
message a. pause.
这在 windows 服务器 2012 R2 上运行,使用 progress/openedge 8.3。
Where 不再有效,它只是在输入命令时从程序中退出。
由于这似乎是一个错误,在有人提出更好的解决方案之前,这就是我更改代码的方式:
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.
感谢您的帮助。