我想将UI对象树从进程A转移到B,即进程B想知道进程A中窗口的布局。 我在下面的链接中发现了几乎所需的内容,但是此链接中的方法只能传输结构明确的对象。 link
当我要转移树结构时:我事先不知道布局。
有人可以给我一些提示吗?非常感谢!
答案 0 :(得分:0)
我认为您的项目看起来像下面的代码。您可能需要一个自定义的序列化程序,或者从您的进程中创建一棵填充窗口和控件的树。从您的描述中不确定是否最好的进行方法。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Process process = new Process();
XDocument doc = new XDocument("root");
XElement xProcess = SerializeToXml<Process>.Serialize(process);
doc.Add(xProcess);
}
}
public class SerializeToXml <T>
{
public static XElement Serialize(T data)
{
StringWriter writer = new StringWriter();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter xWriter = XmlWriter.Create(writer, settings);
XmlSerializer serializer = new XmlSerializer(data.GetType());
serializer.Serialize(xWriter, data);
XmlReader reader = XmlReader.Create(xWriter.ToString());
writer.Close();
return (XElement)XElement.ReadFrom(reader);
}
}
public class Process
{
public List<Window> windows { get; set; }
}
public class Window
{
public List<Control> controls { get; set; }
}
public class Control
{
}
}