Macros 在VBScript宏中登录用户IBM Personal Communications

Macros 在VBScript宏中登录用户IBM Personal Communications,macros,vbscript,client,ibm-midrange,Macros,Vbscript,Client,Ibm Midrange,我们使用IBM个人通信iSeries访问Windows 6.0版。启动该程序时,最初会出现登录提示,允许您输入服务器、用户名和密码 然后,它会将登录屏幕显示给服务器本身,您必须再次登录。在这两次登录之间,我正在尝试制定一个启动宏 我现在没有任何内容,因为我无法从会话中获取一个特定值,即用户名 我可以获得屏幕标题、会话名、宏名,但我一辈子都不知道如何获得用户名。我尝试了我能想到的字符串和变量名的所有可能组合,但什么都没有 我在网上搜索过,我所能找到的就是如何录制并自动登录到绿色屏幕,这不是我想要的

我们使用IBM个人通信iSeries访问Windows 6.0版。启动该程序时,最初会出现登录提示,允许您输入服务器、用户名和密码

然后,它会将登录屏幕显示给服务器本身,您必须再次登录。在这两次登录之间,我正在尝试制定一个启动宏

我现在没有任何内容,因为我无法从会话中获取一个特定值,即用户名

我可以获得屏幕标题、会话名、宏名,但我一辈子都不知道如何获得用户名。我尝试了我能想到的字符串和变量名的所有可能组合,但什么都没有

我在网上搜索过,我所能找到的就是如何录制并自动登录到绿色屏幕,这不是我想要的


为了清楚起见,我只需要用于登录个人通信iSeries Access for Windows程序的用户名,即绿色屏幕登录前的用户名。

需要注意的是,IBM I Access for Windows不仅仅是5250 emulator。有一个ODBC驱动程序、一个打印机模拟器、AFP打印机驱动程序和i。IBMi登录弹出窗口不是来自5250模拟器。它来自一个较低级别的IBM i Access for Windows进程。你自己试试看。重新启动电脑。不要启动模拟器。请启动IBM i Navigator for Windows。您将获得登录弹出窗口


看起来您正在尝试自动执行“无登录”登录。用户名可能存储在注册表中,具体取决于您使用的Windows版本和IBM i Access for Windows的版本。Windows 7:Start>All Programs>IBM i Access for Windows>IBM i Access for Windows属性选择管理系统选项卡,您将看到服务器和用户。HKCU>Software>IBM>Client Access Express>CurrentVersion>AS400 Operations Navigator>Application Administration>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,然后断开连接。如果用户自登录后从未连接过,则会出现一个登录对话框。

对于我来说,它位于…>当前版本>环境>我的连接>主机名>通信>用户ID下,其中主机名是连接主机名。位置可能取决于连接的配置方式。更重要的是,我需要确保用于登录个人通信的用户帐户与通过windows驱动器映射连接到IFS的帐户相同,并在需要时提示重新映射。这看起来很有希望启动ISE,看看是哪种类型的powershell/.NET magic我可以在明天早上变魔术。我可以让它工作,但是有没有办法让.NET检查由另一个程序(例如Emulator)启动的另一个连接的状态?你必须让你的.NET程序也建立连接。如果用户已连接,则不会出现密码提示。它只需要连接,有一个用户id,然后断开连接。