应该从一个程序 (IE) 复制到我的电子邮件主题字段的字符串有时包含错误:
然而,变量主题的消息框(见下文)总是正确的:
主题= %protocol% , %LSN% , %Site% , %Requisition%
但是当代码运行时:
十次中有 1 次的字符串未正确放入主题字段中:
我预计:
协议 C16019,LSN (102707),站点 22902,申请 102921403
我得到:
协议 c16019(小写字母 C 代替大写 C),lSN(&02707°(% 代替 1,° 代替)),站点 é2902(é 代替 2),申请 &02921403(& 代替 1)
似乎 AHK 正在使用我的特殊字符(F1-F12 键下方的字符行)或切换按钮被激活。
为什么以及如何解决这个问题?
我在某处读到controlend并不总是有效,这是一个已知问题。
旁注:我在另一个脚本中也看到了这一点,其中电子邮件地址的 @ 并不总是放在发送到字段中
我的代码:
Home::
pwb := WBGet()
pTable:= pwb.document.GetElementsByTagName("Table") [4] ;outerHTML ;Set Tag name and Array value
Loop, % pTable.rows.length {
LSN_1:= pTable.rows[9] .GetElementsByTagName("TD") [1].outerHTML ; LSN
protocol_1:= pTable.rows[9] .GetElementsByTagName("TD") [3].outerHTML ; Protocol
Site_1:=pTable.rows[10] .GetElementsByTagName("TD") [1].outerHTML ; Site
Requisition_1:=pTable.rows[12] .GetElementsByTagName("TD") [3].outerHTML ; Requisition
StringTrimLeft, NLSN, LSN_1, 6 ;trims 6 characters from left ( <TD> >)
StringTrimRight, fLSN, NLSN, 5 ;trims 5 characters from right (<TD> )
StringTrimLeft, Nprotocol, protocol_1, 6
StringTrimRight, fprotocol, Nprotocol, 5
StringTrimLeft, Nsite, site_1, 6
StringTrimRight, fsite, Nsite, 5
StringTrimLeft, NRequisition, Requisition_1, 6
StringTrimRight, fRequisition, NRequisition, 5
Requisition= requisition %fRequisition%
sleep,10
LSN= LSN (%fLSN%) ; essential that this variable is put into brackets
sleep,10
Site= site %fsite% ; "site" has to be put before the string
sleep,10
Protocol= protocol %fprotocol% ;"protocol" has to be put before the string
sleep,10
subject= %protocol% , %LSN% , %Site% , %Requisition%
sleep,150
;the variable in Msgbox is always correct here
;send the contents of subject into the subject of outlook
controlFocus, RichEdit20WPT4, ahk_class rctrl_renwnd32
controlSend, RichEdit20WPT4, {end} , ahk_class rctrl_renwnd32 ; send to the end of subject field
controlSendRaw, RichEdit20WPT4, %subject%, ahk_class rctrl_renwnd32
sleep,100
subject :=""
return
}
字符串有 10%-20% 的时间不正确。
请注意,我是一个新手,我已经学习和尝试编写脚本大约 2 周了。我不明白为什么这个脚本不能 100% 工作。