xxyxxb2080 Ответов: 2

Как я могу сделать свое собственное приложение сверху в меню "Пуск"?


Я пишу небольшое настольное приложение (wpf main form) на языке C# (. net4.0).IDE:vs2013;

И я хочу, чтобы мое приложение находилось в верхней части меню "Пуск" (Windows 10).

Смотрите скриншот того, что я хочу для своего небольшого приложения.

Что я уже пробовал:

1.приложение должно требовать uiAccess (app.manifest)
2.приложение должно утверждать “самое верхнее” позиционирование окна (либо в Win32/SetWindowPos, либо в свойстве WinForms/WPF “самое верхнее”, программно или иным образом)
3.без внесения изменений в параметр групповой политики он должен быть установлен в каком-либо надежном месте [C:\Windows, C:\Program файлы, C:\Program файлы (x86)].

Dave Kreskowiak

Какой снимок экрана?

xxyxxb2080

мой демо-источник:
<Window x:Class="WpfTopmost.Главное окно"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
описание:х="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStyle="Нет"
AllowsTransparency="True"
Загружается="Window_Loaded"
Фон="Прозрачный"
Заголовок="файл MainWindow" высота="130" ширина="130"и GT;
<Grid Background="прозрачный">
<Ellipse Fill="прозрачный" Stroke="зеленый" StrokeThickness="3">



-------------------------------------------------

использование системы;
использование системы.Коллекции.Общий;
использование System.Linq;
используя системы.Во время выполнения.InteropServices;
использование System.Text;
использование системы.Нарезание резьбы;
использование системы.Нарезание резьбы.Задачи;
использование системы.Окна;
использование системы.Окна.Управления;
использование системы.Окна.Сведения;
использование системы.Окна.Документы;
использование системы.Окна.Ввод;
использование системы.Окна.Средства массовой информации;
использование системы.Окна.Средства массовой информации.Изображений;
использование системы.Окна.Навигация;
использование системы.Окна.Формы;

пространство имен WpfTopmost
{
/// <резюме>
/// Файл MainWindow.язык XAML 的交互逻辑
///
публичный частичный класс MainWindow : Window
{
частный объект _thisLock = новый объект();
публичное главное окно()
{
метод InitializeComponent();
}

private void Window_Loaded(отправитель объекта, RoutedEventArgs e)
{
Thread globalThread = новый делегат Thread((ThreadStart)
{
MouseStopTimeSpan();
});
глобалтрейд.IsBackground = true;
глобалтрейд.Начать();
}

частный недействительными MouseStopTimeSpan()
{
пробовать
{

в то время как (правда)
{
пробовать
{
Нить.Сон(200);
замок (_thisLock)
{
этот.Диспетчер.Invoke(новое действие(() =>
{
// SetWindowPos(, -1, 0, 0, 0, 0, 0x4000 | 0x0001 | 0x0002); 我以前试过这个效果不太好,所以注掉了
//HwndSource source = (HwndSource)PresentationSource.FromVisual(это);
//IntPtr handle = источник.Ручка;
//bool b1 = BringWindowToTop(ручка);
этот.Верхний = ложь;
//Нить.Сон(2);
этот.Верхний = истина;
//HwndSource source = (HwndSource)PresentationSource.FromVisual(это);
//IntPtr handle = источник.Ручка;
//bool b1 = BringWindowToTop(ручка);



//系统所在鼠标位置
Мышиный столб.Точка p = новый MousePosTool.ТОЧКА();
если (MousePosTool.GetCursorPos(out p))//API方法
{
этот.Top = p.Y - 65;
этот.Слева = p.X - 65;
}
}), нулевой);
}
}
поймать (исключение бывший)
{

Ящик для сообщений.Показать(напр.сообщение);
}

}
}
поймать (исключение бывший)
{

Ящик для сообщений.Показать(напр.сообщение);
}
}
}

публичный статический класс MousePosTool
{
/// <резюме>
/// 设置鼠标的坐标
///
/// <param name="x">横坐标
/// <param name="y">纵坐标
[DllImport("User32")]
public extern static void SetCursorPos(int x, int y);
пункт общественной структуры
{
public int X;
public int Y;
публ

Dave Kreskowiak

Ваш снимок экрана не имеет никакого смысла. Где вы хотите, чтобы значок этого приложения появился? Или вы говорите о том, чтобы ваше окно приложения отображалось поверх всех остальных окон?

xxyxxb2080

Я хочу сделать свое собственное приложение сверху в window10

xxyxxb2080

мое окно приложения отображается поверх всех остальных окон.В операционной системе windows10.
операционная система windows7 и windows8 добились успеха.

2 Ответов

Рейтинг:
17

Dave Kreskowiak

Насколько я знаю, у вас не может быть самого верхнего окна над верхней частью меню "Пуск" в Windows 10.

Приложения, которые у меня есть, тоже не отображаются в верхней части меню "Пуск".


xxyxxb2080

Неужели нет никакого решения?

Рейтинг:
0

xxyxxb2080

код на языке XAML:

<pre><Window x:Class="WpfTopmost.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        WindowStyle="None"

        AllowsTransparency="True"

        Loaded="Window_Loaded"

        Background="Transparent"

        Title="MainWindow" Height="130" Width="130">
    <Grid  Background="Transparent">
        <Ellipse Fill="Transparent" Stroke="Green" StrokeThickness="3"></Ellipse>
    </Grid>
</Window>



код на языке XAML.в CS:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    try
     {
       Thread globalThread = new Thread((ThreadStart)delegate
                {
                    MouseStopTimeSpan();
                });
                globalThread.IsBackground = true;
                globalThread.Start();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
}


private void MouseStopTimeSpan()
        {
            try
            {

                while (true)
                {
                    try
                    {
                        Thread.Sleep(2);
                        lock (_thisLock)
                        {
                            this.Dispatcher.Invoke(new Action(() =>
                            {
                               
                                this.Topmost = false;
                                //Thread.Sleep(2);
                                this.Topmost = true;
                               
                            }), null);
                        }
                    }
                    catch (Exception ex)
                    {

                        MessageBox.Show(ex.Message);
                    }

                }
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
        }


Dave Kreskowiak

Перестаньте публиковать материал как решение вашего собственного вопроса!