Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование (VB,C#,ASP,.NET): новости, советы, примеры



Выпуск # 258


http://www.kbyte.ru/

 

Новый выпуск!

Доброе время суток!
Меня зовут R-KDR-19826, представляю Вам очередной выпуск рассылки Kbyte.Ru!

 

Содержание выпуска

Система ЭКСПЕРТ

    Вопрос #000728: Проверка_файла

    Вопрос #000718: Localization and Cookies

    Вопрос #000712: как_поменять_расположение_контролев_страницы_??...

    Вопрос #000707: Как_положить_файл_в_сети__для_общего_скачивания...

    Вопрос #000700: Localization in ASP.NET2.0

Последнее на форумах

    Code name «Лена Цтулховна»

    Исторические сводки

    Примеры на Visual Basic .NET

    Аутентификация и Веб-сервис

    TIMER быстрее 10 мс

Последние статьи

    Взаимодействие с другими сайтами через HTTP (HttpWebRequest и HttpWebResponse)

    Работа с SQL – Запросы

    Использование XML.Serialization

    Выбор языка программирования для научных работ (2-я редакция)

    Работаем с MIME

Интересные коды и решения

Юмор на Kbyte.Ru

 

Система ЭКСПЕРТ

 

Система «Эксперт» - уникальная система, которая поможет решить, если не все, то многие Ваши проблемы с программированием и разработкой! Если у Вас есть какой-либо вопрос по программированию или разработке, то Вы всегда можете задать его нашим Экспертам! При этом каких-либо особых действий от Вас не потребуется! Просто отправьте Ваш вопрос на адрес mailto:expert@kbyte.ru, в теме письма укажите тему вопроса, в тексте – сам вопрос, и все! Эксперты дадут Вам ответ в течение 12-24 часов, на тот адрес, с которого Вы отправите вопрос. Все проще простого! Никакой регистрации и заполнение бесконечных форм, просто спросите и получите ответ ;-)


Вопрос #000728: Проверка_файла

Автор вопроса: Александр Орлов // 03.02.2008 / 15:49

Здраствуйте. У меня следующий вопрос: что нужно использовать, чтобы программа запускалась после проверки файла размером больше чем 6кб и меньше чем 10кб. Проверку "безразмерного" файла я написал, но как задать предел по размеру. Вот код, который у меня есть(для облегчения понимания). Заранее спасибо
private void Form1_Load(object sender, EventArgs e)
{
Opacity = 0;
if (System.IO.File.Exists("1.txt"))
{
Opacity = 1;
}
else
{

Form5 form5 = new Form5();
form5.Show();

}
}

Отвечает: EROS // 03.02.2008 / 19:13

Здраствуйте.
Для этого вам необходимо немого модифицировать процедуру Main вашего приложения которая находится в файле Program.cs. И если файла нет, или он не соответствует указанным размерам, то просто не запускать приложение. Сделать это можно следующим способом:

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
using System;
using System.IO;
using System.Windows.Forms;

namespace KByte.Experts.Eros
{
  static class Program
  {

    [STAThread]
    static void Main()
    {
      int m_minFileSize = 1024 * 6;  // min file size
      int m_maxFileSize = 1024 * 10; // max file size
      
      /** Path to test file */
      string m_filePath = Path.Combine(Application.StartupPath, "1.txt");
      
      try
      {
        /** Get file size in bytes */
        long m_fileSize = new FileInfo(m_filePath).Length;
        
        /** Check valid file size */
        bool m_isValidSize = (m_fileSize >= m_minFileSize && m_fileSize <= m_maxFileSize);
        if (!m_isValidSize)
          throw new Exception(string.Format("File '{0}' is invalid.", m_filePath));
      }
      catch (Exception ex)
      {
        /** Show error message */
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        /** Exit */
        return;
      }

      /** Start application */

      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      Application.Run(new Form1());
    }
  }
}

 

Вопрос #000718: Localization and Cookies

Автор вопроса: Taleh Mikailov // 01.02.2008 / 04:31

Доброго времени суток!
Совсем недавно нами обсуждалась тема локализации в ASP.NET 2.0...
Хотелось бы попробовать сохранять, выбранный пользователем язык, в куках(cookies).
Так как мой опыт работы с куки совсем бедный, решил обратиться к вам.
Основываясь на том, что на форме имеются 2-е кнопки(2-а флага English и French),
приведите пожалуйста небольшой пример кода.
Как создавать куки?
Как менять значение куки?
Как считывать значение куки ?
И в какой периуд жизненного цыкла страницы необходимо установить культуру?
Так же вопрос чем, отличается сессия от куки ???
Заранее благодарю.

Отвечает: Алексей Немиро // 01.02.2008 / 04:47

Здравствуйте, Taleh Mikailov.

Запись куков:

001:
002:
Response.Cookies["MyCookies"]["Name"] = "Vasia Pupkin";
Response.Cookies["MyCookies"].Expires = DateTime.Now.AddYears(10); // хранить 10 лет :)

Чтение:
001:
002:
003:
004:
if (Request.Cookies != null && Request.Cookies["MyCookies"] != null && Request.Cookies["MyCookies"]["Name"] != null)
{
 Page.Title = Request.Cookies["MyCookies"]["Name"] // получаем данные из куков и выводим в заголовок страницы
}


