我在VBS中有以下代码可以完美运行。它查询AD以获取用户的全名:
Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
strFullName = objUser.Get("displayName")
MsgBox strFullName
我想在Foxpro 7中做同样的瘦身。任何人都有使用VFP 7或9的经验吗?
答案 0 :(得分:3)
sys(0)返回机器名和用户类似
的内容lcMachineUser = sys(0)
lcMachine = LEFT( lcMachineUser, AT( "#", lcMachineUser) -1 )
lcUserName = substr( lcMachineUser, AT( "#", lcMachineUser) +1 )
答案 1 :(得分:2)
好吧,看起来这些东西很老了......这是真的! ;) 我已经找到了一个解决方案,但是,有一天,这可以帮助某个人:)
loScript = Createobject("MSScriptcontrol.scriptcontrol.1")
loScript.Language = "VBScript"
TESTVBS = [Set objSysInfo = CreateObject("ADSystemInfo")] + chr(13)+chr(10)+;
[strUser = objSysInfo.UserName] + chr(13)+chr(10)+;
[Set objUser = GetObject("LDAP://" & strUser)] + chr(13)+chr(10)+;
[strFullName = objUser.Get("displayName")] + chr(13)+chr(10)
*[MsgBox strFullName]
loScript.executestatement(TESTVBS)
这就是你如何从Foxpro代码执行VBS ......两种不再是技术的技术:)
答案 2 :(得分:2)
这将从环境变量中获取用户名。
username = GETENV("UserName")
答案 3 :(得分:0)
我正在使用此功能:
FUNCTION Get_User()
LOCAL cUsrBuf, nUsrLen, cUserName
cUsrBuf = SPACE(20)
nUsrLen = 20
DECLARE GetUserName IN advapi32 AS GetUserName STRING @cusrbuf, LONG @nusrlen
=GetUserName(@cusrbuf, @nusrlen)
cUserName = LEFT(ALLTRIM(cusrbuf), LEN(ALLTRIM(cusrbuf)) - 1)
RETURN cUserName
ENDFUNC
我会避免使用SYS(0),因为: 在独立环境中使用Visual FoxPro时,SYS(0)返回1
仅当机器连接到网络时,SYS(0)返回机器名称,空格,数字符号(#)后跟另一个空格,然后返回当前的ID user(或运行Visual FoxPro的安全上下文)。