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

Откуда:
Сообщений: 45
Здравствуйте!
Не нашел нигде информации о том, как реализовать вот такую задачу:

Есть у меня некое приложение. Для примера давайте возьмем самый простой мессенджер, который будет в виде полупрозрачного окна (WPF оформит это дело) прикреплен, ну пусть, к левой части экрана. Если мы будем смотреть фильм на полном экране или играть в игру, опять же, в полноэкранном режиме, то при активации окна мессенджера будет происходить вылет на рабочий стол (либо же будет вылезать панель задач и меню Пуск, если та же самая игра запущена в режиме: В окне во весь экран). Это все-таки некруто.
Вопрос: можно ли сделать так, чтобы при активации окна моего приложения не было вылета на рабочий стол? Т.е. чтобы мы быстренько могли отписать сообщение и тут же вернуться в игру.

Надеюсь понятно объяснил, чего хочу добиться) Очень рассчитываю на вашу помощь! Решение такой задачи можно будет применить для разработки множества интересных приложений.

P.S. Пишу на C#+WPF
9 ноя 18, 23:27    [21730202]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
P.S. Пишу на C#+WPF
хитрый?
Прошлую тему закрыл решением? Даже двумя?
А то впечатление что ты собиратель вопросов для Что где когда.
10 ноя 18, 00:34    [21730242]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123, не совсем понял наезд. В прошлой теме был ответ, я поблагодарил всех, кто помог. Проблема в чем?
10 ноя 18, 00:39    [21730246]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder,
Обычно решение кастомизируют, правят и выкладывают с криком Получилось!
Это мнение со стороны, а не наезд.
10 ноя 18, 00:52    [21730254]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123,
Я на данном проекте совсем недавно, поэтому здешних традиций не знаю
Благодарю за информацию, впредь постараюсь делать именно так
10 ноя 18, 01:04    [21730258]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
при активации окна
каким событием?
Оно не вылазит на передний план само по себе.
Код давай.
10 ноя 18, 09:48    [21730319]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123,
Да кода здесь достаточно самого простого - одно полупрозрачное окно, т.к. модифицировать именно его.

Ну пусть такое

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Pr
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Ok_Click(object sender, RoutedEventArgs e)
        {

        }

        private void Close_Click(object sender, RoutedEventArgs e)
        {

        }
    }
}


<Window x:Class="Pr.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Pr"
        mc:Ignorable="d"
        Title="MainWindow" Height="448" Width="257" VerticalAlignment="Bottom" Margin="0,0,0,0" AllowsTransparency="True" Background="Transparent" WindowStyle="None" ResizeMode="NoResize" Topmost="True">
    <Grid>

        <Border Width="Auto" Height="Auto" Name="windowFrame" 
 
        BorderBrush="#000" 
        Background="#000" 
        Opacity="0.40" 
 
        BorderThickness="1" 
        CornerRadius="5,5,0,0" Margin="0,0,0,0" Grid.ColumnSpan="2" >
        </Border>
        <Button Content="Ок" HorizontalAlignment="Left" Click="Ok_Click" Margin="46,215,0,0" VerticalAlignment="Top" Width="162" Height="35"/>
        <Button Content="Закрыть" HorizontalAlignment="Left" Click="Close_Click" Margin="46,385,0,0" VerticalAlignment="Top" Width="162" Height="28"/>
        <TextBox HorizontalAlignment="Left" Height="50" Margin="46,60,0,0" TextWrapping="Wrap"  VerticalAlignment="Top" Width="162"/>


    </Grid>
</Window>


И надо, чтобы при клике оно работало, как бы параллельно с "главным" приложением (если можно так выразиться, было привязано к запущенному проигрывателю, игре и т.п.).
10 ноя 18, 12:05    [21730356]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
надо, чтобы при клике оно работало, как бы параллельно с "главным" приложением (если можно так выразиться, было привязано к запущенному проигрывателю, игре и т.п.).
в первом посте другое ТЗ.
Прочти гугл про юз кейсы и опиши конкретный use case.
10 ноя 18, 12:26    [21730365]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

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