Получить доступ к Response и Request из любого другого места можно через HttpContext.Current

Session – это набор данных хранимый на сервере, идентификатор сессии передается пользователю через Cookies, средняя продолжительности жизнь Session составляет порядка 20 минут, хотя это значение можно поменять, но не стоит забывать о том, что память на сервере не резиновая :)

--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

 

Вопрос #000712: как_поменять_расположение_контролев_страницы_??...

Автор вопроса: Taleh Mikailov // 01.02.2008 / 04:31

Доброго времени суток!
С вашей помощью разобрался с локализацией Веб приложения !!! Спасибо !!!
Остался вопрос по поводу направления контролев на странице при выборе языка(флага) той страны, где пишут с права на лево...(например Иврит).
Тоесть, помимо того, что при нажатии на Израильский флаг, загружается фаил ресурсов, НУЖНО поменять расположение всех контролев страницы - НА ПРАВУЮ СТОРОНУ !
Объясните пожалуйста, как это можно сделать(ПРОГРАММНО) наилучшим образом !!!
Заранее благодарю.

Отвечает: Алексей Немиро // 01.02.2008 / 04:39

Здравствуйте, Taleh Mikailov.

Довольно интересный вопрос :)
Полагаю, в данном случае, оптимальным вариантом будет создать для нестандартных
страниц свой MasterPage и менять его у текущей страницы
вместе с языком. Сделать это можно при инициализации страницы через
метод Page.MasterPage = "путь к MasterPage", естественно, для этого
необходимо, чтобы страница изначально была сделана с MasterPage-ом.

--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

 

Вопрос #000707: Как_положить_файл_в_сети__для_общего_скачивания...

Автор вопроса: Taleh Mikailov // 25.01.2008 / 17:34

Доброго времени суток!
Имеется фаил размером 1 гб.
Можно ли положить его на какой-нибудь сервер для общего скачивания.
Тоесть, после того, как фаил находится на сервере, я даю линк определенным лицам и тем самым они могут скачать его(фаил) себе на машину!
Если Да, то как это сделать ?
И вообще каким образом лучше обмениваться файлами(больших размеров) в сети ?
Если можно приведите пример вариантов если их несколько.
Заранее благодарю!

Отвечает: Алексей Немиро // 01.02.2008 / 04:31

И вообще каким образом лучше обмениваться файлами(больших размеров) в сети ?

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

 

Вопрос #000700: Localization in ASP.NET2.0

Автор вопроса: Taleh Mikailov // 23.01.2008 / 12:43

Доброго времени суток!
Пытаюсь програмно поменять культуру, при нажатии на ImageButton, каждый ImageButton-это флаг страны.
Так же, как на вашем сайте!
Так вот для примера поставил только 2-флага, чтобы проверить работает или нет...
Но к сожалению не работает!!!
-------------------------
using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Resources;

using System.Globalization;

using System.Threading;

public partial class _Default : System.Web.UI.Page

{

protected string language = "en";

protected void Page_Load(object sender, EventArgs e)

{

}

protected override void InitializeCulture()

{

if (language.Trim() != UICulture.ToString())

{

Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(language);

}

base.InitializeCulture();

}


protected void SetCulture(string lang)

{

language = lang;

}

protected void ibtnFr_Click(object sender, ImageClickEventArgs e)

{

SetCulture("fr");

}

protected void ibtnEn_Click(object sender, ImageClickEventArgs e)

{

SetCulture("en");

}

}

-------------------------
Что я делаю не так ???
Помогите пожалуйста разобраться !!!

И еще вопрос: в чем разница между App_LocalResources и App_GlobalResources ???
В каком случае необходимо создавать -App_GlobalResources ?

Заранее благодарю!

Отвечает: Алексей Немиро // 23.01.2008 / 14:04

Здравствуйте, Taleh Mikailov.

ru, en, fr по-моему работать не будет, надо полностью указывать:
ru-RU
en-US
fr-FR
uk-UA
и т.п.

Код у вас тоже довольно непонятный.
Процедура SetCulture() бессмысленна, т.к. он всего лишь передает переменной language название указанного языка, при том, что инициализация культуры происходит гораздо раньше, чем вызов SetCulture(), и следовательно культура остается дефолтная.

Также, в вашем коде всегда будет выполняться это условие:
001:
002:
003:
004:
if (language.Trim() != UICulture.ToString())
{
 Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(language);
}

т.к. language.Trim() != UICulture, поскольку UICulture будет возвращать код культуры в формате xx-XX.

Можно сделать примерно так:

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
protected void SetCulture(string lang)
{
 if (!Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLower().StartsWith(lang))
 {
  Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);
  Response.Redirect(Request.RawUrl);
 }
}

protected void ibtnFr_Click(object sender, ImageClickEventArgs e)
{
 SetCulture("fr-FR");
}

protected void ibtnEn_Click(object sender, ImageClickEventArgs e)
{
 SetCulture("en-US");
}

Имена файлов ресурсов должны быть соответствующие (Default.aspx.fr-FR.rext, Default.aspx.en-US.resx)

И еще вопрос: в чем разница между App_LocalResources и App_GlobalResources

