使用vbscript/QTP刷新系统变量
我想设置系统变量MQSERVER,以便使用QTP连接到MQ。每次从QTP更改此值时,我都需要重新启动QTP以反映更改 例如,在系统变量窗口中, MQSERVER=ABCD 使用使用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 该变量设置正
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将通过该文件查找通道详细信息。