计算机名称嗨jmpers,
我需要在 jmp 中为不同的用户构建一个应用程序,这意味着不同的用户将有不同的用户界面。 (这是同一个应用程序)我想知道是否有办法获取用户个人资料? 让我们说出 jmp 中的计算机名称、用户名或服务器名称? 这样做我可以决定打开哪个脚本
坦克
普尼尔回复:计算机名称对于 Mac 操作系统
尝试这个:
If( Host is( "Mac" ),username=Get Environment Variable( "USER" );
stamp="Test "||username||", "||char(today());
);
回复:计算机名称惊人的!谢谢回复:计算机名称您可以使用 For() 循环,也可以执行如下操作:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Consumer Preferences.jmp" );
uname = Get Environment Variable( "COMPUTERNAME" );
dt << New Column( "User", character, set each value( uname ) );
回复:计算机名称它可以工作。但是如果我有 10 行并且想要在所有行中都使用 uname 该怎么办?
我使用 for 循环吗?
回复:计算机名称您必须告诉 JMP 您要将值保存到 User 列的数据表中的哪一行。
uname = Get Environment Variable( "COMPUTERNAME" );
dt:user[1] = uname;
上面的代码会将“uname”的值保存到“user”列的第 1 行值
回复:计算机名称我需要获取计算机用户名并将其存储在数据表的列中。我正在使用以下脚本 -
uname = 获取环境变量( "COMPUTERNAME" );
dt:用户=uname;
其中 dt 是数据表,user 是列名。
但我收到以下错误 -
“无法设置‘用户’列的值,因为行号 (-1) 无效。”
有人可以告诉我这里出了什么问题吗?
回复:计算机名称<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />谢谢,JMP12 中的语法实际上是:
获取环境变量(“计算机名”);
回复:计算机名称我需要一些不能通过设置环境变量这样简单的事情来破解的东西。感谢 JohnP 提供的两种解决方案!
回复:计算机名称JMP 10 直接支持此查询
获取环境变量(“计算机名”)
最好的,
-马特
回复:计算机名称原帖还询问了计算机名称。 要获取计算机名称,请使用 Kernel32.dll 和方法名称 GetComputerNameA()。 所以它看起来像这样:
动态链接库=加载动态链接库( “Kernel32.dll” );
dll << 声明函数(
“获取计算机名称A”,
约定(STDCALL),
别名( “获取计算机名称” ),
精氨酸( Ansi 字符串, “计算机名” , 输出 ),
精氨酸( UInt64, “长度” , 更新 ),
返回(UInt32)
);
姓名 = ” “ ;
未长 =长度(姓名);
结果 = dll << GetComputerName(name, unlen);
展示(姓名);
dll << 卸载DLL();
约翰·P
回复:计算机名称约翰·P,
非常感谢!这正是我正在寻找的。无法将此标记为正确答案,因为我没有启动此线程。
回复:计算机名称这是我为从系统获取用户名而编写的一些 JSL。 这适用于在 Windows 7 上运行的 JMP 10。
动态链接库=加载动态链接库( “mpr.dll” );
dll << 声明函数(
“WNetGetUserA”,
约定(STDCALL),
别名( “获取用户名” ),
精氨酸( UInt8, “格式” , 输入 ),
精氨酸( Ansi 字符串, “用户名” , 输出 ),
精氨酸( UInt64, “长度” , 更新 ),
返回(UInt32)
);
用户名 = ” “ ;
未长 =长度(用户名);
结果 = dll << 获取用户名( 0 ,用户名,unlen);
展示(用户名);
dll << 卸载DLL();
首先,您需要加载系统DLL。 我对 Advapi32.dll 没有任何运气。 但我通过 mpr.dll 找到了我需要的东西。 请注意,我不需要指定 DLL 的路径,因为它位于我的系统路径上。
动态链接库=加载动态链接库(“mpr.dll”);
接下来,您需要声明要在 DLL 中调用的任何方法。 我想要使用的方法实际上称为 WNetGetUserA(),但通过定义别名,我可以简单地使用 GetUserName() 来调用它。
dll << 声明函数(
“WNet获取用户A” ,
约定(STDCALL),
别名( “获取用户名” ),
精氨酸( UInt8, “格式” , 输入 ),
精氨酸( Ansi 字符串, “用户名” , 输出 ),
精氨酸( UInt64, “长度” , 更新 ),
返回(UInt32)
);
现在我想定义要作为参数传递的变量。 我创建一个用户名并将其初始化为空白。 然后我使用 JMP 中的 length() 函数来获取刚刚创建的缓冲区的当前长度。
用户名 = ” “ ;
未长 =长度(用户名);
现在我可以调用该函数了。 请注意,第一个参数只是输入,因此我只使用常量而不是定义变量。 然后 show() 命令在拨打电话后显示我的用户名。
结果 = dll << 获取用户名( 0 ,用户名,unlen);
展示(用户名);
最后,我完成了,所以我清理干净。
dll << 卸载DLL();
我希望这对你有用。 如果您想出更好的方法,请告诉我们。
顺便说一句,使用 loadDLL 仅适用于 Windows。 Mac 上不支持它。 因此,我在脚本的顶部进行了检查。
名称默认为此处( 1 );
如果(主机是( 苹果 ),
打印( “抱歉,Mac 不支持此脚本。” );
停止();
);
享受,
约翰·P
回复:计算机名称有人可以帮助我了解调用 DLL 的语法吗?我想使用 Windows API GetUserName 函数获取用户的用户名。我不想查找用户名环境变量,因为它可能被欺骗。
Advapi32.dll
BOOL WINAPI 获取用户名(
_Out_ LPTSTR lpBuffer,
_Inout_ LPDWORD lpnSize
);
谢谢!
回复:计算机名称你好:
假设使用 Windows XP 和 JMP 8,可以通过 LoadDLL 命令检索 Windoz 变量(如果想要检索所有 ENV 变量,也可以使用 JMP 9)。
下面的示例使用“GetEnvironmentStrings”Windows 函数来检索所有全局环境变量(包括 COMPUTERNAME)并在数据表和数组中进行有趣的加载。
看:
http://www.nesug.org/Proceedings/nesug10/ad/ad04.pdf
此致,
-马特
回复:计算机名称你好,
我正在使用 jmp 8 是否有类似的功能可以检索计算机名称
坦克回复:计算机名称嗨,尼尔:
在 Windose 上,从开始菜单运行 cmd 将打开一个 DOS 窗口。 在提示符中键入“set”以获得活动环境变量的列表。
另外 - 右键单击桌面上的“我的计算机”图标 - 选择底部附近的“高级”选项卡环境变量按钮。
JMP 9 包含一个方便的功能,可以从环境中检索其中任何一项:
cname = 获取环境变量( "COMPUTERNAME" );
并且可以根据从那里返回的值进行相应的分支。
此致,
-马特回复:计算机名称这对我来说可以获取 Windows 上的当前用户名:
uname = Get Environment Variable( "USERNAME" );
回复:计算机名称非常感谢:)
有人可以将@bswedlove的回复标记为解决方案吗?