App_LocalResources - локальные ресурсы, доступные только на указанной странице, а App_GlobalResources - глобальные ресурсы, доступные для всего приложения.

--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

Отвечает: Алексей Немиро // 25.01.2008 / 05:28

Для наглядности, написал небольшой пример:
http://kbyte.ru/code/Show.aspx?id=106

 


Чтобы задать Ваш вопрос, отправьте его на адрес expert@kbyte.ru

Раздел Эксперт на сайте Kbyte.Ru

Наверх

 

 

Последнее на форумах

Code name «Лена Цтулховна» | Автор: Алексей
Добавлено: 03.02.2008 / 08:22 | ответов: 11 | просмотров: 119

На протяжение последних 1E лет, мы с EROS-ом работали над секретным проектом «Лена Цтулховна», и вот, сегодня представляем вашему вниманию неаимокрейшую альфа-версию Лены (см. вложение). Суть проекта довольно проста, есть Лена, у которой есть всякие прибамбасы, которые владелец клона Лены может использовать на свое усмотрение :)

В общем, проект построен на плагинах, плагины может писать любой, более ли менее знакомый с технологией .NET (только 2.х!). Плагины также могут быть любыми и выполнять различные функции. На данный момент есть два плагина от EROS-а, это игра «Судоку» и инструмент «Экранная лупа».

Ядро всего это дела лежит в сборке Kbyte.Team.Core.dll. Т.е., для создания плагина нужно всего лишь подключить эту сборку к проекту, и все. В этой же сборке (пространство имен Kbyte.Team.Controls) можно найти контрол для создания клеточных игр (морской бой, шашки, пешки и т.п.), или еще чего-нибудь клеточного :) (для примера смотрите игру «Судоку»), количество контролов в будущем может быть увеличено, собственно вы сами можете что-нибудь сделать и предложит свое творение для включения в Ядро. Изменения основного интерфейса маловероятны.

Что касается (k)Лены (w)Цтулховны (KbyteWorld.exe), то она будет немного изменена и доделана в зависимости от потребностей, но на работе самих плагинов это не отразится. На данный момент в менеджере реализован необходимый минимум функционала для более ли менее комфортной работы с плагинами и самой программой. Если есть предложения по поводу самой Лены, предлагайте :)

Если вас это заинтересовало, и вы хотите принять участие в проекте, то пишите в этот топик. Технические вопросы задавайте в соответсвующий форум.

Последняя версия Лены: альфа 0.003



Лена Цтлуховна версия 0.003
нажмите, чтобы увеличить


Ядро:


Текущая версия: 1.1.0.0
Assembly: 1.1.0.26441

Модули:


Sudoku - игра "Судоку" (Автор: Eros)
Magnific - инструмент "Экранная лупа" (Автор: Eros). Экранная лупа позволяет увеличивать определенную область экрана, а также получать код цвета над курсором в различном формате (удобно для веб-мастеров и программистов).
Аналоговые часы (Автор: Eros).

Участники проекта:


Алексей
EROS

Ты можешь стать следующим! ;)

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Игорь Голов
Добавлено:29.01.2008 / 19:27
Ну чтож, неплохо для начала....
Я вот что думаю. Можно ведь через Лену и в Форумы постить, как считаете?

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: Алексей
Добавлено:30.01.2008 / 05:26
Конечно можно, работа с сервисами Kbyte.Ru уже предусмотрена (см. настройки программы), осталось только сделать эти сервисы :)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Игорь Голов
Добавлено:30.01.2008 / 15:31
Алексей!
Было бы неплохо Offline Help сделать...

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 4 | Автор: Алексей
Добавлено:30.01.2008 / 15:42
Хелп будет на форуме, на днях запостим пример плагина. А так, если есть конкретные вопросы, спрашивайте, спец. форум для этого уже есть.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 5 | Автор: Berd
Добавлено:30.01.2008 / 22:27
Название прикольное :)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 6 | Автор: Алексей
Добавлено:31.01.2008 / 05:10
Выход второй альфы Лены опять затягивается :) Ядро все же было решено переделать, изменения будут для плагин-мейкеров существенные, в положительную сторону, гемора будет меньше, но общая идея и основа остается не изменной.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 7 | Автор: Паша
Добавлено:31.01.2008 / 19:59
А можно мне поучавствовать в разработке Лены, а? Так интересно....

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 8 | Автор: Алексей
Добавлено:01.02.2008 / 04:26
Самой Лены (KbyteWorld.exe) - нет :), а вот плагины для Лены может делать любой желающий. На днях мы с EROS-ом постараемся опубликовать последнюю версию Лены, а также новое Ядро, и простой пример плагина.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 9 | Автор: Игорь Голов
Добавлено:02.02.2008 / 13:32
Алексей!
Если не трудно, публикуйте пожайлуста актуальную версию Цтулховны, например так:

Скачать последнюю версию Лены Цтулховны с полным набором модулей (версия хххххх)


Просто нет смысла качать, если такая версия уже есть, да и ориентироваться проще....
Спасибо.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 10 | Автор: Алексей
Добавлено:03.02.2008 / 09:08
Так и есть:
Последняя версия Лены: альфа 0.001



