我是一个新手,也许我根本没有正确使用方法。我想同时启动不同的采集软件。
为此,我有一个前台应用程序窗口,该窗口可模拟空格键的点击或模拟Mouseclick
按下“播放按钮”时的。然后,我将其最小化,并将另一个应用程序置于前台并执行相同的操作。它实际上非常快,而且效果很好。
但是我对一个软件有问题。它的名称发生了很大变化(保存视频时使用的文件夹名称为该名称)。
为了找到当时该应用程序的名称,我使用enumwindow
了过滤器并获取了它。
但是,这是我的问题,应用程序的名称另存为string
。
对于前台应用程序,我必须找到它,FindWindow
并且必须在引号中加上应用程序的名称。当然,如果我用string
引号引起来,那是行不通的。
这是我的代码:
//[Lot of Dllimport]
public void namewindow()
{
string[] strWindowsTitles = GetDesktopWindowsTitles();
//all the name of open applications
foreach (string strTitle in strWindowsTitles)
{
if (strTitle.Contains("Motive"))
{
string Motive = strTitle;
//Here if I put a MessageBox.Show(Motive),
//I have a name like:
//Motive:Body 1.10.0 Beta 1 (C:\Users\Public\Documents\OptiTrack\
}
}
}
public void openwindow()
{
IntPtr splashwindow = FindWindowByCaption(IntPtr.Zero, "Motive");
FindWindow;
SetForegroundWindow(splashwindow);
ShowWindowAsync(splashwindow, SW_SHOWNORMAL);
}
这项工作非常完美
IntPtr splashwindow = FindWindowByCaption(IntPtr.Zero, "Kinovea");
FindWindow;
SetForegroundWindow(splashwindow);
ShowWindowAsync(splashwindow, SW_SHOWNORMAL);
例如。
因此,如果我将应用程序的名称放在引号之间,则效果很好,但是如果我将应用程序的名称放在string
引号之间,则什么都不会发生。您知道如何解决此问题吗?
继续您在此问题中发布的内容,我认为您的代码应改为:
public string nameWindow(string searchFor)
{
string[] strWindowsTitles = GetDesktopWindowsTitles();
//all the names of open applications
foreach (string strTitle in strWindowsTitles)
{
if (strTitle.Contains(searchFor))
{
return strTitle;
}
}
else
return null;
}
public void openwindow()
{
string motiveWindow = nameWindow("Motive");
if (motiveWindow != null){
IntPtr splashwindow = FindWindowByCaption(IntPtr.Zero, motiveWindow);
//FindWindow;//Not sure what this does?
SetForegroundWindow(splashwindow);
ShowWindowAsync(splashwindow, SW_SHOWNORMAL);
}
}
它将对其进行更改,因此您的方法nameWindow()
将在您的方法中将变量传递给您的方法找到一个窗口(它遇到的第一个窗口)searchFor
。在这种情况下,为“动机”。然后,如果变量motiveWindow
不为null(因此已找到一个窗口),它将运行您期望的代码并显示该窗口。
您需要注意如何设置变量以及返回什么。目前,您nameWindow()
似乎并没有做太多事情,可能会设置一个名为“ Motive”的变量,我没有看到它声明过,但是您再也不会在其他地方使用该变量了。在这里,我们将返回一个变量,并对返回的数据进行操作。您可能会发现想要使openWindow()
方法采用变量,尝试打开一个同名的窗口,如果找不到,则调用该方法nameWindow()
并进行搜索。这样一来,您就可以处理两种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句