我正在尝试创建一个“简单”的程序,它所做的就是列出所有打开的程序,一旦你选择了一个,它就会在你的窗口中打开它(就像你可能会说的缩略图,但你也可以互动)。
有一件事,它必须是单向的(我不能改变嵌入式程序并添加“套接字”或“插件”)。我希望能够嵌入任何程序(例如Opera,evince,JDownloader等)。
有没有人知道我该怎么做?
如果使用GTK无法完成,可以使用X或类似方法完成吗?怎么样?
答案 0 :(得分:1)
看来你正在寻找像XEmbed这样的东西。 python和gtk的一个很好的教程是http://www.moeraki.com/pygtktutorial/pygtk2tutorial/sec-PlugsAndSockets.html
答案 1 :(得分:1)
答案 2 :(得分:0)
using System;using Gtk;using System.Runtime.InteropServices; public partial class MainWindow : Gtk.Window{
public MainWindow () : base(Gtk.WindowType.Toplevel)
{
Gtk.Socket socket;
int xid;
Fixed fixed2=new Fixed();
this.socket = new Socket();
this.socket.WidthRequest = 500;
this.socket.HeightRequest = 500;
this.socket.Visible = true;
this.socket.Realized += new EventHandler(OnVideoWidgetRealized);
fixed2.Put(socket, 0, 0);
fixed2.SetSizeRequest(500,500);
this.Add(fixed2);
this.ShowAll();
OnButton17Clicked();
}
protected virtual void OnVideoWidgetRealized (object sender, EventArgs
args)
{
this.xid = (int)socket.Id;
Console.WriteLine("this.xid:"+this.xid);
}
protected void OnDeleteEvent (object sender, DeleteEventArgs a)
{
Application.Quit ();
a.RetVal = true;
this.socket = new Socket();
}
protected void OnButton17Clicked ()
{
var paramString = string.Format("-wid {0} 1.avi", xid);
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "mplayer.exe";
proc.StartInfo.Arguments = paramString;
proc.Start();
proc.WaitForExit();
}
public static void Main()
{
Application.Init();
new MainWindow();
Application.Run();
}}