Недавно я получил лицензию на WinX DVD Ripper Platinum, и меня раздражает тот факт, что когда он завершает копирование DVD, он не говорит мне об этом.Там нет всплывающих окон, нет системы "Beep" - ничего.Диалог прогресса просто закрывается.Главное окно даже не фокусируется ...
Чтобы ускорить процесс копирования DVD, я создаю простое консольное приложение (с использованием C # и VS2010), которое:
- Находит дескриптор процесса с именем «WinX_DVD_Ripper_Platinum» (имя процесса программного обеспечения WinX DVD Ripper Platinum)
- Находит дескриптор диалога прогресса этого процесса, используя метод
GetChildWindows
, определенный в этот пример на pinvoke.net - Запускает экземпляр
System.Timers.Timer
, который проверяет (или должен проверять), закрывался ли диалог прогресса каждые 5 секунд (используя функцию GetWindowLong
и - Воспроизводит несколько звуковых сигналов с помощью метода
System.Console.Beep
, чтобы сообщить пользователю о завершении копирования. Таймер автоматически сбрасывается, выполняя проверку (или повторяя звуковой сигнал, если диалоговое окно закрыто) каждые 5 секунд, пока пользователь не нажмет клавишу в окне консоли.
Шаги 1, 2 и 4 работают нормально, но у меня возникают проблемы с шагом 3 - вот мой вопрос, которые о* константы стиля окна я должен использовать, чтобы проверить, видимо ли окно?(WS_VISIBLE НЕ работал ...)
Для более подробной информации, это функция, которую я использую для проверки видимости диалога:
private static bool IsWindowVisible(IntPtr hwnd)
{
var style = GetWindowLong(hwnd, GWL.GWL_EXSTYLE);
var visible = style & (WS flag goes here);
return visible != 0;
}