Второй версии не будет, т.к. в процессе разработки второй версии было выявлено много недочетов и полностью переделано ядро. Я надеюсь, в ближайшие 24 часа мы выпустим третью Лену Цтлуховну, новое Ядро и переработанные плагины, в том числе и простой пример плагина.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 11 | Автор: Алексей
Добавлено:03.02.2008 / 15:43
Пример плагина на VB .NET: http://kbyte.ru/Forum/Show.aspx?id=8104

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 12 | Автор: Алексей
Добавлено:03.02.2008 / 15:44
ps: все технические вопросы постите в соответсвующий форум.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Исторические сводки | Автор: Алексей
Добавлено: 03.02.2008 / 08:00 | ответов: 0 | просмотров: 36

В данном топике будут публиковаться более ли менее значимые события, произошедшие в жизни Лены Цтлуховны.

29 января 2008 года
Выход первой альфы Лены!
В связи с этим, было принято решение, что дата «29 января» должна стать красным днем календаря! Мы уже собрали 1E8480 электронных подписей и отправили E-Mail в Правительство РФ по этому вопросу, но к сожалению Правительство решило, что 29 января будет красным днем только в 2012 году, тем не менее это победа! Ура, товарищи! :)

30 января 2008 года
Грандиозное открытие Фанклуба Лены Цтулховны!

03 февраля 2008 года
Стартовала третья альфа Лены Цтлуховны, с новым Ядром, и дополнительным набором плагинов.

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Примеры на Visual Basic .NET | Автор: Алексей
Добавлено: 03.02.2008 / 00:00 | ответов: 0 | просмотров: 5

В данном топике будут публиковаться примеры модулей для Лены Цтлуховны в исходном виде. Если у Вас есть пример модуля, то Вы также можете его опубликовать в этом топике, для этого пришлите его по адресу admin@kbyte.ru

Простой пример : Часы в панели статуса [- скачать -]


001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
050:
051:
052:
053:
054:
055:
056:
057:
058:
059:
060:
061:
062:
063:
064:
065:
066:
067:
068:
069:
070:
071:
072:
073:
074:
075:
076:
077:
078:
079:
080:
081:
082:
083:
084:
085:
086:
087:
088:
089:
090:
091:
092:
093:
094:
095:
096:
097:
098:
099:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
'незабудьте все это дело добавить в проект
'через меню Add Refrence
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Drawing.Bitmap
Imports Kbyte.Team.Core
Imports Kbyte.Team.Core.Attributes
'----------------------------------------------

'стандартные типы плагинов: ////////////////////
'PluginType.Soft   - обычный софт, например блокнот, калькулятор, какой-нибудь супер-мупер проигрыватель и т.п.
'PluginType.Game   - игры
'PluginType.Extension - расширения, расширения возможностей самой Лены,
'            всяческая модификация лены
'PluginType.Tools   - инструменты
'///////////////////////////////////////////////

