C # отправить ключ в Bloomberg

1

Мой босс попросил меня преобразовать следующий код VBA в С# (я новичок в С#)

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, например: отправьте "IBM US EQUITY MACD" и нажмите "Enter",

Например:

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, что означает код в <>? Например, когда я хочу отправить "Enter" в Bloomberg, в который я должен ввести {Enter} OR <GO> в свой код?

Большое вам спасибо, я действительно смущен :(

  • 1
    Что ж, оригинальный код VBA - это динамический обмен данными (DDE), не отправляющий нажатия клавиш . Приложение все еще поддерживает DDE? Либо ваш вопрос об использовании DDE в .NET, либо о том, как отправлять нажатия клавиш.
Теги:
sendkeys
bloomberg
dde

2 ответа

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}");
            }
        }
0

Приложения С#/.NET интегрируются с терминалом Bloomberg с помощью TerminalConnect Api.

Например, следующий код загружает "IBM US Equity" в Panel # 1, затем запускает функцию MACD:

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

Для получения дополнительной информации о TerminalConnect SDK, пожалуйста, свяжитесь с [email protected].

Ещё вопросы

Сообщество Overcoder
Наверх
Меню