Мой босс попросил меня преобразовать следующий код 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
Итак, я стараюсь так:
Активировать окна bloomberg
Отправьте ключ в 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!");
}
}
}
}
Но теперь проблема в том, что:
Я не знаю названия окон bloomberg, поскольку мой компьютер не установлен с bloomberg.
Из кода VBA, что означает код в <>? Например, когда я хочу отправить "Enter" в Bloomberg, в который я должен ввести {Enter} OR <GO> в свой код?
Большое вам спасибо, я действительно смущен :(
вы можете использовать это, что позволяет автоматически входить в систему на 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}");
}
}
Приложения С#/.NET интегрируются с терминалом Bloomberg с помощью TerminalConnect Api.
Например, следующий код загружает "IBM US Equity" в Panel # 1, затем запускает функцию MACD:
BlpTerminal.RunFunction("MACD", "1", new List<string>() {"IBM US Equity"});
Для получения дополнительной информации о TerminalConnect SDK, пожалуйста, свяжитесь с [email protected].