<PluginType(PluginType.Extension)> _
Public Class KbyteWorldClock
 Inherits KbyteTeamPlugin

 '****************************************************
 '****************************************************
 'ВНИМАНИЕ: не запутайтесь в Overrides и Overloads :-)
 '****************************************************
 '****************************************************

 ''' <summary>
 ''' Имя автора плагина
 ''' </summary>
 Public Overrides ReadOnly Property Author() As String
  Get
   Return "Алексей Немиро"
  End Get
 End Property

 ''' <summary>
 ''' E-Mail автора плагина
 ''' </summary>
 Public Overrides ReadOnly Property AuthorMail() As System.Net.Mail.MailAddress
  Get
   Return New System.Net.Mail.MailAddress("admin@kbyte.ru", "Aleksey S Nemiro")
  End Get
 End Property

 ''' <summary>
 ''' Url Автора плагина (если есть, если нет, можно не указывать)
 ''' </summary>
 Public Overrides ReadOnly Property AuthorUrl() As String
  Get
   Return "http://kbyte.ru"
  End Get
 End Property

 ''' <summary>
 ''' Аська автора (если есть , если нет, можно не указывать)
 ''' </summary>
 Public Overrides ReadOnly Property AuthorICQ() As String
  Get
   Return "261779681"
  End Get
 End Property

 ''' <summary>
 ''' Коопирайт автора
 ''' </summary>
 Public Overrides ReadOnly Property Copyright() As String
  Get
   Return "Copyright © Nemiro AS, 2008"
  End Get
 End Property

 ''' <summary>
 ''' Описание плагина (указывать не обязательно)
 ''' Если указано, отображается при просмотре свойств плагина
 ''' через окно "Менеджер плагинов"
 ''' </summary>
 Public Overrides ReadOnly Property Description() As String
  Get
   'можно отдавать просто текст, либо текст в формате rtf
   Return "Это супер-мупер пример плагина."
  End Get
 End Property

 ''' <summary>
 ''' Лицензионное соглашение (указывать не обязательно)
 ''' Если указано, отображается при просмотре свойств плагина
 ''' через окно "Менеджер плагинов"
 ''' </summary>
 Public Overrides ReadOnly Property Lisence() As String
  Get
   'лицензионное соглашение, также как и Description может быть
   'написано в текстовом формате и в формате rtf.
   'В данном случае я возвращаю лицензионное соглашение в формате rtf
   'из файла ресурсов
   Return My.Resources.Lisence
  End Get
 End Property

 ''' <summary>
 ''' Дата создания плагина
 ''' </summary>
 Public Overrides ReadOnly Property DateCreated() As Date
  Get
   Return New Date(2008, 2, 2) 'ymd
  End Get
 End Property

 ''' <summary>
 ''' Название плагина
 ''' </summary>
 Public Overrides ReadOnly Property Name() As String
  Get
   Return "Простой пример"
  End Get
 End Property

 ''' <summary>
 ''' Так и должно быть :)
 ''' </summary>
 Public Sub New(ByVal appHelper As IAppHelper)
  MyBase.New(appHelper)
 End Sub

 ''' <summary>
 ''' Данная процеду вызывается Леной, когда плагин включается.
 ''' Включать/выключать плагин можно в окне Лены "Менеджер модулей" (см. опции),
 ''' также данная процедура вызывается при запуске самой Лены, при условии, что конкретный плагин был ранее включен
 ''' </summary>
 Public Overrides Sub Activate()
  'здесь можно создать нужные элементы на форме Лены,
  'добавить кнопки в меню, либо сразу отобразить какую-нибудь форму.
  'В общем, что зде будет, зависит от вашей фантазии :)

  '/////////////////////////////////////////////////////////////
  'вот, что есть в вашем распоряжении:
  'Me.MdiForm     - главная форма Лены
  'Me.MainMenu    - главное меню Лены, можно делать с ним все, что угодно
  '           Для каждого типа плагина в меню есть зарезервированные элементы.
  '           Если в этих менюшках ничего нет, то они не видимые.
  '           Найти эти элементы можно по свойству Tag: Programs, Games,
  '           Tools, Extensions.
  'Me.MainStatusBar  - панель статуса Лены (внизу окна)
  'Me.MainToolBar   - панель инструментов Лены
  '           На самом деле, панелей инструментов у Лены всего пять штук :)
  '           Каждая панель предназначена для определенного типа плагина,
  '           обратите внимание на атрибут <PluginType(PluginType.Extension)>
  '           указанный при объявлении данного класса. Лена отдает плагину нужную
  '           панель, в зависимости от указанного в атрибуте типа плагина.
  '           Если у плагина нет типа, то Лена отдает ему дефолтную панель
  '           инструментов. Тем не менее, какую бы панель не отдала Лена,
  '           у вас есть возможность работать с любой другой панелью
  '           инструментов, а также создавать свои панели инструментов.
  '           Найти любую другу панель можно в контейнере, в котором все эти
  '           панели лежат. Получить доступ к контейнеру можно через свойство
  '           Parent текущей панели инструментов: MainToolBar.Parent.
  '           Точно также можно и добавлять новые панели инструментов.
  '
  'Собственно, у вас есть сама форма, и при желании, вы можете найти в ней все что угодно
  '/////////////////////////////////////////////////////////////

  'Обратите внимание, если вам нужно использовать панель инструментов,
  'то вы можете автоматически добавить кнопку на панель инструментов Лены,
  'вызвав метод MyBase.CreateInitButton()

  'в данном случае, я добавляю новый элемент в панель статуса Лены,
  'в которой будет отображаться текущее время
  _SystemTime = New ToolStripStatusLabel(Now.ToString("HH:mm:ss"))
  _SystemTime.TextAlign = ContentAlignment.MiddleRight
  _SystemTime.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText
  _SystemTime.Image = My.Resources.img16x16 'картинка из ресурсов
  _SystemTime.BorderSides = ToolStripStatusLabelBorderSides.All
  AddHandler _SystemTime.MouseHover, AddressOf SystemTime_MouseHover 'обработчик движения мышки над часами
  AddHandler _SystemTime.MouseLeave, AddressOf SystemTime_MouseLeave 'обработчик движения мышки над часами
  Me.MainStatusBar.Items.Add(_SystemTime)

  'это обычный таймер, необходимый для работы текущего плагина
  Dim myTimer As New Timer()
  myTimer.Interval = 1000
  AddHandler myTimer.Tick, AddressOf Timer_Interval
  myTimer.Enabled = True
 End Sub

 ''' <summary>
 ''' Данная процедура вызывается Леной при отключении плагина.
 ''' В данной процедуре необходимо удалить весь добавленный вами балабас в Лену,
 ''' если этого не сделать, то скорей всего число пользователей вашего плагина
 ''' резко сократится :)
 ''' </summary>
 Public Overrides Sub Deactivate()
  'в данном конкретном плагине нужно удалить созданный элемент из
  'панели стутуса:
  Me.MainStatusBar.Items.Remove(_SystemTime)
  '---
  MyBase.Deactivate() 'так и должно быть :)
 End Sub

 ''' <summary>
 ''' Данная процедура обрабатывается, когда пользователь нажимает на главную кнопу плагина
 ''' в ToolBar-е (если есть, если нет, то нафиг не надо)
 ''' </summary>
 Public Overrides Sub StartPlugin(ByVal sender As Object, ByVal e As System.EventArgs)
  'в данном случае она не нужна.
  'Если ваш плагин использует ToolBar, то в эту процудуру можно вставить
  'обработчик события нажатия главной кнопки вашего плагина в ToolBar-е.
  'Это сделано для удобства, чтобы не писать обработчик события руками,
  'но использовать не обязательно.
 End Sub

 ''' <summary>
 ''' Вызывается Леной, когда пользователь нажимает на кнопку "Дополнительно"
 ''' в окне "Менеджер модулей".
 ''' Данную процеду использовать не обязательно, но с ее помощью можно
 ''' добавить новые вкладки в стандартное окно параметров плагина.
 ''' </summary>
 ''' <param name="propHelper"></param>
 ''' <remarks></remarks>
 Public Overloads Overrides Sub InitProperty(ByVal propHelper As IPropHelper)
  'propHelper.PropertyForm   - окно свойств плагина
  'propHelper.PropertyTabControl - TabControl в окне свойств Плагина
  'через propHelper.PropertyTabControl можно запросто добавить новую вкладку
  'в окно свойств данного плагина:
  Dim MyNewTab As New TabPage("Превед!") 'создали таб
  'можно засунуть в него любые другие контролы
  'написать обработчики событий и т.п.
  'для примера я засуну в него обычный TextBox
  Dim MyNewTextBox As New TextBox()
  MyNewTextBox.Multiline = True
  MyNewTextBox.Dock = DockStyle.Fill
  MyNewTextBox.Text = "МЕДВЕД!"
  'добавляем TextBox в таб
  MyNewTab.Controls.Add(MyNewTextBox)
  'добавляем сам таб
  propHelper.PropertyTabControl.TabPages.Add(MyNewTab)
 End Sub

 ''' <summary>
 ''' Данная функция возвращает иконку плагина указанного формата.
 ''' Рекомендуется указывать все возможные форматы.
 ''' </summary>
 ''' <param name="size">Размер</param>
 Public Overloads Overrides Function Image(ByVal size As ImageSize) As System.Drawing.Bitmap
  'этот код можно считать стандартным для всех плагинов
  Select Case size
   Case ImageSize.Small '16x16
    Return My.Resources.img16x16
   Case ImageSize.Normal '24x24
    Return My.Resources.img24x24
   Case ImageSize.Large '32x32
    Return My.Resources.img32x32
   Case ImageSize.Great '48x48
    Return My.Resources.img48x48
   Case Else
    Return My.Resources.img48x48
  End Select
  'в данном случае картинки берутся из файла ресурсов данного плагина
 End Function

