51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1521|回复: 4
打印 上一主题 下一主题

[原创] 关于使用Extern对象得到机器的当前登陆用户名

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-3-24 11:07:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2011-3-24 11:11:03 | 只看该作者
直接用environment不行么,不见得robot用了QTP也一样用啊
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2011-3-24 11:18:10 | 只看该作者
print Environment.Value("UserName")
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2011-3-24 11:18:54 | 只看该作者
lyscser 兄说得对,有点绕远了。。。

不过这个算不算一个QTP的bug,哈哈
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2011-3-24 11:25:06 | 只看该作者
也谢谢风雪夜归人
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 01:11 , Processed in 0.071065 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表