vb脚本在未登录时模拟击键

时间:2014-03-07 13:35:48

标签: vbscript

我真的不太了解VB脚本,我可以帮助解决这个小问题。

我正在尝试每天早上运行某个脚本(计划任务)后发送电子邮件。现在,我们的电子邮件服务器配置为阻止发送自动电子邮件 - 这是我一般都很欣赏的功能 - 因此我需要模拟按键以确认警告框并实际发送电子邮件。

这是我到目前为止的脚本:

Sub SendEmail_Outlook()
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set ol=CreateObject("Outlook.Application") 
    Set Mail=ol.CreateItem(0) 
    Mail.to= "X@xyz.com"

    Mail.Subject =  "Subject"
    Mail.HTMLBody = "Body"
    Mail.Display    

    WScript.Sleep 1000
    WshShell.SendKeys "%s"
    Set Mail = Nothing 
    Set ol = Nothing 
End Sub

SendEmail_Outlook

该脚本的功能类似于魅力 ,但前提是我已登录 。如果我没有登录,则会准备电子邮件草稿,窗口已激活,但实际上并未发送电子邮件。我假设是因为如果没有人登录,模拟按键不起作用?

所以,问题是:有没有办法“调整”这个脚本,即使没有人登录也可以运行?

非常感谢,帮助将不胜感激!

菲利普

2 个答案:

答案 0 :(得分:0)

你检查过vbscript [info]部分了吗?它解释了当用户未登录时cscript.exe如何执行vbscript。

注意:由于将脚本作为控制台应用程序而不是Windows应用程序运行,预定的VBScript任务在Cscript.exe下成功。计算机/域策略限制Windows应用程序的激活,而不记录任何用户上“。

修改

通过.Send属性激活发送电子邮件,而不是使用sendkeys方法。

Sub SendEmail_Outlook()
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set ol=CreateObject("Outlook.Application") 
    Set Mail=ol.CreateItem(0) 
    Mail.to= "X@xyz.com"

    Mail.Subject =  "Subject"
    Mail.HTMLBody = "Body"
    Mail.Display    

    WScript.Sleep 1000
    '-----------
    Mail.Send
    '-----------
    Set Mail = Nothing 
    Set ol = Nothing 
End Sub

SendEmail_Outlook

有关直接自动化电子邮件的更多信息,Outlook应用程序也可在此处引用:Link

答案 1 :(得分:0)

在同事的帮助下,我认为我找到了答案 - 至少它是我已经实施的一个选项,它似乎到目前为止成功运行。因为这也可能引起其他人的兴趣,我们所做的就是:

  1. 下载并安装" Outlook Redemption"在这里:http://www.dimastr.com/redemption/home.htm。无需管理员权限。
  2. 使用以下脚本:

    Sub SendEmail_Outlook()     设置WshShell = WScript.CreateObject(" WScript.Shell")     设置oApp = CreateObject(" Outlook.Application")     设置NS = oApp.GetNamespace(" MAPI")     NS.Logon     设置SafeItem = CreateObject(" Redemption.SafeMailItem")     设置oMailItem = oApp.CreateItem(0)

    SafeItem.Item = oMailItem
    SafeItem.To = "x@yz.com"
    SafeItem.Subject = "Subject"
    SafeItem.BodyFormat = 2
    SafeItem.HTMLBody = "Body"
    SafeItem.Send   
    SafeItem = Nothing    
    Set oMailItem = Nothing    
    Set NS = Nothing
    Set oApp = Nothing
    

    End Sub

    SendEmail_Outlook

  3. 如上所示,尽管最后收到错误,但脚本运行顺利,并说:

    VBScript runtime error: Object variable not set: 'SafeItem'
    

    但是,电子邮件到了,所以错误并没有让我感到烦恼......; - )