我正在尝试通过另一个Windows窗体应用程序在特定坐标处编写控制台应用程序。
我知道我可以在下面的控制台应用程序中编写
Console.SetCursorPosition(5, 6);
Console.Write("This is how I can write to already defined coordinates from within console app");
但是在这里我想在特定的坐标处编写,并且在其他应用程序中具有控制台应用程序句柄。但是,如何使用另一个应用程序的句柄在控制台应用程序内设置坐标,然后在其中编写坐标呢?
如果可以,我应该使用Win32API,然后如何使用它来设置坐标?
任何帮助将不胜感激
答案 0 :(得分:0)
如果将此代码(或类似代码)放入接收代码中,则可以在已发送的字符串中包括VT move命令:
const char ESC = '\x1B';
// Do we have any VT commands in the string?
var pos = myString.IndexOf(ESC);
while (pos >= 0)
{
// Could it be a 'move to'?
if (myString[pos + 1] == '[')
{
int endLocation = 0;
// Find the command identifier
for (int endPos = pos + 2; endPos < myString.Length && endLocation == 0; pos++)
{
switch (myString[endPos])
{
// We're only handling "move to" for the moment
case 'H':
endLocation = endPos;
break;
}
}
if (endLocation > 0)
{
var moveCmd = myString.Substring(pos + 2, endLocation - pos - 3);
var xy = moveCmd.Split(';');
var line = 0;
var column = 0;
if (xy.Length > 0) int.TryParse(xy[0], out line);
if (xy.Length > 1) int.TryParse(xy[1], out column);
Console.SetCursorPosition(column, line);
myString = myString.Substring(0, pos - 1) + myString.Substring(endLocation + 1);
pos -= 1;
}
}
pos = myString.IndexOf(ESC, pos + 1);
}