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

Интернет для Delphi-программиста


Информационный Канал Subscribe.Ru

Интернет для Delphi программиста.

Выпуск : № 49


Здравствуйте уважаемые подписчики рассылки "Интернет для Delphi программиста". Данная рассылка предназначена для всех кого интересует Delphi, здесь будут выкладываться ссылки на различные ресурсы интернета так или иначе связанные с Delphi: книги, исходники, программы... Изучайте Delphi один из лучших языков программирования!!!


ЗАДАТЬ ВОПРОС :

Правила рассылки: 
1. Не присылайте ответов на вопросы типа "да, нет".  
2. Если отвечаешь на вопрос - то отвечай подробно с примерами (желательно с исходником примера).
3. Тема вопросов - программирование на Delphi.
Внимание авторам: - Я не указываю ваши адреса из-за спама, но кто хочет, чтобы его email был - пишите, иначе только имя(ник).
Отправить вопрос


В интернете появился новый Интернет-магазин для программистов, в котором есть большое количество программного обеспечения для разработчиков и дизайнеров. Цена одного DVD - 300 руб. Доставка осуществляется по всей России. Рекомендую Вам приобрести следующие диски:

E-book - библиотека программиста (150 учебников по программированию)
DVD - Все для программиста 1,2
DVD - обучение программированию
и
DVD - Delphi

Так же в продаже имеется Microsoft Visual Studio 2005

И это ещё не всё, кроме этих дисков есть ещё не менее интересные, так что идём и выбираем.


Новые вопросы.


Ожидаются

Ответы.

