我的老板让我将以下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
所以,我正在尝试这样:
激活bloomberg窗口
将密钥发送到bloomberg,例如:发送&#34; IBM美国股票MACD&#34;并点击&#34;输入&#34;
例如:
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代码中,&lt;&gt;中的代码是什么?意思?例如,当我想发送&#34;输入&#34;到Bloomberg,我应该输入{Enter} OR&lt; GO&gt;在我的代码??
非常感谢你,我真的很困惑:(
答案 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}");
}
}