С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
coddex
0 / 0 / 0
Регистрация: 14.08.2015
Сообщений: 5
1

Закрепление (добавление) программы в панели задач в windows 7, 8

15.09.2015, 15:18. Просмотров 698. Ответов 6
Метки нет (Все метки)

Добрый день!

Подскажите пожалуйста, поставили задачу - необходимо дописать приложение так, что бы при запуске приложения оно само копировалось из места запуска в определенную папку (например, рабочий стол) и затем добавлялось в панель задач в windows 7 и более поздние версии. Дописываю приложение в Visual Studio 2013 под Windows 7. Наткнулся на то, что для реализации подобной задачи необходимо воспользоваться компонентом ITaskbarList3, для этого установил Windows 7 SDK, но он не хочет настраиваться под Studio 2013, говорит, что нужна более ранняя версия студии. Так же хотел бы учесть, что проект использует NET Framework 3.5. Как быть в данной ситуации, подскажите пожалуйста. Ничего толкового на форуме и в интернете не нашел, видимо потому что Studio 2013 относительно недавно вышла.

Добавлено через 2 часа 12 минут
Наткнулся на две статьи, но, в силу отсутствия соответствующих знаний, не получается собрать это все воедино.. помогите пожалуйста:
http://habrahabr.ru/sandbox/28256/
http://stackoverflow.com/questions/1...pp-doesnt-work
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2015, 15:18
Ответы с готовыми решениями:

Получить цвет панели задач Windows
Здраствуйте. Как в C# можно получить цвет панели задачь Windows или цвет...

Свойство окна формы (перекрытие всего экрана и панели задач Windows)
Привет всем, какое свойство окна формы позволяет "закрывать" весь экран, ...

Закрепление в панели задач
Как сделать чтобы мою программу можно было закрепить в поаели задач W7?

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

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

6
Storm23
Эксперт .NETАвтор FAQ
6569 / 3981 / 1448
Регистрация: 11.01.2015
Сообщений: 5,151
Записей в блоге: 32
15.09.2015, 17:46 2
Лучший ответ Сообщение было отмечено coddex как решение

Решение

Цитата Сообщение от coddex Посмотреть сообщение
добавлялось в панель задач в windows 7 и более поздние версии
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//(C)Storm23, 2015, GPL3
using System;
using System.IO;
using System.Threading;
using System.Windows.Forms;
 
namespace WindowsFormsApplication309
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            PinInTaskBar(Application.ExecutablePath, false);
        }
        
        private static void PinInTaskBar(string filePath, bool pin)
        {
            var shellAppType = Type.GetTypeFromProgID("Shell.Application");
            dynamic shell = Activator.CreateInstance(shellAppType);
 
            var path = Path.GetDirectoryName(filePath);
            var fileName = Path.GetFileName(filePath);
 
            var pinVerbName = "pin to taskbar";
            var unpinVerbName = "unpin from taskbar";
 
            switch(Thread.CurrentThread.CurrentUICulture.LCID)
            {
                case 1049://ru
                    pinVerbName = "закрепить на";
                    unpinVerbName = "открепить от";
                    break;
            }
 
            dynamic directory = shellAppType.InvokeMember("NameSpace", System.Reflection.BindingFlags.InvokeMethod, null, shell, new object[] { path });
            dynamic link = directory.ParseName(fileName);
 
            dynamic verbs = link.Verbs();
            for (int i = 0; i < verbs.Count; i++)
            {
                dynamic verb = verbs.Item(i);
                var verbName = verb.Name.Replace(@"&", string.Empty).ToLower();
 
                if ((pin && verbName.StartsWith(pinVerbName)) || (!pin && verbName.StartsWith(unpinVerbName)))
                    verb.DoIt();
            }
 
            shell = null;
        }
    }
}
2
coddex
0 / 0 / 0
Регистрация: 14.08.2015
Сообщений: 5
15.09.2015, 20:33  [ТС] 3
Не могу сообразить, динамические переменные, описанные через "dynamic" не поддерживаются в net 3.5 (на сколько я понял из интернета), и соответственно выдается ошибка: "Не удается обнаружить один или несколько типов, необходимых для компиляции динамического выражения. Возможно, отсутствует ссылка.", потому переделал на "var", но, как я понимаю, для подобной "переделки" необходимо знать конкретный тип данных, которые будут в этих переменных. Но данный вариант не прокатил.
В редакторе "подчеркиваются" четыре строки (начинаются на "dynamic directory", "dynamic link", "dynamic verbs", "dynamic verbs"), и не дает компилировать с ошибкой выше.
Направьте пожалуйста в нужном направлении.

Добавлено через 3 минуты
Забыл упомянуть об одной ошибке, судя по всему ключевой - Заранее определяемый тип "Microsoft.CSharp.RuntimeBinder.Binder" не определен или не импортирован
0
Storm23
Эксперт .NETАвтор FAQ
6569 / 3981 / 1448
Регистрация: 11.01.2015
Сообщений: 5,151
Записей в блоге: 32
15.09.2015, 21:21 4
Лучший ответ Сообщение было отмечено coddex как решение

Решение

Цитата Сообщение от coddex Посмотреть сообщение
Направьте пожалуйста в нужном направлении.
dynamic поддерживается начиная с Framework 4.0
0
coddex
0 / 0 / 0
Регистрация: 14.08.2015
Сообщений: 5
16.09.2015, 14:06  [ТС] 5
Разобрался, пришлось проект перевести на net 4.0, и подключить Microsoft.CSharp

Добавлено через 8 минут
Возник еще один вопрос, где именно в проекте меняется отображаемое имя в панели задач? Переименовывание скомпилированного файла никак не влияет на отображаемое имя, отображается имя проекта (или какой-то другой параметр, схожий с именем проекта).

Добавлено через 59 минут
Заметил небольшую странность, на компьютере, где стоит студия - в панели задач отображается имя проекта, на другом компьютере отражается "описание" из свойства программы.
0
Storm23
Эксперт .NETАвтор FAQ
6569 / 3981 / 1448
Регистрация: 11.01.2015
Сообщений: 5,151
Записей в блоге: 32
16.09.2015, 15:22 6
Цитата Сообщение от coddex Посмотреть сообщение
где именно в проекте меняется отображаемое имя в панели задач? Переименовывание скомпилированного файла никак не влияет на отображаемое имя, отображается имя проекта (или какой-то другой параметр, схожий с именем проекта).
В проекте в папке Properties есть файл AssemblyInfo.cs. В нем есть строчка AssemblyTitle. Именно это имя и отображается в таскбаре.
0
coddex
0 / 0 / 0
Регистрация: 14.08.2015
Сообщений: 5
16.09.2015, 15:23  [ТС] 7
Спасибо большое! Тему можно закрыть. Все вопросы решены.
0
16.09.2015, 15:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2015, 15:23

Отображение формы в панели задач
Добавляю в проект форму Form2 public partial class Form1 : Form { ...

Отображение приложения на панели задач
Здравствуйте. У меня в приложении несколько форм. При пользовании приложением...

Скрыть форму с панели задач
Я сделал программу на пороле! и при правильном вводе он закрывает form1 и...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru