51Testing软件测试论坛

标题: 关于使用Extern对象得到机器的当前登陆用户名 [打印本页]

作者: willturner    时间: 2011-3-24 11:07
标题: 关于使用Extern对象得到机器的当前登陆用户名

  1. Dim result, user, leng
  2. user = string(100, "*")
  3. leng = 100

  4. Extern.Declare micLong, "GetUserName", "advapi32.dll", "GetUserNameA", micString,micLong
  5. result = Extern.GetUserName(user, leng)
复制代码


原本在robot脚本中调用这个dll函数定义:
Declare   Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

改到用在QTP中以后,为什么一跑这段代码就出错呢?而且会引起QTP崩溃。求助高手如何在QTP中得到当前机器的登陆用户名。谢谢。

API的定义:
VB声明
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
说明
取得当前用户的名字
返回值
Long,TRUE(非零)表示成功,否则返回零。会设置GetLastError
参数表
参数类型及说明
lpBufferString,一个字串缓冲区,预先初始化成由nSize指定的长度。它将用于容纳用户名
nSizeLong,初始化成lpBuffer的长度。返回以后,它会包含载入lpBuffer的字符数量
示例
Dim s$, cnt&, dl&
cnt& = 199
s$ = String$(200,0)
dl& = GetUserName(s$, cnt)
Debug.Print Left$(s$, cnt); cnt

作者: lyscser    时间: 2011-3-24 11:11
直接用environment不行么,不见得robot用了QTP也一样用啊
作者: 风雪夜归人    时间: 2011-3-24 11:18
print Environment.Value("UserName")
作者: willturner    时间: 2011-3-24 11:18
lyscser 兄说得对,有点绕远了。。。

不过这个算不算一个QTP的bug,哈哈
作者: willturner    时间: 2011-3-24 11:25
也谢谢风雪夜归人




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2