C# 如何找到外部进程任务窗口exe文件位置?
当CaptureApplication获取MainWindowTitle时(本例中为GrADS 2.0.2.oga.2),它应该捕获窗口并将其粘贴到form1上的pictureBox中。 但事实并非如此C# 如何找到外部进程任务窗口exe文件位置?,c#,.net,winforms,C#,.net,Winforms,当CaptureApplication获取MainWindowTitle时(本例中为GrADS 2.0.2.oga.2),它应该捕获窗口并将其粘贴到form1上的pictureBox中。 但事实并非如此 CaptureApplication(process.MainWindowTitle); public void CaptureApplication(字符串\u标题) { 字符串_wndcls=“ConsoleWindowClass”; STARTUPINFO si=新的STARTUPINF
CaptureApplication(process.MainWindowTitle);
public void CaptureApplication(字符串\u标题)
{
字符串_wndcls=“ConsoleWindowClass”;
STARTUPINFO si=新的STARTUPINFO();
流程信息pi=新流程信息();
CreateProcess(_title,null,IntPtr.Zero,IntPtr.Zero,false,0,IntPtr.Zero,null,ref-si,out-pi);
IntPtr _wndConsole=IntPtr.Zero;
对于(int i=0;i<30;i++)
{
_wndConsole=FindWindow(wndcls,标题);
如果(_wndConsole==IntPtr.Zero)
{
系统线程线程睡眠(10);
继续;
}
打破
}
IntPtr value=SetParent(_wndConsole,this.pictureBox1.Handle);
int style=GetWindowLong(_wndConsole,-16);
样式&=-12582913;
SetWindowLong(_wndConsole,-16,样式);
SendMessage(_wndConsole,WM_SYSCOMMAND,SC_max,0);
}
也许GrADS 2.0.2.oga.2不是exe文件不是进程?我不知道如何捕捉它
我需要捕捉左边的这个窗口。
也许毕业生2.0.2.oga.2不是一个自我过程?它在Xming运行后显示 Xming不是进程名吗?在这种情况下,也是MainWindowTitle吗?GrADS 2.0.2.oga.2不是exe,只是子窗口标题。Tim可能是,但我想捕获子窗口标题GrADS 2.0.2.oga.2,而不是Xming.exe,如果我尝试创建Xming进程。Name或MainWindowTitle,它不会在pictureBox中显示GrADS 2.0.2.oga.2。我想捕捉GrADS 2.0.2.oga.2如果它是一个儿童窗口,并且您试图获取窗口句柄,那么您可能必须使用这种方法:您可能需要阅读Raymond Chen的文章,然后再进一步。“是的,在技术上是合法的。在技术上也是合法的。如果所涉及的一个或两个窗口不知道它正在参与跨进程窗口树,那么就几乎不可能管理链锯。”
CaptureApplication(process.MainWindowTitle);
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);
}