Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
3 / 3 / 1
Регистрация: 08.06.2015
Сообщений: 41
1

Отобразить окно другой программы поверх всех окон

09.01.2017, 15:16. Показов 2711. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Есть такая задачка: нужно среди открытых окон системы найти окно с нужным названием и передать ему фокус (отобразить поверх остальных окон). Прочитал много статей о том, как найти нужное окно с помощью user32.dll, но как потом это окно сделать поверх остальных не понимаю. Перечитал все функции в user32.dll и ничего подходящего не нашёл.. Может кто сталкивался, подскажите
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2017, 15:16
Ответы с готовыми решениями:

Как сделать окно стороннего приложения поверх всех окон?
Имеется Handle стороннего приложения. Пытался использовать SetWindowPos(handle, 0, 0, 0, 0, 0,...

Окно поверх всех окон
Пишу программу против винлокеров добавил свой диспетчер задач, разблокирование ключей реестра.Но...

Как сделать окно программы не поверх всех окон?
Как сделать так, чтобы окно программы было не поверх всех окон? Программа использует только модуль...

Окно программы должно постоянно находится поверх всех окон
всем привет, знающие люди, подскажите возможно ли, а если и возможно, то как написать скрипт для...

3
Эксперт .NET
5876 / 4753 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
09.01.2017, 15:26 2
Лучший ответ Сообщение было отмечено GfiFer как решение

Решение

GfiFer,
1) подключаем пространство имен
C#
1
using System.Runtime.InteropServices;
2) объявляем 2 метода
C#
1
2
3
4
5
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 
[DllImport("user32.dll", SetLastError = true)]
static extern long SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
3) используем методы для окна калькулятора
C#
1
2
3
uint flags = 0x0001 | 0x0002;
IntPtr w = FindWindow(null, "Калькулятор");
SetWindowPos(w, (IntPtr)(-1), 0, 0, 0, 0, flags);
Полностью:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Runtime.InteropServices;
 
namespace TOPMOST
{
    class Program
    {
        [DllImport("user32.dll", SetLastError = true)]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern long SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
 
        static void Main(string[] args)
        {
            uint flags = 0x0001 | 0x0002;
            IntPtr w = FindWindow(null, "Калькулятор");
            SetWindowPos(w, (IntPtr)(-1), 0, 0, 0, 0, flags);
        }
    }
}
2
3 / 3 / 1
Регистрация: 08.06.2015
Сообщений: 41
10.01.2017, 10:52  [ТС] 3
Огромное спасибо! Получилось)
0
3 / 3 / 1
Регистрация: 08.06.2015
Сообщений: 41
11.01.2017, 17:01  [ТС] 4
Маленькая беда. Долго не мог понять в чем дело и почему не всегда работает. Получается очень забавная вещь: если работает VS, то и программа работает корректно, а если VS закрыто и запускается чистый .exe, то приложение не подтягивается поверх остальных
0
11.01.2017, 17:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2017, 17:01
Помогаю со студенческими работами здесь

Как отобразить сообщение поверх всех открытых окон?
Добрый день, Есть страница на которой по определенному событию появляется с помощью плагина jAlert...

Сквозное окно поверх всех окон
Здравствуйте, допустим есть у нас активное окно, как сделать второе окно которое было бы поверх...

Показать окно поверх всех остальных окон
Здравствуйте! помогите пожалуйста по такому вопросу, нужно сделать так чтоб окно моего приложения...

Окно программы поверх других окон
Здравствуйте! Подскажите пожалуйста, нужно что-бы окно программы было постоянно поверх всех...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru