我们使用适用于 Windows 6.0 版的 IBM Personal Communications iSeries Access。启动程序时,您最初会收到一个登录提示,允许您输入服务器、用户名和密码。
然后,它为您提供服务器本身的登录屏幕,您必须再次登录。在两次登录之间,我正在尝试制定一个"启动宏"
我现在没有任何内容,因为我无法弄清楚如何从会话中获取一个特定值,即用户名。
我可以获取屏幕标题,会话名称,宏名称,但我无法弄清楚如何获取用户名。我已经尝试了我能想到的字符串和"变量"名称的所有可能组合,但没有任何东西。
我已经搜索了网络,我所能找到的就是如何记录和自动登录到绿屏,这不是我想要的。
为了清楚起见,我只需要用于登录个人通信iSeries Access for Windows程序的用户名,在绿屏登录之前。
需要注意的是,IBM i Access for Windows 不仅仅是 5250 模拟器。 有一个 ODBC 驱动程序、一个打印机模拟器、AFP 打印机驱动程序和 i 的图形导航器。 IBM i 登录弹出窗口不是来自 5250 仿真器。 它来自较低级别的 IBM i Access for Windows 进程。 自己试试吧。 重新启动电脑。 不要启动模拟器。 务必启动 IBM i Navigator for Windows。 您将看到登录弹出窗口。
看起来您正在尝试自动执行"无登录"登录。 用户名可能存储在注册表中,具体取决于您使用的 Windows 版本和 IBM i Access for Windows 的版本。 Windows 7:启动> 所有程序> IBM i Access for Windows> IBM i Access for Windows 属性 选择"管理系统"选项卡,您将看到服务器和用户。 HKCU> 软件> IBM> Client Access Express> CurrentVersion> AS400 操作导航器> 应用程序管理> CurrentAdminSysUser> My Connections
我认为,为此,您需要进入iSeries Access附带的ActiveX控件。 这个小代码 C# 代码片段应该可以工作:
AS400System sys1 = new AS400System();
sys1.Define("mySystemNameHere");
if (sys1.IsConnected(cwbcoServiceEnum.cwbcoServiceAny) != 1)
{
sys1.Connect(cwbcoServiceEnum.cwbcoServiceTelnet);
}
String user = sys1.UserID;
sys1.Disconnect(cwbcoServiceEnum.cwbcoServiceAll);
您需要找到 cwbx.dll并将其添加为对项目的引用。
如果用户已从其他应用程序连接,则不会显示任何对话框。 程序将连接,获取连接的用户 ID,然后断开连接。 如果用户自登录以来从未连接过,则会出现登录对话框。