переменная bash удваивается в значении - почему?

Во-первых, вам нужно получить дескриптор окна основного окна приложения.

 [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;  
}   
3
задан Levon 4 March 2019 в 00:01
поделиться

2 ответа

$SECONDS на самом деле является специальной Bash Variable для определения количества секунд, в течение которых выполнялся скрипт. Поскольку это таймер, он автоматически увеличивается каждую секунду, а скрипт ничего не делает. Просто измените имя переменной на другое, и все будет в порядке.

0
ответ дан B. Shefter 4 March 2019 в 00:01
поделиться

Выберите другое имя для $SECONDS.

$SECONDS является встроенной переменной оболочки. Он увеличивается до количества секунд с момента запуска оболочки.

Из руководства по Bash :

'SECONDS'

Эта переменная увеличивается до количества секунд с момента запуска оболочки. Присвоение этой переменной сбрасывает счет до присвоенного значения, и расширенное значение становится присвоенным значением плюс количество секунд с момента присвоения.

0
ответ дан Keith Thompson 4 March 2019 в 00:01
поделиться