Какие типы приложений невозможно написать на Net 2?
От: Аноним  
Дата: 17.01.07 08:25
Оценка:
Здравствуйте, интересуют в первую очередь написание следующих типов приложений:
1) ToolBand-ы для IE и для Desktop-а (встраиваемые панельки в IE и в TaskBar) и вообще все Shell-Extension (типа в Мой компьютер новую иконку добавить наподобие "Мои документы")
2) dll с обработкой глобальных хуков (клавиатура, мышь, создание окон)
3) Низкоуровневые Win-драйвера (наподобие vxd)
4) Winsock- и LSA-провайдеры
5) Print-мониторы
6) IIS-фильтры (именно фильтры)

И еще вопросы:
7) Как я понимаю, Net-dll файлы не могут экспортировать функции, поэтому создание вышеперечисленных приложений невозможно, так ли это?
8) Если это так, то можно ли написать какую-нибудь маленькую dll на С, которая бы занималась только тем, что загружала бы Net-сборку и вызывала бы ее методы?
Re: Какие типы приложений невозможно написать на Net 2?
От: Красин Россия  
Дата: 17.01.07 08:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>7) Как я понимаю, Net-dll файлы не могут экспортировать функции, поэтому создание вышеперечисленных приложений невозможно, так ли это?

Могут. Для этого делается dll-ка на managed c++
Re[2]: Интересует только C#
От: ыукпшл Россия  
Дата: 17.01.07 08:48
Оценка:
Здравствуйте, Красин, Вы писали:

А>>7) Как я понимаю, Net-dll файлы не могут экспортировать функции, поэтому создание вышеперечисленных приложений невозможно, так ли это?

К>Могут. Для этого делается dll-ка на managed c++

Извините, что сразу не написал — но интересует только C#
Re: Какие типы приложений невозможно написать на Net 2?
От: stump http://stump-workshop.blogspot.com/
Дата: 17.01.07 10:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, интересуют в первую очередь написание следующих типов приложений:

А>1) ToolBand-ы для IE и для Desktop-а (встраиваемые панельки в IE и в TaskBar) и вообще все Shell-Extension (типа в Мой компьютер новую иконку добавить наподобие "Мои документы")
Можно, поищи — есть примеры
А>2) dll с обработкой глобальных хуков (клавиатура, мышь, создание окон)
Можно см. здесь
А>3) Низкоуровневые Win-драйвера (наподобие vxd)
Нет (ИМХО)
А>4) Winsock- и LSA-провайдеры
Нет (ИМХО)
А>5) Print-мониторы
ничего не могу сказать
А>6) IIS-фильтры (именно фильтры)
нет. IIS работает managed кодом по другому.

А>И еще вопросы:

А>7) Как я понимаю, Net-dll файлы не могут экспортировать функции, поэтому создание вышеперечисленных приложений невозможно, так ли это?
могут.
А>8) Если это так, то можно ли написать какую-нибудь маленькую dll на С, которая бы занималась только тем, что загружала бы Net-сборку и вызывала бы ее методы?
да, конечно. (см. MSDN по ключевой фразе "Hosting the Common Language Runtime")
Понедельник начинается в субботу
Re: Какие типы приложений невозможно написать на Net 2?
От: desco США http://v2matveev.blogspot.com
Дата: 17.01.07 10:51
Оценка: 79 (2) +1
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, интересуют в первую очередь написание следующих типов приложений:

А>1) ToolBand-ы для IE и для Desktop-а (встраиваемые панельки в IE и в TaskBar) и вообще все Shell-Extension (типа в Мой компьютер новую иконку добавить наподобие "Мои документы")


Create a Shell Extension Handler thumbnail extractor with .net?


Unfortunately unmanaged C++ is really the only way to go here.

Writing in-process \shell extensions in managed code is actually a very dangerous thing to do because it has the effect of injecting your managed code (and the .NET Framework) into every application on the machine that has a file open dialog.

The problems occur because only one version of the .NET Framework can be loaded in a process at any given time (other shared components such as java and msxml have the same property and thus the same restriction).

