Bloomberg Automation - (7).使用 GRAB 指令 Email 畫面

Sending Screenshots by GRAB function

本系列的主題如下,所有的程式碼可以從 這裡 下載。

 

前幾篇介紹使用 <COPY> 指令取得Bloomberg 畫面的圖片及文字內容,如果今天我們只是想把畫面Email給別人,並不需要將畫面留存做其它的運用,這時就可以直接用 GRAB 指令逹到目的。

Bloomberg GRAB Function

在Bloomberg 輸入GRAB指令後,填寫收件人 test@test.com、主旨填入 HP Price,最後輸入 1<GO>就可將畫面當作附件 email 給收信人。

 

程式邏輯

在 BloombergDDEBase 加上SendMailByGRAB method,程式如下:

public void SendMailByGRAB(int windowNum, string recipient, string subject)
{
   string command;
   //GRAB receipient<GO> subject < GO > 1 < GO >
   command = $"GRAB {recipient} <GO> {subject} <GO> 1 <GO>";
   DDEInputCommand(windowNum, command);

   // GRAB 指令會顯示輸入email的畫面,傳送後仍會停留在email畫面,
   // 因此需用 GO BACK 回到前一畫面
   command = $"GO BACK<GO>";
   DDEInputCommand(windowNum, command);
}

GRAB 組出的DDE為 GRAB receipient<GO> subject <GO> 1 <GO >, GRAB指令後面加上收件人(receipient)的email,若有多人則用分號隔開,例如 traderA@test.com;traderB@test.com,subject填入信件的主旨,最後輸入 1 送出email。送出後Bloomberg畫面會停留在填寫email的畫面,必需再輸入 GO BACK<GO> 回到原畫面。

接下來我們增加一個畫面測試我們寫的功能,名稱為 frmEmail,畫面如下:

測試的程式碼如下:

private void btnExecute_Click(object sender, EventArgs e)
{
   using (BloombergDDEBase bloombergDDE = new BloombergDDEBase())
   {
      int windowNum = int.Parse(cboWindowNum.Text);
      bloombergDDE.SendMailByGRAB(windowNum, txtRecipient.Text, txtSubject.Text);
   }
}

執行後按下 Execute 按鈕就會把Bloomberg 目前的畫面當作附件email給指定的收件人。

本系列 Bloomberg DDE 的作法已全部介紹完畢,文章中介紹如何傳送 DDE 指令給Bloomberg,抓取Bloomberg畫面的內容,取得畫面的圖片及文字,並透過ALLQ及HP當作範例實作,最後再介紹 GRAB指令email畫面,希望這些內容對各位工作上能有所幫助。