如何找到外部进程任务窗口的exe文件位置?

时间:2015-12-30 23:14:22

标签: c# .net winforms

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文件。

Task Manager

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 screenshot

我需要捕获左边的这个窗口。 也许GrADS 2.0.2.oga.2不是一个自我过程?它在Xming运行后显示出来。

0 个答案:

没有答案