C# 使用x11 api和Mono/C了解活动窗口

C# 使用x11 api和Mono/C了解活动窗口,c#,ubuntu,mono,x11,C#,Ubuntu,Mono,X11,我试图在Ubuntu上使用X11API和Mono和C。 当我试图了解活动窗口时,我有一个SIGSEGV 进口: [DllImport("libX11")] public static extern void XGetInputFocus(IntPtr display, IntPtr focus_return, int revert_to_return); [DllImport("libX11")] public static extern IntPtr XOpenDisplay(string

我试图在Ubuntu上使用X11API和Mono和C。 当我试图了解活动窗口时,我有一个SIGSEGV

进口:

[DllImport("libX11")]
public static extern void XGetInputFocus(IntPtr display, IntPtr focus_return, int revert_to_return);

[DllImport("libX11")]
public static extern IntPtr XOpenDisplay(string display_name);
并使用:

IntPtr rootWind = XOpenDisplay(null);           
IntPtr wind;
int ret = 0;

XGetInputFocus(rootWind, wind, ret); //SIGSEGV there
我尝试过使用指针、引用等,但只有一个结果。 其他一些工作正常。 怎么了?

试试这个:

[DllImport("libX11")]
public static extern void XGetInputFocus(IntPtr display, ref IntPtr focus_return, ref int revert_to_return);

IntPtr rootWind = XOpenDisplay(null);           
IntPtr wind;
int ret = 0;
XGetInputFocus(rootWind, ref wind, ref ret);

“聚焦返回”和“还原返回”都是输出参数。@n.m.是的,我试过了。«out»,[out]和指针。不起作用。。。此外,IntPtr是指向一个结构的指针。哦,我对所有参数都使用了«out»,例如,谢谢,@n.m。