Откуда:
Сообщений: 45
Petro123,
я говорю, что могу не совсем правильно выражаться.
Вся суть именно в первом посте и есть. Надо, чтобы окно в фоновом режиме (пока не активно) работало бы просто поверх текущего приложения, а при его активации не происходило вылета на рабочий стол
10 ноя 18, 12:28    [21730368]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
Petro123,
я говорю, что могу не совсем правильно выражаться.
Вся суть именно в первом посте и есть. Надо, чтобы окно в фоновом режиме (пока не активно) работало бы просто поверх текущего приложения, а при его активации не происходило вылета на рабочий стол
нет не понятно.
Не торопись.
Ты и так как то быстро пишешь код для программиста).
Найди аналог и use case.
10 ноя 18, 13:06    [21730389]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
Надо, чтобы окно в фоновом режиме (пока не активно) работало бы просто поверх текущего приложения,
блин, это сделано в прошлой твоей теме.
Давай скрины готового приложения прошлой темы.
А потом скрин проблемы.
Имхо
Удачи!
10 ноя 18, 13:13    [21730391]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123,
Так в фоновом режиме оно будет работать уже при свойстве Topmost, которое ставит окно поверх всех других окон
А по поводу задания, я прикрепил скрин, на котором активно полупрозрачное окно.
Так вот внизу появилась панель задач при этом. Такого не должно быть. Если бы мы были в игре в полноэкранном режиме - нас бы вообще на рабочий стол выкинуло, а такого также хотелось бы избежать
Прошлая тема здесь не при чем. Суть здесь абсолютно в другом

К сообщению приложен файл. Размер - 119Kb
11 ноя 18, 00:51    [21730754]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder,

В прошлой теме я давал вариант без окна. Помнишь?
Тогда и этого топика бы не было.
Верно?
Логично?
Скрин не плохой. Молодец. Видно что что то пишешь.
11 ноя 18, 08:00    [21730814]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
Так вот внизу появилась панель задач при этом.
в win api AFAIK есть метод не показывать окно в панели задач.
Но тут WPF, поэтому данный вариант - ждем профи.
11 ноя 18, 08:34    [21730817]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123,
Т.е. если скрыть приложение из панели задач, то при активации его окна не будет происходить вылета на рабочий стол?
11 ноя 18, 12:19    [21730892]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
Petro123,
Т.е. если скрыть приложение из панели задач, то при активации его окна не будет происходить вылета на рабочий стол?

по архитектуре лучше вообще без окна, т.к. все события завязаны на хэндл окна, а ты с ними борешься.
И в игрушках окна рисованные.
А будет ли этот хак со скрытием работать - х.з.
В винде десятке у меня начинает мигать в панели задач иконка при окончании фонового потока.
Привлекает внимание)).
11 ноя 18, 13:25    [21730934]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123,
Ты вот уже и в той теме говорил о том, как игрушки сделаны и в этой вот. Можешь скинуть сайт мб какой, где можно почитать о том, как они устроены? В идеале, чтобы там еще примерчик был, чтобы получше вникнуть.

И второй момент, насколько я понял, в предыдущей теме вопрос был решен таким образом, что мы попросту скрываем окно и работает уже с его элементами. И чтобы решить задачу из уже текущей темы, нужно также работать с элементами (т.е. скрыть окно и "вешать" обработку клика уже непосредственно на эти самые элементы).
11 ноя 18, 14:48    [21731010]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder,
Я давал ссылу на gamedev.ru

MrKoder
И второй момент, насколько я понял, в предыдущей теме вопрос был решен таким образом, что мы попросту скрываем окно и работает уже с его элементами. И чтобы решить задачу из уже текущей темы, нужно также работать с элементами (т.е. скрыть окно и "вешать" обработку клика уже непосредственно на эти самые элементы).

Это был вариант номер 1. К автору и обращайся.
Я топил за вариант номер 2.
По ТЗ он должен работать. Ну у самого опыта на wpf для реализации маловато.
Сделай ты по моему ТЗ. В чем проблема. Код в виде псевдокода я дал.
Профи промолчали, у меня счас Core проект. Мне некогда.
Делай.
11 ноя 18, 16:54    [21731077]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
(т.е. скрыть окно и "вешать" обработку клика уже непосредственно на эти самые элементы).
в прошлой теме проси Roman Mejtes скрыть окно и нафига ты создал данную тему?
11 ноя 18, 16:57    [21731078]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123,
Создал новую, чтобы помойки на форуме на было. На кибере за разные вопросы в одной и той же теме могут настучать по голове
12 ноя 18, 01:57    [21731323]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
Прошлая тема здесь не при чем. Суть здесь абсолютно в другом
в прошлой теме было тз про ПЛАГИН к приложению.
Решено?
Покажи приложение А и плагин к нему Б.
Не решено? Пиши в старой теме.
12 ноя 18, 07:21    [21731347]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123,
В прошлой теме Roman Mejtes отписал решение: "Клик сквозь форму"
В этой теме: "Предотвратить вылет на рабочий стол при активации формы"