If you write your shell extension using the 2.0 .NET Framework and an application built with the 1.1 .NET Framework uses a file open dialog, your shell extension will fail because it can not run on an earlier version. Things can get even worse if your shell-extension manages to get loaded in a process before another applications managed code does: your extension may force an existing application onto a different runtime version than the one it was expecting and cause it to fail.

Because of these problems we strongly recomend against using any single-instance-per-process runtime or library (such as the .NET Framework, java, or msxml) in an in-process shell extension.

Re[2]: Какие типы приложений невозможно написать на Net 2?
От: ыукпшл Россия  
Дата: 17.01.07 11:27
Оценка:
Здравствуйте, stump, Вы писали:
А>>7) Как я понимаю, Net-dll файлы не могут экспортировать функции, поэтому создание вышеперечисленных приложений невозможно, так ли это?
S>могут.

Для этого необходимо использовать unmanaged C++ или можно пометить метод как экспортируемый в C#?
Re[3]: Какие типы приложений невозможно написать на Net 2?
От: stump http://stump-workshop.blogspot.com/
Дата: 17.01.07 11:38
Оценка:
Здравствуйте, ыукпшл, Вы писали:

Ы>Здравствуйте, stump, Вы писали:

А>>>7) Как я понимаю, Net-dll файлы не могут экспортировать функции, поэтому создание вышеперечисленных приложений невозможно, так ли это?
S>>могут.

Ы>Для этого необходимо использовать unmanaged C++ или можно пометить метод как экспортируемый в C#?

Стандартными средствами только через ComInterop.
Читал про хак, который позволяет это сделать, но сам не пробовал.
Понедельник начинается в субботу
Re: Какие типы приложений невозможно написать на Net 2?
От: Morpheus_  
Дата: 17.01.07 12:39
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, интересуют в первую очередь написание следующих типов приложений:

А>1) ToolBand-ы для IE и для Desktop-а (встраиваемые панельки в IE и в TaskBar) и вообще все Shell-Extension (типа в Мой компьютер новую иконку добавить наподобие "Мои документы")

это все можно написать на C#, но есть один подводный камень, из-за чего делать это не рекомендуется. Дело в том что есть несколько версий .NET Framework (1 и 2), если написать два таких модуля на разных фреймворков, то возникнет конфликт, т.к. вышеперечисленные типы модулей грузятся в один процесс, но в один процесс может быть загружена только одна версия фреймворка. Т.е. если вы написали свой шел экстеншен на FW 2, а ктото другой написал другой шел экстеншен на FW 1, то два этих шел экстеншена не смогут ужиться вместе, т.к. какждый из них требует свою версию фреймворка, а в пространство процесса в котором они будут находится может быть загружена только одна версия FW...

А>2) dll с обработкой глобальных хуков (клавиатура, мышь, создание окон)


без проблем решается на C#

А>3) Низкоуровневые Win-драйвера (наподобие vxd)


нет, нельзя, это на unmanaged C

А>4) Winsock- и LSA-провайдеры

А>5) Print-мониторы
А>6) IIS-фильтры (именно фильтры)

не знаю

А>И еще вопросы:

А>7) Как я понимаю, Net-dll файлы не могут экспортировать функции, поэтому создание вышеперечисленных приложений невозможно, так ли это?

На C# можно написать сборку DLL, которая будет экспортировать функции и может использоваться из unmanaged App как обычная DLL, но эта фича не совсем документирована

А>8) Если это так, то можно ли написать какую-нибудь маленькую dll на С, которая бы занималась только тем, что загружала бы Net-сборку и вызывала бы ее методы?


можно
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Какие типы приложений невозможно написать на Net 2?
От: maloi_alex СССР  
Дата: 17.01.07 13:54
Оценка:
Здравствуйте, Morpheus_, Вы писали:

M_>На C# можно написать сборку DLL, которая будет экспортировать функции и может использоваться из unmanaged App как обычная DLL, но эта фича не совсем документирована


Если знаешь что за фича, поделись секретом
Re[3]: Какие типы приложений невозможно написать на Net 2?
От: ыукпшл Россия  
Дата: 17.01.07 13:59
Оценка:
Выше stump приводил ссылку на хак
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.