#Region ">> Текущий плагин.."

 Private _SystemTime As ToolStripStatusLabel

 Public Sub Timer_Interval(ByVal source As Object, ByVal e As EventArgs)
  _SystemTime.Text = Now.ToString("HH:mm:ss")
 End Sub

 Public Sub SystemTime_MouseHover(ByVal source As Object, ByVal e As EventArgs)
  'через AppHelper изменяем основной текст статуса в панели статуса
  MyBase.AppHelper.SetStatusText("Превед! Медвед! Это часы, правда круто? :-)")
 End Sub

 Public Sub SystemTime_MouseLeave(ByVal source As Object, ByVal e As EventArgs)
  'через AppHelper изменяем основной текст статуса в панели статуса
  MyBase.AppHelper.SetStatusText(String.Empty)
 End Sub

#End Region

End Class

Colorized by: Eros.CodeSyntaxColor Engine

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Аутентификация и Веб-сервис | Автор: 5acred Phoenix
Добавлено: 02.02.2008 / 21:13 | ответов: 2 | просмотров: 49

Доброе время суток! Допустим, есть веб-сервис (.asmx), работа с ним ведётся из WinForms-приложения. Как реализовать аутентификацию юзвера?

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Алексей
Добавлено:03.02.2008 / 04:07
web:
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
Public Class ИтдИтп

 Public myHeader As BlaBlaBla

 <WebMethod(), SoapHeader("myHeader")> _
 Public Function HelloWorld() As String
  If myHeader Is Nothing OrElse (Not myHeader.Login = "Пупкин" AndAlso Not myHeader.Password = "Вася") Then Return "Сам хелоу!"
  Return "Ага, и тебе тогоже :)"
 End Function

End Class

Public Class BlaBlaBla : Inherits SoapHeader
 Public Login As String = ""
 Public Password As String = ""
 'еще что-нибудь
End Class

Colorized by: Eros.CodeSyntaxColor Engine

win:
001:
002:
003:
004:
005:
006:
007:
008:
Dim myAuthorization As New сайт.домен.BlaBlaBla()
Dim MyMy As New сайт.домен.ИтдИтп()
myAuthorization.Login = "Вася"
myAuthorization.Password = "не знаю"
MyMy.ИтдИтпAuthorizateValue = myAuthorization
'дальше все остальное

Colorized by: Eros.CodeSyntaxColor Engine

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: 5acred Phoenix
Добавлено:03.02.2008 / 16:24
Работает :) Спасибо

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


TIMER быстрее 10 мс | Автор: comexe
Добавлено: 01.02.2008 / 08:46 | ответов: 4 | просмотров: 81

