我正在尝试让我的程序以编程方式查找窗口,因为我按标题使用findwindow
。
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
IntPtr splashwindow = FindWindowByCaption(IntPtr.Zero,
"Motive:Body 1.10.0 Beta 1 (C:\Users\Public\Documents\OptiTrack\)" )
它完全正常,但我需要做
string Motive = "Motive:Body 1.10.0 Beta 1 (C:\Users\Public\Documents\OptiTrack\)"
并将其放入函数
IntPtr splashwindow = FindWindowByCaption(IntPtr.Zero , "Motive" )
显然它无法工作,因为FindWindowByCaption
方法正在寻找一个名为" Motive"的程序。
那么我怎样才能跳过"要使FindWindowByCaption
识别字符串的引号?
Heres是我的代码
public void getwindow()
{
string[] strWindowsTitles = GetDesktopWindowsTitles();
string Motive;
foreach (string strTitle in strWindowsTitles)
{
if (strTitle.Contains("Motive"))
{
Motive = strTitle;
MessageBox.Show(Motive);
// this shows me Motive:Body 1.10.0 Beta 1
//(C:\Users\Public\Documents\OptiTrack\)
}
}
IntPtr splashwindow = FindWindowByCaption(IntPtr.Zero , Motive );
}
我通过enumwindow
得到了所有已打开的应用程序的名称(这部分代码很长并且运行正常)将其放入strWindowTitles
&通过过滤器得到我需要的那个。