Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2007, 12:25   #1
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
Сообщение Несколько вопросов по Delphi 2005

Здравствуйте, господа! Очень приятно, что я нашёл такой форум!

В названии написал Delphi 2005, потому что на данный момент стоит именно эта версия (ещё стоит 7-ая, но я ей почти не пользуюсь).

Собираюсь написать программу (в субботу сдаю последний экзамен и сажузь за написание), пока несколько поверхностных вопросов:
  1. Как при создании файла задать ему свойство "Системный" и "Скрытый"?
  2. Как можно проверить какие файлы находятся в какой-то папке? То есть нужно будет проверить существует ли фал с определенным именем...
  3. Как можно отправить E-mail сообщение с определенным заголовком и содержанием?
  4. Как проверить запущенные программы и наличие в процессах определенной программы, чтобы исходя из этого программа что-то сделала?
  5. Есть ли возможность на протяжении работы программы постоянно проверять запущенные процессы?
Сразу говорю, что пытался что-либо найти в HELP-е, но так ничего толкового и ненашёл

P.S.:"Вот жаль, что я поздно нашёл ваш форум с конкурсом, а то у меня тоже есть программа для решения этих самых кроссвордов Я ещё успел написать калькулятор, который рисует граффики... Ну там много чего. Если кому интересно, то можно их скачать на сайте Моторолка.Ру в файлах -> Общий софт..."

Ну спасибо. Жду ответов. Надеюсь на вашу помощь.
Nez вне форума Ответить с цитированием
Старый 15.01.2007, 12:45   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

1.
SetFileAttributes('файл', атрибуты);
атрибуты:
faReadOnly
faHidden
faSysFile
faVolumeID
faDirectory
faArchive
faAnyFile
2.
fileexists ('путь файла')
функция вернет правду или ложь
3.
Если без использования Indy, то:
Код:
var
  EMailDestinationString, SubjectString, Line1String,
    Line2String, mailstring: string;
begin
  EMailDestinationString := 'gbamber@bamber.com';
  SubjectString := 'Message Subject';
  Line1String := 'This is the first line';
  Line2String := 'This is the second line';
  // Можно использовать несколько адресов, разделяя их точкой с запятой
  mailstring := 'mailto:' + EMailDestinationString +
    '?subject=' + SubjectString +
    '&body=' + Line1String +
    '%0d' + Line2String;

  if (ShellExecute(0, 'open', PChar(mailstring), '', '',
    SW_SHOWNORMAL) <= 32) then
    ShowMessage('Auto method failed.');
4.
Список процессов:
Код:
var
  Wnd: hWnd;
  buff: array[0..127] of Char;
begin
  ListBox1.Clear;
  Wnd := GetWindow(Handle, gw_HWndFirst);
  while Wnd <> 0 do begin {Не показываем:}
    if (Wnd <> Application.Handle) and {-Собственное окно}
      IsWindowVisible(Wnd) and {-Невидимые окна}
      (GetWindow(Wnd, gw_Owner) = 0) and {-Дочернии окна}
      (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков}
      then begin
      GetWindowText(Wnd, buff, sizeof(buff));
      ListBox1.Items.Add(StrPas(buff));
    end;
    Wnd := GetWindow(Wnd, gw_hWndNext);
  end;
  ListBox1.ItemIndex := 0;
5.
Используй проще timer
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 15.01.2007, 13:16   #3
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию

Огромное спасибо за ответ... Так, теперь давай попробую разобраться...

1. Ну тут никаких проблем;

2. Тоже разбираться несчем;

3. А вот тут дай посмотрю...
  1. Этот код просто вставляется в общий код кнопки или события, или можно просто запихать в процедуру и просто обращаться к ней.
  2. Первая строка - куда отправлять, да?
  3. Что такое Line1String и Line2String ?
  4. Что происходит в последнем If...then ? Если никто не должен догадываться об отправлении сообщения нужно убрать этот оператор?
4. И ещё несколько вопросов:
  1. Что такое Wnd (hWnd)?
  2. Ну вот вообщето.... я ничего из этого кда не понял.. Можно с небольшими пояснениями? ... Как-то не встречался с такими вещами
5. А веть и правда.. Всё банально.. спасибо, как-то недогодался (это потому что ещё не начинал... всё жду недождусь).

P.S.:"Спасибо за быстрый отзыв. И только пожалуйста не надо ко мне относиться как к конченному ламеру . Это я так.. на будущее.. ну просто... "
Nez вне форума Ответить с цитированием
Старый 15.01.2007, 13:23   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

3.
Можешь добавить к любой существующей процедуре
Первая строка - куда отправлять, да? да
Что такое Line1String и Line2String ? текст письма
# Что происходит в последнем If...then ? Если никто не должен догадываться об отправлении сообщения нужно убрать этот оператор?
если никто не должен догадываться, то исопльзуй indy, так:
ShellExecute(0, 'open', PChar(mailstring), '', '',
SW_SHOWNORMAL)
hwnd handle окна
Код:
ListBox1.Clear;
  Wnd := GetWindow(Handle, gw_HWndFirst); //Получаем указатель на первое окно
  while Wnd <> 0 do begin {Не показываем:} //Пока указатель не нулевой
    if (Wnd <> Application.Handle) and {-Собственное окно}
      IsWindowVisible(Wnd) and {-Невидимые окна}
      (GetWindow(Wnd, gw_Owner) = 0) and {-Дочернии окна}
      (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков} //Проверка нужное ли нам окно (процесс)
      then begin