Привет всем. По ходу разработки программного обеспечения по сопряжению ЭВМ с внешним устройством встала задача использовать таймер. На первое время минимального Tick в 10 мс вполне хватало, но растет мастерство, растут запросы.... :-) . Предел в 10 мс преодолеть не удалось, даже указывая 10 мс>Tick>1 мс, результат остался как при 10 мс. Ребят, если нетрудно, посоветуйте как можно ускорить этот таймер или же есть некоторая API-функция, или покопаться в реестре, или использовать некий скачиваемый ActiveX? Буду ждать ответов.
С уважением, ComExe.

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Алексей
Добавлено:01.02.2008 / 08:53
001:
002:
003:
004:
005:
006:
007:
008:
009:
Public Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long

Public Sub TimerProc(ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
 '... код ...
End Sub

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: comexe
Добавлено:01.02.2008 / 09:01
Спасибо Большое! Обязательно применю. Видимо,
001:
002:
003:
uElapse As Long

Colorized by: Eros.CodeSyntaxColor Engine
это и есть задаваемое время?

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Алексей
Добавлено:01.02.2008 / 09:21
Вот нормальный пример:

Модуль:
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
Автор Данила Беляев
'modTimer
Option Explicit
Option Private Module
Private Declare Function SetTimer Lib "user32" (ByVal lngHandle As Long, ByVal lngEvent As Long, ByVal lngElapse As Long, ByVal lngFuncion As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal lngHandle As Long, ByVal lngEvent As Long) As Long
Private Sub Progress()
  frmMain.lblMsg = CLng(frmMain.lblMsg) + 1
End Sub
Public Sub CloseTimer(ByVal lngHandle As Long)
  KillTimer lngHandle, 0
End Sub
Public Sub StartTimer(ByVal lngHandle As Long, ByVal lngInterval As Long)
  SetTimer lngHandle, 0, lngInterval, AddressOf Progress
End Sub

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


Форма
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
Option Explicit

Private Sub cmdRun_Click()
 StartTimer hWnd, 1 'modTimer.
End Sub

Private Sub Form_Unload(Cancel As Integer)
 CloseTimer hWnd 'modTimer.
End Sub

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


На форме нужен Label с именем lblMsg и CommandButton с именем cmdRun

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 4 | Автор: comexe
Добавлено:01.02.2008 / 09:30
Спасибо. Ну в этом то разберусь теперь. Здорово разжевано.... :-)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Наверх

 

Последние статьи

Взаимодействие с другими сайтами через HTTP (HttpWebRequest и HttpWebResponse)
Автор: Немиро Алексей | добавлено: 27.07.2007 / 14:01 | просмотров: 2529

В данной статье речь пойдет о том, как можно программно заполнить и отправить Web-форму, а также получить результат с использованием довольно простых классов - HttpWebRequest и HttpWebResponse.

Работа с SQL – Запросы
Автор: Хабибулин А. (aka Bille Gates) | добавлено: 22.07.2007 / 04:43 | просмотров: 4694

В данной статье рассмотрены часто используемые SQL-запросы и приведены примеры их использования.

Использование XML.Serialization
Автор: Немиро Алексей | добавлено: 19.07.2007 / 15:38 | просмотров: 1312

В данном обзоре речь пойдет об использование XML.Serialization в .NET и ее применении на примере сохранения и считывания настроек программы с использованием синтаксиса языка Visual Basic .NET.

Выбор языка программирования для научных работ (2-я редакция)
Автор: Юдин С. Ю. | добавлено: 15.03.2007 / 02:49 | просмотров: 3868

Идея написания этой статьи возникла после того, как на одном из сайтов по физике http://physics.nad.ru/aniboard/messages/291.html я обнаружил интересный алгоритм моделирования движения тела в поле постоянной напряженности по различным направляющим. Вернее, меня заинтересовал не весь алгоритм, т.к. основа их всех одна (принцип Даламбера, если не считать квазиалгоритма с применением уравнений Лагранжа 2-го рода) и различаются они только способом определения реакций в месте соприкосновения тел. ...

Работаем с MIME
Автор: Немиро Алексей | добавлено: 29.11.2006 / 14:46 | просмотров: 3364

Не так давно мне пришлось немного поработать MIME (Multipurpose Internet Mail Extension) - это стандарт почтовых сообщений, в РуНете (Russian Internet) я не нашел нормального описания спецификации MIME, и посему решил написать небольшую статейку на эту тему. В данной статье вы узнаете об основных особенностях и стандартах MIME, а также научитесь «читать» MIME с использованием синтаксиса языка Visual Basic .NET 2005.

 

Статьи на Kbyte.Ru

Наверх

 

Интересные коды и решения

Как сделать секундомер?
Дата добавления: 16.08.2006 / 23:26 | просмотров: 1527 | платформа: VB

Как получить имя пользователя? (System.Security)
Дата добавления: 24.03.2007 / 12:21 | просмотров: 1067 | платформа: VB .NET

Как изменить цвет строки в GridView при заполнении данными?
Дата добавления: 14.08.2006 / 14:25 | просмотров: 1601 | платформа: ASP .NET (VB)

Запись данных в файл
Дата добавления: 31.07.2006 / 17:20 | просмотров: 1112 | платформа: ASP .NET (VB)

Как запретить пользователю закрыть форму?
Дата добавления: 31.07.2006 / 12:10 | просмотров: 1051 | платформа: VB

Анализ тэгов
Дата добавления: 24.03.2007 / 11:10 | просмотров: 969 | платформа: RegEx

