Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
vb_sub
Member

Откуда:
Сообщений: 468
Здесь 90% работы скорее всего с user32.dll.
Найти приложение в полноэкранном режиме можно скорее всего перебором всех дескрипторов окон и нахождения оного в полноэкранном режиме что-то вроде
[StructLayout(LayoutKind.Sequential)]
    private struct RECT
    {
        public int left;
        public int top;
        public int right;
        public int bottom;
    }

    [DllImport("user32.dll")]
    private static extern bool GetWindowRect(HandleRef hWnd, [In, Out] ref RECT rect);

    [DllImport("user32.dll")]
    private static extern IntPtr GetForegroundWindow();

    public static bool IsForegroundFullScreen()
    {
        return IsForegroundFullScreen(null);
    }

    public static bool IsForegroundFullScreen(Screen screen)
    {
        if (screen == null)
        {
            screen = Screen.PrimaryScreen;
        }
        RECT rect = new RECT();
        GetWindowRect(new HandleRef(null, GetForegroundWindow()), ref rect);
        return new Rectangle(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top).Contains(screen.Bounds); 
    }
12 ноя 18, 15:00    [21731864]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37082
MrKoder
Это окно не сквозное для кликов
задолбал. То сквозное, то обычное, то главное окно main приложения.
Ужас в постановке задачи.
12 ноя 18, 15:14    [21731884]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
vb_sub
Member

Откуда:
Сообщений: 468
Petro123
MrKoder
Это окно не сквозное для кликов
задолбал. То сквозное, то обычное, то главное окно main приложения.
Ужас в постановке задачи.


100% все понятно.
12 ноя 18, 15:15    [21731889]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37082
vb_sub,
А куда делось окно со сквозным кликом?
12 ноя 18, 16:21    [21731993]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123,
Если у тебя сложности с пониманием, чем я могу могу помочь?
Задание поставлено четко. С какой радости ты решил, что прошлая и эта темы связаны я понятия не имею. Это лишь твои догадки. Я уже ни раз писал, что в прошлой теме все уже решено, ты упорно ее сюда за каким то тянешь и пытаешься мне всучить.
12 ноя 18, 16:23    [21731997]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37082
MrKoder
С какой радости ты решил, что прошлая и эта темы
если не связаны, то прогресс бар на 3 сек вылез и спрятался это проблема?
12 ноя 18, 16:24    [21731999]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37082
Тьфу, панель задач.
У нее есть свойство - автоматически скрывать.
12 ноя 18, 16:27    [21732004]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37082
vb_sub
перебором всех дескрипторов
права нужны, и не для джуна задачка)
12 ноя 18, 16:31    [21732009]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123,
Ну вот опять же, скрыть то допустим я найду как, но ведь это же не во всех случаях должно работать именно так, как я и говорил выше.
Человек может юзать приложение и на рабочем столе, когда не будет вообще никаких других окон. В этом случае скрывать панель такое себе
12 ноя 18, 16:33    [21732012]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Собственно вот он код скрыть/показать тэскбар
public class Taskbar
{
    //Функция FindWindow разыскивает данные о дескрипторе окна верхнего уровня, 
    //чье имя класса и имя окна соответствуют определенным строкам.
    //Эта функция не ищет дочерние окна.
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    private static extern int FindWindow(string className, string windowText);

    //Функция ShowWindow устанавливает состояние показа определяемого окна.
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    private static extern int ShowWindow(int hwnd, int command);

    //Скрывает окно и активизирует другое окно.
    private const int SW_HIDE = 0;
    //Активизирует окно и отображает его текущие размеры и позицию.
    private const int SW_SHOW = 1;

    protected static int Handle
    {
        get
        {
            //Получаем дескриптор панели задач.    
            return FindWindow("Shell_TrayWnd", "");               
        }
    }
    protected static int StartHandle
    {
        get
        {
            // Получаем дескриптор кнопки Пуск.

            //Для Windows на Русском.
            return FindWindow("Button", "Пуск"); 
            //Для Windows на Английском.
            //return FindWindow("Button", "Start");
        }
    }
    private Taskbar()
    {
        
    }

    public static void Show_Taskbar()
    {
        //Показываем панель задач.
        ShowWindow(Handle, SW_SHOW);            
    }

    public static void Show_StartButton()
    {
        //Показываем кнопку Пуск
        ShowWindow(StartHandle, SW_SHOW);
    }

    public static void Hide_Taskbar()
    {
        //Скрываем панель задач.
        ShowWindow(Handle, SW_HIDE);            
    }

    public static void Hide_StartButton()
    {           
        //Скрываем кнопку Пуск.
        ShowWindow(StartHandle, SW_HIDE);
    }
}
12 ноя 18, 16:39    [21732027]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37082
MrKoder,
А) панель сама скрывается.
Б) ты рано постановкой задач занялся. Если процессы с аськой не видел.
12 ноя 18, 16:44    [21732032]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / WPF, Silverlight Ответить