//Если нужное, то получаем текст его щаголовка и добавляем этот текст в листбокс (вместо листбокса ты можешь использовать все что угодно)
      GetWindowText(Wnd, buff, sizeof(buff));
      ListBox1.Items.Add(StrPas(buff));
    end;
    Wnd := GetWindow(Wnd, gw_hWndNext); //Выбираем следующее окно
  end;
  ListBox1.ItemIndex := 0;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 15.01.2007, 13:39   #5
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию

Так, ну в случае с мылом надо просто вместо If...then вставить вон ту фигню... я так понял..

Теперь всё внимание к процессам:

Что означает "ненулевой указатель"? Я вот ещё ненашёл места, где можно сравнить строку заголовка с нужной мне строкой... А нет.. GetWindowText - это будет строка? ListBox мне там не нужен.. Просто проверить... И выключить программу при необходимости.

"... and (GetWindow(wnd, gw_Owner) = 0) and ..." - это вот тут мы какое условие проверяем?
И я думаю, что скрытые окна не надо исключать..... А то какие-нибудь прохвосты смогут скрыть враждебное окно и провести меня... Или я что-то не так понял?
Nez вне форума Ответить с цитированием
Старый 15.01.2007, 14:26   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Пока следующий поиск окна не даст нулевых результатов, т.е. пока не закончатся все процессы.
GetWindowText -заголовок окна
в этом примере невидимые окна учитываются
(GetWindow(Wnd, gw_Owner)- если найденное окно является дочерним для какого-то окна, то исключаем его
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 15.01.2007, 14:54   #7
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию

Квэнди, огромное спасибо. Всё, что ты (вы) мне рассказал(ли) я понял. Начну писать программу, появятся новые вопросы - напишу, поэтомцу пожалуйста тему не закрывайте.

Вот ещё забыл такой вопрос задать: Можно ли как-нибудь в 2005-ой Delphi сделать не стандартное XP-шное окно, а какой-нибудь графический "изыск"? Ну там полупрозрачное, .. ну вот типа как скины для каких-нибудь программ... Вы поняли о чём я? Ну так можно?

И ещё вопросик сразу, пока не забыл: Как поменять ярлык программы (причём не ту, которая в углу окна высвечивается, а та, которая ярлык)?

И сразу скажите пожалуйста, большая ли разница между Delphi 7 и Delphi 2005 (и стоит ли покупать Delphi 2006) как для разработчика под Win32? Потому что 2005 грузится значительно дольше, а вот что насчёт функциональности... Кажется 7-ая не понимает Indy.

Последний раз редактировалось zetrix; 27.01.2007 в 19:17.
Nez вне форума Ответить с цитированием
Старый 16.01.2007, 13:36   #8
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Для разработчика Win32 VCL Forms принципиальных отличий 7 от 9 версии нет,
единственное, теперь IDE - как в VB. А что по поводу 10 (2006) - пока еще время
не настало переходить - ждем заплаток!

В любой Delphi можно менять форму окна с помощью Region'ов (т.к. SetWindowRgn - функция входящая в любую винду, начиная с 9x, если я
не ошибаюсь...)

Я приложил модуль для создания региона из Bitmap'а
Пользовать надо так:

var
x: HBitmap;
y: HRGN;

x:=LoadBmpFromResource('BMP1',hInst ance);
y:=CRFB_API(x,100,200); //100x200 - габариты нашей картинки
SetWindowRgn(Handle,y);

По поводу Indy - 7я все прекрасно понимает, да вот только версии
компонент у них не совпадают - некоторые функции появились только в 2005
Вложения
Тип файла: rar RegionAPI.rar (790 байт, 16 просмотров)
Visita Interiorem Terrae Rectificando Operae Lapidem...

Последний раз редактировалось Сильванович Михаил; 16.01.2007 в 13:39.
Сильванович Михаил вне форума Ответить с цитированием
Старый 16.01.2007, 15:52   #9
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию

Спасибо за ответ, и огромное спасибо за листинг процедур-функций (Только скажи, эт ты сам писал, или откуда-то из help-а выдернул?) ..

И объясните пожалуйста, я смогу увидеть (обновленную форму только призапуске программы?) ... И ещё, таким методом можно создавать только прямоугольные окна или любой формы (если любой, то каким тогда образом будут располагаться "крестик закрытия окна" ну и вообще все компоненты)?

Ещё вопрос: нужно, чтобы пользователь щелкнул по одной строке и программа определила номер этой строки ну и там в дальнейшем с ней можно было бы что-то делать....
Событие OnClick имеется, но там нет параметра номера строки..

Спасибо

Последний раз редактировалось zetrix; 27.01.2007 в 19:18.
Nez вне форума Ответить с цитированием
Старый 23.01.2007, 13:42   #10
Albenous
Helper
Форумчанин
 
Аватар для Albenous
 
Регистрация: 10.12.2006
Сообщений: 109
Радость

Цитата:
Сообщение от Nez Посмотреть сообщение
Событие OnClick имеется, но там нет параметра номера строки..
Стандартной процедуры/функции для определения номера строки, где находится курсор нет, но мне попадалась написанная кем-то такая функция. Я поищу, если есть - выложу, нет - сам напишу. Щас, подожди.
Глупых вопросов не бывает - бывают глупые ответы.
Albenous вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько вопросов Зубоскалик Общие вопросы Delphi 14 20.11.2008 14:28
Несколько вопросов по VBA Graveyard Microsoft Office Excel 6 27.08.2008 08:50
Код и несколько вопросов artemavd Общие вопросы Delphi 18 20.08.2008 10:51
несколько вопросов по RichEdit TaTT DoGG Компоненты Delphi 4 27.05.2008 10:57
Несколько Вопросов Дорст Общие вопросы Delphi 3 12.11.2007 09:18