Вопрос № 118 задаёт: Сергей Ставский Ответить 
Увожаемые программеры!
Есть вопрос: как на дельфи написать прогу, которая будут выполнять ряд действий в ворде (вид-колонтитул;вставка-автотекст- Filename and path) желательно не только теория. но и пример.
Спасибо.
Отвечает:  Бардаш Иван Иванович
Книга В.Н.Корнякова «Программирование документов и приложений MS OFFICE в DELPHI» или его серия статей «Суперфункции» в Интернете (где-то на сайте какого-то белорусского журнала). А книга идет с компашкой, на которой море работающих примеров.
Отвечает:  Burich-Caeser
Через API:
  Сначала получаешь хэндл окна через
  hW:=FindWindow('ClassName','WindowName');
  Указывать и имя окна и имя класса не обязательно.
  Затем этому окну начинаешь посылать сообщения (нажатия
  осуществляются через сообщение WM_COMMAND {SendMessage(hW, WM_COMMAND, 0, 0},
  а ввод текста через SetWindowText)
  Надеюсь помог.
  
З.Ы. И восьми бит тебе в байте.
Вопрос № 120 задаёт: Vitek  Ответить
Скажите, пожалуйста, есть-ли dll-хи или компоненты, которые проигрывали (декодирывали) медиа-файлы,или надо писать самому, если самом, то как?
Отвечает:  Denisss
Да, есть такие библиотеки. Для воспроизведения аудио-файлов очень хорошо подходит библиотека bass.dll (сайт http://www.un4seen.com). Для воспроизведения видео DLL-ов не нужно: воспользуйтесь набором компонентов DSPack.


Статья:    "Получение информации о окнах запущенных приложений." http://decoding.narod.ru/practic/wndinfo/wndinfo.html

Рано или поздно каждому программисту приходится работать с посторонними окнами. Для этого нужно знать как минимум Handle окна, над которым необходимо произвести какие-либо действия. Чтобы узнать Handle, можно воспользоваться одной из программ, которая может показывать информацию об окнах (некоторые из них можно скачать в разделе Download). Но мы ведь программисты, следовательно сами можем получить интересующую нас информацию. А начнем с того, что рассмотрим некоторые процедуры, позволяющие работать с чужими окнами, некоторыми из этих процедур мы воспользуемся при написании программы.


FindWindow

function FindWindow( IpClassName, IpWindowName: PChar ): HWND; Функция возвращает описатель окна, удовлетворяющий запросу (0 - если такого окна не найдено). IpClassName Имя класса, по которому призводится поиск среди ВСЕХ окон системы. IpWindowName Заголовок окна. Один из параметров может быть равен nil, тогда поиск ведется по другому параметру.


FindWindowEx

[Не поддержевается Windows NT] function FindWindowEx( Parent, Child: HWND; ClassName, WindowName: PChar ): HWND; Функция возвращает описатель дочернего окна, удовлетворяющий запросу (0 - если такого окна не найдено). Parent Handle родительского окна. Child Handle дочернего окна. ClassName Класс дочернего окна. WindowName Заголовок дочернего окна. Handle родительского окна нужно указать обязательно, handle дочернего окна скорее всего 0, так как именно его и возврашает эта функция. Один из двух последних параметров может быть равен nil, тогда поиск ведется по другому параметру.


GetWindow

function GetWindow( hWnd: HWND; uCmd: Cardinal ): HWND; Функция возвращает описатель дочернего окна, удовлетворяющий запросу (0 - если такого окна не найдено). hWnd Handle родительского окна. uCmd Определяет отношения между указанным окном и окном, чей дескриптор должен быть найден.


GetParent

function GetParent( hWnd: HWND ): HWND; Функция возвращает описатель родительского окна для окна hWnd. (0 - если такого окна не найдено). hWnd Handle окна.


WindowFromPoint

function WindowFromPoint( Point: TPoint ): HWND; Функция возвращает описатель окна, которое находится в указанных координатах. Point Координаты пикселя.


IsWindow

function IsWindow( hWnd: HWND ): Bool; Возвращает True, если окно с заданным описателем существует и False в противном случае. hWnd Дескриптор окна.


IsWindowVisible

function IsWindowVisible( hWnd: HWND ): Bool; Возвращает True если данное окно видимо и False в противном случае. hWnd Дескриптор окна.


IsWindowEnabled

function IsWindowEnabled( hWnd: HWND ): Bool; Возвращает True если данное окно доступно и False в противном случае. hWnd Дескриптор окна.


ShowWindow

function ShowWindow( hWnd: HWND; nCmdShow: integer ): Bool; Функция показывает или прячет окно. Возвращает True в случае успешного выполнения и False в противном случае. hWnd Дескриптор окна. nCmdShow Константа, определяющая, что будет сделано с окном: SW_HIDE SW_SHOWNORMAL (SW_NORMAL) SW_SHOWMINIMIZED SW_SHOWMAXIMIZED SW_MAXIMIZE SW_SHOWNOACTIVATE SW_SHOW SW_MINIMIZE SW_SHOWMINNOACTIVE SW_SHOWNA SW_RESTORE SW_SHOWDEFAULT SW_MAX


EnableWindow

function EnableWindow( hWnd: HWND; bEnable: LongBool ): Bool; Функция активизирует или дизактивизирует окно. Возвращает True в случае успешного выполнения и False в противном случае. hWnd Дескриптор окна. bEnable True если окно нужно сделать активным и False в противном случае.


CloseWindow

function CloseWindow( hWnd: HWND ): Bool; Функция закрывает окно. Возвращает True в случае успешного выполнения и False в противном случае. hWnd Дескриптор окна.


GetDesktopWindow

function GetDesktopWindow( hWnd: HWND ): Bool; Функция возвращает описатель окна Рабочего Стола (Desktop). Без параметров.


SetWindowPos

function SetWindowPos( hWnd, hWndInsertAfter: HWND; X, Y, cx, cy: Integer; uFlags: Cardinal ): Bool; Устанавливает окно в новую позицию. Возвращает True в случае успешного выполнения и False в противном случае. hWnd Дескриптор окна. hWndInsertAfter Описатель окна, перед которым в списке Z-Order будет вставлено окно hWnd, или одна из следующих констант: HWND_BOTTOM Поместить окно на дно списка Z-Order. HWND_TOP Поместить окно на верх списка Z-Order. X Новая позиция окна по X. Y Новая позиция окна по Y. cx Новая ширина окна. cy Новая высота окна. uFlags Одна или несколько (разделенных OR) следующих констант: SWP_NOSIZE Не изменять размер окна после перемещения (cx, cy игнорируются). SWP_NOZORDER Не изменять положение окна в списке Z-Order. SWP_SHOWWINDOW Сделать окно видимым после перемещения. SWP_HIDEWINDOW Спрятать окно после перемещения. SWP_NOACTIVATE Не передавать фокус окну после перемещения. SWP_NOMOVE Не перемещать окно (игнорируется X, Y).


GetWindowText

function GetWindowText( hWnd: HWND; IpString: PChar; nMaxCount: integer ): integer; Функция возвращает текст окна. Для формы это будет заголовок, для кнопки - надпись на кнопке. hWnd Описатель того окна, текст которого нужно получить. IpString Переменная, в которую будет помещен результат. nMaxCount Максимальная длина текста, если текст длиннее, то он обрезается.


SetWindowText

function SetWindowText( hWnd: HWND; IpString: PChar ): Bool; Функция устанавливает текст окна. hWnd Описатель того окна, текст которого нужно установить. IpString Строка, содержащая устанавливаемый текст.


GetClassName

function GetClassName( hWnd: HWND; IpClassName: PChar; nMaxCount: integer ): integer; Функция возвращает класс окна. Для формы это будет заголовок, для кнопки - надпись на кнопке. hWnd Описатель того окна, класс которого нужно получить. IpClassName Переменная, в которую будет помещен результат. nMaxCount Максимальная длина текста, если текст длиннее, то он обрезается.


GetWindowRect

function GetWindowRect( hWnd: HWND; var IpRect: TRect ): Bool; Функция вычисляет координаты окна. Возвращает True в случае успешного выполнения и False в противном случае. hWnd Описатель того окна, размеры которого нужно получить. IpRect Переменная, в которую будет помещен результат.

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


procedure TForm1.Timer1Timer(Sender: TObject);
var
  Wnd: HWND;                   // Hahdle найденного окна
  Pos: TPoint;                 // Позиция курсора
  Rect: TRect;                 // Координаты окна
  buff: array[0..255] of char; // Буфер
  WndText: string;             // Текст окна
  NameClass: string;           // Класс окна
begin
   // Получаем позицию курсора
   GetCursorPos( Pos );
   // Получаем Handle окна под курсором
   Wnd := WindowFromPoint( Pos );
   GetWindowRect( Wnd, Rect );
   GetWindowText( Wnd, buff, SizeOf( buff ) );
   WndText := StrPas( buff );
   GetClassName( Wnd, buff, SizeOf( buff ) );
   NameClass := StrPas( buff );

   // Выводим координаты курсора
   LabelPosX.Caption := 'X: ' + IntToStr( Pos.X );
   LabelPosY.Caption := 'Y: ' + IntToStr( Pos.Y );

   LabelHandle.Caption := 'Handle: ' + IntToStr( Wnd );
   LabelName.Caption := 'Name: ' + WndText;
   LabelClass.Caption := 'Class: ' + NameClass;
   LabelLeft.Caption := 'Left = ' + IntToStr( Rect.Left );
   LabelTop.Caption := 'Top = ' + IntToStr( Rect.Top );
   LabelWidth.Caption := 'Width = ' + IntToStr( Rect.Right - Rect.Left );
   LabelHeight.Caption := 'Height = ' + IntToStr( Rect.Bottom - Rect.Top );

   // Получаем Handle родительского окна 
   Wnd := GetParent( Wnd );
   GetWindowRect( Wnd, Rect );
   GetWindowText( Wnd, buff, SizeOf( buff ) );
   WndText := StrPas( buff );
   GetClassName( Wnd, buff, SizeOf( buff ) );
   NameClass := StrPas( buff );

   LabelParentHandle.Caption := 'ParentHandle: ' + IntToStr( Wnd );
   LabelParentName.Caption := 'ParentName: ' + WndText;
   LabelParentClass.Caption := 'ParentClass: ' + NameClass;
   LabelParentLeft.Caption := 'ParentLeft = ' + IntToStr( Rect.Left );
   LabelParentTop.Caption := 'ParentTop = ' + IntToStr( Rect.Top );
   LabelParentWidth.Caption := 'ParentWidth = ' + IntToStr( Rect.Right - Rect.Left );
   LabelParentHeight.Caption := 'ParentHeight = ' + IntToStr( Rect.Bottom - Rect.Top );
end;

.: Пример к данной статье :.

Исходники:   

APUtilCrypt v.1.0

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


Компоненты:   

RiverSoftAVG Charting Component Suite v.1.0b6

RiverSoftAVG Charting Component Suite (RCCS) это бесплатный (не коммерческий) пакет компонентов для построения диаграмм и Графиков в Вашем приложении.
Преимущество комплекта:
  • Избегает конфликтов с TeeChart, в случае когда Вы применяете компоненты использующие TeeChart и вызывающие конфликт между TeeChart Pro и стандартным компонентом TeeChart поставляемым с Delphi.
  • Бесплатный для некоммерческого использования.
  • Установка значений для диаграмм во время отладки.
  • Маштабируемость.
  • Point Chart может отображать изображения.
  • Shape Chart может отображать сложные формы вместе с изображениями.

DCPcrypt Cryptographic Component Library 2 Beta 3 с исходниками - отличный набор компонентов для реализации шифрования по самым известным алгоритмам. (размер 188 Kb).

ThemeEngine 5.01 с исходниками - скины.  (размер 4,83 Мb).

VolgaDB Controls library 3.8 с исходниками - небольшой набор компонентов для работы с БД. Включает в себя DBGrid, DBEdit, DBPeriod, DBFindEdit и парочку других.  (размер 460 Kb).

ZeosDBO 6.5.1-alpha с исходниками- отличный бесплатный компонент для работы с БД (MSSQL, Interbase/Firebird/Yaffil, MySQL, Postgres, Oracle, Sybase).  (размер 1,01 Мb).

InteBase Objects 4.5 с исходниками - неплохая замена FIBPlus для работы с Interbase/Firebird/Yaffil.  (размер 1,52 Мb).

RxLib для Delphi2005 с исходниками - знаменитый RxLib. Работоспособность не проверял по причине отсутствия Delphi 2005 .  (размер 1,06 Мb).

BM Thread для Delphi версия 1.2 с исходниками - отличный компонент, позволяющий добавить возможность многопоточной работы вашего приложения. (размер 220 Kb).

ABC Components 6.0.1 для Delphi 7 с исходниками - некогда популярный набор компонентов. Неплохая альтернатива LMD Tools.  (размер 656 Kb).

SQLDirect Component Library для Delphi 7 версия 4.1.3 с исходниками - неплохой компонент для доступа к базам данных. Аналог SDAC.  (размер 448 Kb).

Absolute Database 4.83 для Delphi 7 без исходников - отличный компонент для доступа к базам данных в своем формате. Конкурент EasyTable, DBISAM, KeyDB и иже с ними.  (размер 2,87 Mb).

Delphi VclSkin для Delphi 5-2005 версия 2.75 без исходников - скины.  (размер 2,87 Mb).

Nexus DB для Delphi 7 версия 1.03.1 с исходниками - компонент для работы с базами данных в своем формате. Есть свой Enterprise manager, SQL server. Почти так же быстр, как и DBISAM.  (размер 1,96 Mb).

SUIPack 5.8 с исходниками D7-D2005 - отличный набор компонентов для создания приложений со скинами.  (размер 1,64 Mb).


Интересные и полезные сайты по Delphi: Если Вы хотите, чтобы Ваш сайт был в этом разделе пишите.
http://www.noil.pri.ee/ - Здесь вы можете почитать статьи, скачать исходники и компоненты, пообщаться на форуме.
http://www.delphi.int.ru/ - Ресурс для Delphi-программистов, где каждый найдёт что-то полезное!
http://www.ExCode.ru - Программирование на высоком уровне
http://decoding.narod.ru - Сайт для Delphi-программистов со статьями автора, компонентами, FAQ, и другой полезной информацией.

Немного юмора:  :))

