z93620104 发表于 2008-11-12 11:22:29

达人速进:启用虚拟桌面的情况下QTP的使用

我们公司的产品属于安全应用方面的产品,安全性要求比较高,现在就加入了虚拟桌面的支持,可这样在使用QTP的过程中发现:虚拟桌面一起来,QTP就录不到启用后的一些对应操作了。我是新手,不知道这个问题如何解决,期待大家的帮助!谢谢

[ 本帖最后由 z93620104 于 2008-11-12 11:29 编辑 ]

xiaoshancom 发表于 2008-11-12 11:45:40

你说的多桌面是否是这样生成的桌面?
    ::SECURITY_ATTRIBUTES sa;
    sa.bInheritHandle = TRUE;
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.lpSecurityDescriptor = NULL;
   
    HDESK hD1 = CreateDesktop("w", NULL,
      NULL,0,MAXIMUM_ALLOWED,
      NULL);
    ::STARTUPINFO sui;
   :ROCESS_INFORMATION pi;
    ::ZeroMemory ((PVOID)&sui, sizeof(sui));
    sui.cb = sizeof (sui);
    sui.lpDesktop = _T("w");
    ::CreateProcess (NULL,"explorer",NULL,NULL,TRUE,
      CREATE_DEFAULT_ERROR_MODE|CREATE_SEPARATE_WOW_VDM,NULL,NULL,&sui,&pi);
    HDESK hD2 = GetThreadDesktop(GetCurrentThreadId());
    ::SwitchDesktop(hD1);
    ::Sleep(6000);
    ::SwitchDesktop(hD2);

z93620104 发表于 2008-11-12 12:36:01

你的是多桌面,是吗?我说的是虚拟桌面,也就是安全桌面,比如说进行登陆操作的时候启用了安全桌面,那么这时候你就只能对登陆框的输入进行密码输入的操作,绝大部分其他操作都无法进行,包括窗口监视

momang 发表于 2008-11-12 13:49:13

添加虚拟对象的办法行得通么

或是更改录制模式

xiaoshancom 发表于 2008-11-12 18:11:47

回复 3# 的帖子

如果是像windows登录窗口那样的安全性,那就很困难了。
不过windows提供了无人值守脚本饶过去。

你需要询问你公司的DEV能否写一个service之类的在此安全窗口启动前执行,或者直接hook/Inject到此安全窗口上。

不过我想,以上设想是很难的,因为你公司产品是安全产品,如果能的话,就已经证明了它的失效。可以让你公司的DEV提供类似微软解决方案的接口。

[ 本帖最后由 xiaoshancom 于 2008-11-12 18:13 编辑 ]
页: [1]
查看完整版本: 达人速进:启用虚拟桌面的情况下QTP的使用