Если бы я мог написать этот плагин, то не писал бы сюда, наверное это крайне логично
Что ты хочешь, чтобы я скинул уже 25 раз? Мне его пост сюда переслать?
12 ноя 18, 11:17    [21731532]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

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

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
В прошлой теме Roman Mejtes отписал решение: "Клик сквозь форму"

MrKoder
*плагин для предотвращения вылета на рабочий стол

Я бы одним ударом уил двух зайцев.
Рисованное информационное окно плагин.
Код ранее я дал.
Пробовать ты не хочешь.
Болтаешь второй день.
12 ноя 18, 11:47    [21731565]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
vb_sub
Member

Откуда:
Сообщений: 495
MrKoder,
можешь скинуть сюда xaml окна посмотреть? Уж больно красиво получилось.
12 ноя 18, 11:59    [21731582]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123,
Я не понимаю, что ты хочешь, чтобы я сделал конкретно.
Типа окно, которое пропускает сквозь себя клики и при КЛИКЕ же происходит его активация без вылета на рабочий стол? Это два в одном? Если да, то это бред, если нет - то каким боком здесь прошлая тема?

Прозрачность окна элементарно задается в WPF. Пример самого простейшего такого окна я сюда уже приложил. Как реализовывать именно обработку такой активации кликом я не знаю и не понимаю, поэтому и пишу сюда.
Возвращаясь к изначальному вопросу, что я должен написать?
12 ноя 18, 12:01    [21731588]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
vb_sub
MrKoder,
можешь скинуть сюда xaml окна посмотреть? Уж больно красиво получилось.


Я там подстер только бордеры. В Source у MediaElement надо еще только путь к файлу указать (у меня в нем музыкальный клип проигрывается).

<Window x:Class="WpfApp1.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:local="clr-namespace:WpfApp1" 
mc:Ignorable="d" 

 Title="MainWindow" Height="700" Width="450" AllowsTransparency="True" Background="Transparent" WindowStyle="None" ResizeMode="CanResizeWithGrip" Topmost="True">
    <Grid Margin="-23,-31,0,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="0*"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Border Width="Auto" Height="Auto" Name="windowFrame" 

BorderBrush="#395984" 
Background="#002342" 
Opacity="0.5" 

BorderThickness="10" 
CornerRadius="10,10,10,10" Margin="28,37,10,10" Grid.ColumnSpan="2" >
        </Border>




        <Button x:Name="closeButton" Click="closeButton_Click" Content="Close" Margin="156,543,122,135" Grid.ColumnSpan="2" />

        <Border x:Name="border1" BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="10" Background="#fff" VerticalAlignment="Top" Width="338" Margin="56,643,0,0" Grid.ColumnSpan="2"/>
        <MediaElement Grid.ColumnSpan="2" Source="" HorizontalAlignment="Left" Height="151" Margin="90,106,0,0" VerticalAlignment="Top" Width="304"/>


    </Grid>
</Window>
12 ноя 18, 12:07    [21731592]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
vb_sub
Member

Откуда:
Сообщений: 495
MrKoder,
может тебе попробовать поработать с менеджером уведомлений в WIN 10, чтобы тебе не все приложение разворачивать, когда пришло сообщение какое-либо, а ответить прямо в уведомление. API для wpf по работе с уведомлениями есть точно, а вот насчет можно ли прямо в уведомление зашить какой- либо функционал не уверен.
12 ноя 18, 12:07    [21731594]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
vb_sub,
Но тут возникает такой момент, что не у всех WIin10 стоит. Плюс я пример приложения то привел чисто на бум. Это ведь может быть и музыкальный плеер, какой-нибудь, может быть даже мониторинг ресурсов компьютера и т.д. и т.п.. Что, зачем, для чего это уже другой вопрос. Суть в том, чтобы научить программу работать поверх окна текущего приложения после его активации.

У меня были еще и такие мысли, что ведь изначально, запущенное приложение привязывается к рабочему столу. Т.е. позиционирование опять же, мы ведь можем делать относительно именно рабочего стола (если пишем вот так
public double screenHeight = SystemParameters.FullPrimaryScreenHeight;
        public double screenWidth = SystemParameters.FullPrimaryScreenWidth;
        this.Top = (screenHeight - transparentWindows.Height) / 0x00000002;
        this.Left = (screenWidth - transparentWindows.Width) / 0x00000002;

).

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

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