:)

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

:)

Он был настолько глуп, что даже кнопка "свернуть все окна" находилась на рабочем столе...

:)

Россия - страна недокументированных возможностей...

:)

Говорят, компания Microsoft скоммуниздила идею WebTV из нашего мультика "Зима в Простоквашино". Там некто П.Печкин утверждал, что у них "телевизор паутину показывает"...

:)

Встречаются два мужика. Один другому говорит:
- Блин! Заколебал меня этот мобильник! Звонит каждые пять минут! Достал!
- А ты его выкини!
- Ха! Пробовал! Так эта сволочь на виброзвонке обратно приползает!

:)

Програмист провозившись всю ночь с Виндой, утром выходит на балкон покурить, поднимает глаза вверх и говорит
- Боже и у тебя Windows...

:)

- Linux лучше чем NT.
- Чем лучше?
- Чем NT.


Дружественные рассылки:

Рассылки Subscribe.Ru
Программирование на Delphi
Рассылка сайта Delphi coding


Все кто хочет изучить Delphi и реально научиться писать свои программы, ЦПИ "Эверест" поможет Вам.
Всё, что Вам нужно это компьютер и доступ к интернету - для получения уроков.

10 причин в пользу платного обучения в ЦПИ "Эверест"…

1. Когда Вы платите деньги- появляется дополнительный стимул против лени: надо учиться, ведь деньги уже уплачены….
2. Учась платно, получаете удобный для Вас график работы.
3. Весь необходимый справочный материал Вы получите в свое время и на русском языке.
4. Используя интернет в качестве бесплатной библиотеки, Вы получаете все ее минусы:

  • трата времени на поиск необходимого материала (а это потерянные деньги и время). А у Вас есть лишние время и деньги?;
  • отсутствие гарантии, что Вы "осилите" данный материал, ведь пишут его, в основном, не педагоги- профессионалы, а программисты- профессионалы, а они пишут для таких же, как они. А Вы программист- профессионал?
  • отсутствие системности в скачиваемом материале (ведь человек, писавший для Вас материал, не знает, чем Вы владеете). А Вы обладаете системой знаний по Delphi?;