Как перенаправить посетителя на другую страницу, незаметно для него?
Дата добавления: 31.07.2006 / 14:42 | просмотров: 1327 | платформа: ASP .NET (VB)

Как программно изменить дату в Calendar?
Дата добавления: 25.03.2007 / 08:33 | просмотров: 1225 | платформа: ASP .NET (VB)

Анализ IP-адреса
Дата добавления: 24.03.2007 / 10:56 | просмотров: 987 | платформа: RegEx

Как удалить лишние пробелы из текста?
Дата добавления: 16.08.2006 / 19:05 | просмотров: 1447 | платформа: VB

 

Универсальные коды на Kbyte.Ru

Наверх

 

Юмор на Kbyte.Ru

Женщина звонит подруге на мобильный:
- Ты знаешь, где сейчас твой муж?
- Конечно, знаю. На работе.
- А я его вижу в моей постели с какой-то пышноволосой девицей.
- Спасибо за комплимент, дорогая. Только это не мой, а твой муж.

 

Рейтинг: 123
Всего голосов: 213
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Пpиходит обалденная блондинка к сексопатологy:
- Доктоp, со мною что-то не в поpядке!
- По-моемy, y вас все отлично.
- Тогда почемy мой мyж входит в меня в пять pаз pеже, чем в Интернет?

 

Рейтинг: 181
Всего голосов: 319
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

- А правда, что Билл Гейтс - самый известный человек не Земле?
- Нет, самый знаменитый человек - его мать, её вспоминают чаще.

 

Рейтинг: 182
Всего голосов: 316
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

"Продам дешево рыболовецкие снасти и рыбацкую одежду.
Телефон: 545-31. В случае, если трубку возьмет мужчина, следует сказать: "Ошибка".

 

Рейтинг: 703
Всего голосов: 764
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Знак судьбы. Дорожный знак "Ограничение скорости" сержант ГИБДД Петренко всегда считал для себя хорошим знаком.

 

Рейтинг: 1014
Всего голосов: 1427
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Это поyчительная истоpия о пользе знания сленговых выpажений в общении с пpостыми смеpтными, кои компьютеp видели лишь по TV...
Итак, идy по yлице, подходит гpyппа молодых людей, лет 17-18 от pодy, пpосят закypить... Я, как человек давно кypящий, отказать не могy, а посемy yделяю им паpочкy Camel-ов... Далее пpосят спичкy... Щелкаю Zippo-ой... Пpосят денег на доpогy до дома 8-(..)
(Они) - Ты, в натypе, чо, денег дашь?
(Я) - А зачем вам деньги ? :)
(О) - Ты чо, в натypе, Вася, обоpзел?
(Я) - Ты кого за мастдай юзаешь, ламеp виснyтый?
(О) - лица вытягиваются...
(Я) - Вы же меня анноите, сyкси...
(О) - Hy ты чего, мyжик, офигел?
(Я) - Я ведь сейчас Фаpидy нетмейл кинy, вы ведь все в пожизненный даyн осыпетесь, как девяносто пятый...
(О) - Hе, бpатан, давай pазбеpемся, кто ты такой? 8-()
(Я) - Мальчики, я ФИДОшный поинт, а вы даже на блевавщиков не тянете, только скpипите чего-то на две четыpеста без коppекции...
(О) - Чего делаем 8-(.............)
(Я) - Скpипите, пpичем без намека на коннект...
(О) - Ты чего, кpyтой?
(Я) - Схэнг-апнись, бага... Твое место - за тысячной Амигой...
(О) - Hе, нy ты чо? Hет денег, так и скажи, а чо наезжать-то????
(Я) - А еще pаз yвижy вас здесь, комплейн напишy NEC-y, и пpо вас и поинты ваши забyдyт... Тискайте альт-аш и pвите отседа.......

Hе скажy, что yбежали, но двигались не в пpимеp шyстpее, нежели ко мне... Так что yчите спец. словечки, кpyто, в натypе... :)))))

 

Рейтинг: 256
Всего голосов: 392
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Чем русский отличается от цыгана? Цыган никогда не хает тех, у кого он коня своровал...

 

Рейтинг: 694
Всего голосов: 928
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Учительница:
- Петя, составь предложение со словами "вылупился" и "цыплёнок".
Петя:
- Вася вылупился на мои новые кроссовки как новорождённый цыплёнок.

 

Рейтинг: 304
Всего голосов: 486
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Молодой человек старался получить освобождение от призыва, ссылаясь на близорукость. Он представил справку от окулиста и даже привел на призывную комиссию свою невесту, чтобы она подтвердила его физический недостаток. Увидев невесту, комиссия тотчас освободила молодого человека от воинской службы по причине его чрезвычайно слабого зрения.

 

Рейтинг: 510
Всего голосов: 698
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Дочь приходит домой пьяная и говорит отцу:
- Пап, налей водки!
Отец:
- Доченька, тебя же вырвет!
- А ты налей и отойди!

 

Рейтинг: 208
Всего голосов: 319
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Весь юмор на Kbyte.Ru

Наверх


Выпуск подготовил: R-KDR-19826

Редактор: Немиро Алексей

Copyright (c) Nemiro AS, 2005-2007


В избранное