Process[] processlist = Process.GetProcesses();
List<string> names = new List<string>();
foreach (Process process in processlist)
{
if (!String.IsNullOrEmpty(process.MainWindowTitle))
{
if (process.MainWindowTitle.Contains("GrAD"))
{
CaptureApplication(process.MainWindowTitle);
break;
}
}
}
在MainWindowTitles中的process.MainWindowTitle中,我看到:GrADS 2.0.2.oga.2 这是从外部进程Xming发出的。 Xming是一个小型服务器,连接到互联网,然后显示一个控制台窗口,GrADS 2.0.2.oga.2是窗口的标题,但我无法在任何地方找到这个GrADS 2.0.2.oga.2文件exe文件。我可以在托盘图标上看到Xming但我在任务管理器中尝试过无法在我的硬盘上找到GrADS 2.0.2.oga.2 exe文件。
CaptureApplication(process.MainWindowTitle);
当CaptureApplication在这种情况下得到MainWindowTitle GrADS 2.0.2.oga.2它应该捕获窗口并坚持将它添加到form1上的pictureBox。 但事实并非如此。
public void CaptureApplication(string _title)
{
string _wndcls = "ConsoleWindowClass";
STARTUPINFO si = new STARTUPINFO();
PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
CreateProcess(_title, null, IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, null, ref si, out pi);
IntPtr _wndConsole = IntPtr.Zero;
for (int i = 0; i < 30; i++)
{
_wndConsole = FindWindow(_wndcls, _title);
if (_wndConsole == IntPtr.Zero)
{
System.Threading.Thread.Sleep(10);
continue;
}
break;
}
IntPtr value = SetParent(_wndConsole, this.pictureBox1.Handle);
int style = GetWindowLong(_wndConsole, -16);
style &= -12582913;
SetWindowLong(_wndConsole, -16, style);
SendMessage(_wndConsole, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
}
也许GrADS 2.0.2.oga.2不是exe文件而不是进程?我无法弄清楚如何捕获它。
我需要捕获左边的这个窗口。 也许GrADS 2.0.2.oga.2不是一个自我过程?它在Xming运行后显示出来。