5. Стоимость обучения одного месяца в ЦПИ "Эверест" сравнима с ценой хорошей книги. Но часто ли Вам попадались книги, рассчитанные именно на Вас. Мы же работаем индивидуально.
6. Автор книги или магазин не несет никакой ответственности за то, поняли ли Вы материал или нет, мы же закрепляем за каждым курсантом преподавателя, курирующего Вас.
7. Освоив программирование в Delphi - Вы освоите:

  • основы настоящего программирования- структурного и процедурного программирования ;
  • систему работы с базами данных и SQL- запросами, а это одно из самых перспективных направлений в программировании;
  • язык программирования ObjectPascal, что позволит Вам легко перейти, при желании, на С или Паскаль;
  • работу с компьютерной графикой;
  • при желании - основы низкоуровневого программирования ( Ассемблер).

8. А это значит, что …Мы предлагаем получить "высшее образование" - профессию программиста всего за 1 год и 144 доллара, любой ВУЗ попросит в 3 раза больше за один только семестр.
9. Вы получаете самый практический курс в сети, поскольку теория дается только тогда, когда она действительно необходима…
10. Учиться у нас легко и просто. Весь материал доступен и простым людям, не имеющим никогда дел с программированием….


По всем вопросам обращайтесь ко мне.

Если вы встретили в интернете интересный сайт или статью, да и вообще, что угодно связанное с Delphi, поделитесь ссылкой.
Если можете написать статью связанную с Delphi - присылайте с радостью выложу.
Давайте поможем друг другу!  Архив рассылки.

Предложения, критику и пожелания пишите на e-mail.


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiinternet
Архив рассылки
Отписаться
Вспомнить пароль

В избранное