Во-первых, вам нужно получить дескриптор окна основного окна приложения.
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
IntPtr hWnd = (IntPtr)FindWindow(windowName, null);
Затем вы можете использовать этот дескриптор для получения всех дочерних окон:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);
private List<IntPtr> GetChildWindows(IntPtr parent)
{
List<IntPtr> result = new List<IntPtr>();
GCHandle listHandle = GCHandle.Alloc(result);
try
{
EnumWindowProc childProc = new EnumWindowProc(EnumWindow);
EnumChildWindows(parent, childProc, GCHandle.ToIntPtr(listHandle));
}
finally
{
if (listHandle.IsAllocated)
listHandle.Free();
}
return result;
}
$SECONDS
на самом деле является специальной Bash Variable для определения количества секунд, в течение которых выполнялся скрипт. Поскольку это таймер, он автоматически увеличивается каждую секунду, а скрипт ничего не делает. Просто измените имя переменной на другое, и все будет в порядке.
Выберите другое имя для $SECONDS
.
$SECONDS
является встроенной переменной оболочки. Он увеличивается до количества секунд с момента запуска оболочки.
Из руководства по Bash :
'SECONDS'
Эта переменная увеличивается до количества секунд с момента запуска оболочки. Присвоение этой переменной сбрасывает счет до присвоенного значения, и расширенное значение становится присвоенным значением плюс количество секунд с момента присвоения.
BLOCKQUOTE>