Sending Screenshots by GRAB function
本系列的主題如下,所有的程式碼可以從 這裡 下載。
-
Bloomberg Automation - (1).DDE 基礎架構
-
Bloomberg Automation - (2).Terminal 畫面留存並解析內容
-
Bloomberg Automation - (3).Login 及 Logout
-
Bloomberg Automation - (4).更改 Bloomberg 界面的語系
-
Bloomberg Automation - (5).自動執行ALLQ並抓取畫面的內容
-
Bloomberg Automation - (6).自動執行HP、輸入查詢條件並抓取畫面的內容
-
Bloomberg Automation - (7).使用 GRAB 指令 Email 畫面
前幾篇介紹使用 <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畫面,希望這些內容對各位工作上能有所幫助。