使用vbscript/QTP刷新系统变量

使用vbscript/QTP刷新系统变量,vbscript,qtp,sendmessage,hp-uft,system-variable,Vbscript,Qtp,Sendmessage,Hp Uft,System Variable,我想设置系统变量MQSERVER,以便使用QTP连接到MQ。每次从QTP更改此值时,我都需要重新启动QTP以反映更改 例如,在系统变量窗口中, MQSERVER=ABCD 使用 Set objWSH = CreateObject("WScript.Shell") Set objSystemVariables = objWSH.Environment("SYSTEM") objSystemVariables(MQVariableName) = MQVariableValue 该变量设置正

我想设置系统变量MQSERVER,以便使用QTP连接到MQ。每次从QTP更改此值时,我都需要重新启动QTP以反映更改

例如,在系统变量窗口中, MQSERVER=ABCD

使用

 Set objWSH = CreateObject("WScript.Shell")
 Set objSystemVariables = objWSH.Environment("SYSTEM") 
 objSystemVariables(MQVariableName) = MQVariableValue
该变量设置正确,但在连接到websphere MQ时不会反映在QTP代码中

当我重新启动QTP时,QTP立即正确读取env变量。你能告诉我如何使用下面的API方法吗。我在QTP中得到类型不匹配

lnRetVal = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, "Environment", 2, 1000, Null) 'Getting type mismatch here
使用连接到队列管理器的代码更新我的原始问题

我正在尝试做的最基本的事情是(如果不重新启动QTP,这是无法完成的)

1) 连接到队列管理器

2) 留言

3) 连接到另一个队列管理器

4) 读取输出

Const MQOO_OUTPUT = 16
 Const MQOO_INPUT_AS_Q_DEF = 1
 Set MQS = CreateObject("MQAX200.MQSession")                          
 Set QM = MQS.AccessQueueManager(Environment.Value("MQName")) 'This will pass the queue name and  access the queue manager.
 Set MQQueue = QM.AccessQueue(strQueName, MQOO_INPUT_AS_Q_DEF Or MQOO_OUTPUT)
 Set PutOptions = MQS.AccessPutMessageOptions()
 PutOptions.Options = MQPMO_NO_SYNCPOINT
 Set PutMsg = MQS.AccessMessage() 
 PutMsg.CharacterSet = 1208
 PutMsg.MessageData = PutMsgStr 'the message text 
 PutMsg.ApplicationIdData = "INTF_0439B" 
 MQQueue.Put PutMsg, PutOptions 'write the message to queue.

另外,我的websphere MQ版本是7.0.1.8

是否有其他方法不必重新启动QTP来反映系统环境变量的更改。实际连接到MQ的代码是什么样子的?您可以直接在程序中传递连接详细信息,而不是让它依赖MQSERVER env变量。据我所知,QTP确实依赖于环境变量。即使您对此表示怀疑,为什么不发布连接到MQ的代码行,让我看看是否可以帮助您通过编程方式传递详细信息。如果您只需要连接到多个队列管理器,您可以通过CCDT(客户机通道定义表)执行此操作。
MQSERVER
变量将替换为两个变量
MQCHLLIB
(CCDT文件的位置)和
MQCHLTAB
(CCDT文件的名称)。CCDT文件本身可以定义一个或多个与队列管理器名称关联的通道。然后,应用程序只需指定要连接到的队列管理器名称,MQ将通过该文件查找通道详细信息。