C#发送密钥给bloomberg

时间:2015-01-22 04:02:11

标签: c# vba sendkeys bloomberg dde

我的老板让我将以下VBA代码转换为C#(我是C#的新手)

Sub BBG()

Dim stockname As String 
Dim test As String
stockname = ActiveCell
test = InStr(1, stockname, "Equity")
stockname = Left(stockname, InStr(1, stockname, "Equity") - 2) & " <EQUITY>"

Blp = DDEInitiate("Winblp", "bbk")
Call DDEExecute(Blp, "<Blp-1>" & stockname & " GPC<GO>")
Call DDETerminate(ch)

End Sub    

所以,我正在尝试这样:

  1. 激活bloomberg窗口

  2. 将密钥发送到bloomberg,例如:发送&#34; IBM美国股票MACD&#34;并点击&#34;输入&#34;

  3. 例如:

    namespace sendkey
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            [DllImportAttribute("User32.dll")]
            private static extern int FindWindow(String ClassName, String WindowName);
    
            [DllImportAttribute("User32.dll")]
            private static extern IntPtr SetForegroundWindow(int hWnd);
    
            private void button1_Click(object sender, EventArgs e)
            {
    
                int hWnd = FindWindow(null, "Name of Bloomberg windows");
                if (hWnd > 0) 
                {
                    SetForegroundWindow(hWnd); //Activate it
                    SendKeys.SendWait("IBM US EQUITY MACD");
                    SendKeys.SendWait("{enter}");
                }
                else
                {
                    MessageBox.Show("Window Not Found!");
                }
            }
        }
    }
    

    但现在问题是:

    1. 由于我的电脑没有安装bloomberg,我不知道bloomberg窗口的名称。

    2. 从VBA代码中,&lt;&gt;中的代码是什么?意思?例如,当我想发送&#34;输入&#34;到Bloomberg,我应该输入{Enter} OR&lt; GO&gt;在我的代码??

    3. 非常感谢你,我真的很困惑:(

2 个答案:

答案 0 :(得分:0)

C#/ .NET应用程序使用TerminalConnect Api与Bloomberg终端集成。

例如,以下代码将“IBM US Equity”加载到Panel#1中,然后运行MACD函数:

BlpTerminal.RunFunction("MACD", "1", new List<string>() {"IBM US Equity"});

有关TerminalConnect SDK的更多信息,请联系 terminalapi@bloomberg.net

答案 1 :(得分:0)

你可以使用它来允许在bloomberg上自动登录

            var p = new Process();
            p.StartInfo.FileName = @"C:\BLP\wintrv\WINTRV.EXE";
            p.StartInfo.EnvironmentVariables["sessioname"] = "Console";
            p.StartInfo.EnvironmentVariables["SESSIONNAME"] = "Console";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.CreateNoWindow = true;
            p.Start();
            Thread.Sleep(45000);


        IntPtr handle = FindWindow(null, "1-BLOOMBERG");
        if (!handle.Equals(IntPtr.Zero))
        {
            if (SetForegroundWindow(handle))
            {
                Thread.Sleep(5000);
                SendKeys.SendWait("{ENTER}");
                Thread.Sleep(3000);
                SendKeys.SendWait("USER");
                Thread.Sleep(5000);
                SendKeys.SendWait("{TAB}");
                Thread.Sleep(3000);
                SendKeys.SendWait("PASSWORD");
                SendKeys.SendWait("{ENTER}");
            }
        }