Откуда:
Сообщений: 45
Petro123
MrKoder
Это ведь может быть и музыкальный плеер,
чужой в чужом процессе?

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

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
Petro123
пропущено...
чужой в чужом процессе?

Не совсем понял вопрос
нажми 3 клавиши, диспетчер.
Плеер будет иметь свой процесс и твое приложение из одного окна второй. Так?
12 ноя 18, 12:25    [21731622]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

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

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

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

Откуда:
Сообщений: 45
Petro123
и как будем управлять или что делать собрался?

Это было лишь предположение, как реализовать данную задачу я не знаю, повторяю уже 3 раз
Если это нереализуемо -окееей, закрыли тему и все
Если реализуемо и знаешь как - подскажи, не хочешь подсказывать, тебя опять же, никто ни к чему не принуждает
12 ноя 18, 12:31    [21731644]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Я, к сожалению, аськой никогда не пользовался
Но насколько я понял, это будет просто информационное окно? Т.е. тупо вывод информации?
12 ноя 18, 12:32    [21731646]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
Если реализуемо
для джуна нет. Забудь
MrKoder
просто информационное окно? Т.е. тупо вывод информации?
откуда? Придумай что ли.
12 ноя 18, 12:34    [21731653]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
Щас проверил на вин7.
Сзади моя прога работает в фоне.
Спереди поставил notepad.
После окончания работы не заслонило моя прога переднее приложение.
О чем топик я не понял.
12 ноя 18, 12:39    [21731659]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123
Щас проверил на вин7.
Сзади моя прога работает в фоне.
Спереди поставил notepad.
После окончания работы не заслонило моя прога переднее приложение.
О чем топик я не понял.


Скинь прогу, которую ты запускаешь
Я на ее примере тогда и объясню, чтобы было понятнее зачем этот топик
12 ноя 18, 12:55    [21731675]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

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

Откуда:
Сообщений: 495
MrKoder,
ты по ходу хочешь, чтобы твое приложение работало типа Skype, когда играешь в cs 1.6, прицелился в AWP - и тут рисуется skype поверх всего экрана?
12 ноя 18, 13:21    [21731724]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Давайте попробую еще разок объяснить. Чисто для примера, запускаю свою программу, которая будет висеть поверх всех окон и захожу в ту же саму CS.
На первом скриншоте я играю в контру и окно моего приложения неактивно.
После того, как я кликом активирую мое окно у меня вылезает снизу панель задач. Вот этого быть не должно. Игра как была во весь экран - так и должна оставаться в том же режиме.

К сообщению приложен файл. Размер - 143Kb
12 ноя 18, 14:03    [21731776]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Второй скрин

К сообщению приложен файл. Размер - 145Kb
12 ноя 18, 14:03    [21731779]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
vb_sub
Member

Откуда:
Сообщений: 495
MrKoder,
да не знаю как сейчас, а старый скайп так и работал- таск бар не вылезал.
Ну а если перед тем как твое приложение должно выскочить перед полноэкранным принудительно прятать taskbar и потом его отображать?
12 ноя 18, 14:10    [21731785]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
+
Поставь себе второй монитор и не парься
12 ноя 18, 14:14    [21731792]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
Petro123
Member

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

Откуда:
Сообщений: 45
Petro123
MrKoder
После того, как я кликом активирую мое окно
оно пропустило клик под себя и активировалось?


Это окно не сквозное для кликов, оно, как и обычное любое другое окно, ловит клики
12 ноя 18, 14:54    [21731854]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
MrKoder
Member

Откуда:
Сообщений: 45
vb_sub
MrKoder,
да не знаю как сейчас, а старый скайп так и работал- таск бар не вылезал.
Ну а если перед тем как твое приложение должно выскочить перед полноэкранным принудительно прятать taskbar и потом его отображать?


Вот ту такой вопрос тогда, а как приложение поймет, что оно накладывается на другое приложение, которое работает в полноэкранном режиме?
12 ноя 18, 14:55    [21731855]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
vb_sub
Member

Откуда:
Сообщений: 495
Здесь 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)
Сообщений: 38457
MrKoder
Это окно не сквозное для кликов
задолбал. То сквозное, то обычное, то главное окно main приложения.
Ужас в постановке задачи.
12 ноя 18, 15:14    [21731884]     Ответить | Цитировать Сообщить модератору
 Re: Общение с окном программы без вылета на рабочий стол, если находимся в другом приложении  [new]
vb_sub
Member

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


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

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

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

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

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

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