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

RusFAQ.ru: Программирование на Delphi


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

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 236
от 12.09.2005, 21:36

Администратор:Калашников О.А.
В рассылке:Подписчиков: 240, Экспертов: 50
В номере:Вопросов: 4, Ответов: 16


Вопрос № 25971: Уважаемые эксперты!! просветите "Ламера" =) какая функция прописывает в автозагрузку прогу, чтобы она грузилась вместе с виндой ?? Заранее Благодарен !!!!!!!!!!...
Вопрос № 25984: Добрый день! Я хочу использовать компоненты или библиотеку, которые распространябтся по лицезии MPL (Mozilla Public License). Какие у меня есть ограничения при использовании этих компонентов в своей программе? Имеется ввиду раск...
Вопрос № 25990: Уважаемые эксперты! У меня ListView1 (viewStyle - vsReport, колонки - л/сч, ФИО, Адрес). В списке записей очень много, сейчас порядка - 1500. Вопросы следующие: 1. Как можно организовать поиск по списку (по столбцам); 2. Как сделать сорти...
Вопрос № 26002: Здравствуйте! У меня к Вам такой вопрос: как скрыть мою программу от всевидящего взгляда Диспетчера Процессов Windows XP?...

Вопрос № 25.971
Уважаемые эксперты!! просветите "Ламера" =) какая функция прописывает в автозагрузку прогу, чтобы она грузилась вместе с виндой ??
Заранее Благодарен !!!!!!!!!!
Отправлен: 06.09.2005, 23:08
Вопрос задал: Andrey_666 (статус: Посетитель)
Всего ответов: 7
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Васильев Павел
Здравствуйте, Andrey_666!
Просто пропиши в реестр ключ:
По пути HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun

Приложение:

Ответ отправил: Васильев Павел (статус: 2-ой класс)
Отправлен: 06.09.2005, 23:48
Оценка за ответ: 5

Отвечает: Силантьев Евгений Александрович
Здравствуйте, Andrey_666!

Создайте ключ в реестре в одной из веток
[HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun]
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun]

Создайте ярлык в папке Автозагрузка
C:Documents and SettingsAll UsersГлавное менюПрограммыАвтозагрузка
C:Documents and Settingsjoy_dpГлавное менюПрограммыАвтозагрузка

Отредактируйте файл Win.ini
[windows]
load=file.exe
run=file.exe

Отредактируйте файл System.ini
[boot]
Shell=Explorer.exe file.exe

Выбирайте любой способ, но я бы советовал через реестр! Есть еще способы если надо то обращайтесь!
---------
The world is mine! :)
Ответ отправил: Силантьев Евгений Александрович (статус: 5-ый класс)
Отправлен: 07.09.2005, 00:19
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, Andrey_666!
Что значит "грузилась вместе с виндой"?
Тут есть два типа загрузки:
- загрузить программу ДО регистрации пользователя (обычно это какие-нибудь системные проги);
- загрузить программу ПОСЛЕ регистрации пользователя.
В первом случае, Вам нужно прописать свою программу в ключ реестра:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Для работы с реестром используется класс TRegistry.
Во втором случае - CopyFile(). :)
Сделать ярлык программы и скопировать его в C:\Document and settings\Пользователь\Главное меню\Программы\Автозагрузка
Второй способ предпочтительней, т.к. лазить в реестр, без особой нужды, не нужно.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 07.09.2005, 06:22
Оценка за ответ: 5

Отвечает: Jadd
Здравствуйте, Andrey_666!
Нет такой функции. Можно сделать двумя способами:
1)Прописать путь к программе в реестр в ветку HKCUSoftwareMicrosoftWindowsCurrentVersionRun или в ветку HKLSSoftwareMicrosoftWindowsCurrentVersionRun

2)Получить абсолютный путь к стартаповой папке в системе и создать там ярлык. Как получить путь к папке Startup (автозагрузка) - ищи в рассылке, я отвечал на такой вопрос не так давно.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 07.09.2005, 10:12
Оценка за ответ: 5

Отвечает: Маренич Владимир
Здравствуйте, Andrey_666!
Специальной функции нет. Можно создать ярлык в Автозагрузке (сложно) или прописать в реестре (легко). Лично я делаю так:

Приложение:

Ответ отправил: Маренич Владимир (статус: 2-ой класс)
Отправлен: 07.09.2005, 10:38
Оценка за ответ: 5

Отвечает: Romodos
Здравствуйте, Andrey_666!
Можно поставить в несколько мест
Например
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrenVerisonRun
(для текущего пользователя)
или
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrenVerisonRun
(для всех пользователей)
//это далеко не все места
Код прилагается, думаю разберёшься
В раздел Uses надо добавить модуль Registry

Приложение:

---------
FAQ me off!

Ответ отправил: Romodos (статус: 6-ой класс)
Отправлен: 07.09.2005, 11:53
Оценка за ответ: 5

Отвечает: Ерёмин Андрей
Здравствуйте, Andrey_666!
Стандартной функции нет. Это делается через реестр. Вот простой пример:

{Добавляет программу в список автозагрузки Windows}
Procedure AddToWindowsAutoStart(Name: String; Cmd: String);
Var R: TRegistry;
Begin
R:=TRegistry.Create;
R.RootKey:=HKEY_LOCAL_MACHINE;
R.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
R.WriteString(Name,Cmd);
R.CloseKey;
R.Free;
End;

Пример: AddToWindowsAutStart('MyApp',Application.ExeName);
---------
Мышка побежала, xвостиком махнула - cервер упал...
Ответ отправил: Ерёмин Андрей (статус: Практикант)
Отправлен: 08.09.2005, 17:59
Оценка за ответ: 5


Вопрос № 25.984
Добрый день!

Я хочу использовать компоненты или библиотеку, которые распространябтся по лицезии MPL (Mozilla Public License).

Какие у меня есть ограничения при использовании этих компонентов в своей программе?
Имеется ввиду раскрытие исходного кода программы, распространение программы только фриварно, выплата коммисионных при комерческом использовании, обязательное указание автора используемого компонента (вообще-то так и делаю) и т.д.

Кто осведомлен в этом вопросе, ответьте, пожалуйста.

Текст лицензии можете взять с http://dupkiller.bira.ck.ua/tr/mpl.pdf (английский правда).

Я хоть английский и знаю, но информации много. Запутался. :(
Отправлен: 07.09.2005, 09:55
Вопрос задал: TR da Alien (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: sir henry
Здравствуйте, TR da Alien!
Знаю про не, что это ответвление от NPL (Netscape), но, в принципе, тоже самое, что и GPL. :)
Главная особенность в том, что любые изменения кода должны быть открыты и доступны, в то время как ДОПОЛНЕНИЯ могут быть и закрытыми.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 07.09.2005, 10:56
Оценка за ответ: 3

Отвечает: Силантьев Евгений Александрович
Здравствуйте, TR da Alien!
Mozilla Public License: «Лицензия, которую вам предоставляет первый разработчик, распространяется на территорию любого государства, является неисключительной, не требует выплаты авторского вознаграждения».

Лицензия на свободное ПО, не реализующая строгое «авторское лево». В отличие от лицензии X11, имеет некоторые комплексные ограничения, которые делают ее несовместимой с GNU GPL. Например, модуль, подчиняющийся GPL, не может законным путем быть скомпонован с модулем, помещенным под действие MPL.
---------
The world is mine! :)
Ответ отправил: Силантьев Евгений Александрович (статус: 5-ый класс)
Отправлен: 07.09.2005, 20:49
Оценка за ответ: 5
Комментарий оценки:
Спасибо


Вопрос № 25.990
Уважаемые эксперты!
У меня ListView1 (viewStyle - vsReport, колонки - л/сч, ФИО, Адрес). В списке записей очень много, сейчас порядка - 1500. Вопросы следующие:
1. Как можно организовать поиск по списку (по столбцам);
2. Как сделать сортировку по столбцам;
3. Как можно копировать кокую-нибудь строку, чтобы заново ее не вводить (если такая есть уже в списке), а просто сделать ее копию.
Заранее огромное спасибо за уделенное время.
Отправлен: 07.09.2005, 13:14
Вопрос задал: xXx (статус: 5-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Lector
Никак. Для этих целей существует целый ряд *DB* - компонентов. Используйте их. Кроме того в вашем случае использование разнообразный dbgrid'ов предпочтительнее, так как вы используете listview для простого вредоставвления отчётов.
Можно локально создавать файл БД и потом посылоть к нему запросы с заданным порядком группировки, копирование - простая вставка значений полей, поиск значений - тоже стандартная функция.
---------
Хочешь помочь дураку - сам дурак
Ответ отправил: Lector (статус: 2-ой класс)
Отправлен: 07.09.2005, 13:26
Оценка за ответ: 3
Комментарий оценки:
У меня ListView1 и мне в моей проге не нужен DB. Программа получилась большая и мне в лом переделывать. В ListView можно организовать и поиск, и сортировку, и копирование. Я хочу узнать как. Вопрос был поставлен конкретно, и не нужно мне предлагать пользоваться другими компонентами...

Отвечает: sir henry
Здравствуйте, xXx!
1. Либо TListView.FindCaption() (ищет заголовок) либо TListView.FindData(). Как поиск будет происходить конкретно не знаю, т.к. всегда пользовался более традиционными компонентами для отображения данных. :)
2. TListView.AlphaSort:=True;
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 07.09.2005, 13:42

Отвечает: Jadd
Здравствуйте, xXx!
К сказанному добавлю - www.torry.net ищи тут или напиши свой компонент.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 07.09.2005, 16:42
Оценка за ответ: 3
Комментарий оценки:
Неужели такой сложный вопрос :-(

Отвечает: Силантьев Евгений Александрович
Здравствуйте, xXx!
Вот статьи по Вашему вопросу:

Искать текст в TListView
--------------------------------------------------------------------------------

// Call FindCaption Method to search for a list view item labeled by the
// string specified as the Value parameter
// Syntax:

function FindCaption(StartIndex: Integer; Value: string;
Partial, Inclusive, Wrap: Boolean): TListItem;
// Example, Beispiel:

procedure TForm1.Button1Click(Sender: TObject);
var
lvItem: TListItem;
begin
lvItem := ListView1.FindCaption(0, // StartIndex: Integer;
'99', // Search string: string;
True, // Partial,
True, // Inclusive
False); // Wrap : boolean;
if lvItem <> nil then
begin
ListView1.Selected := lvItem;
lvItem.MakeVisible(True);
ListView1.SetFocus;
end;
end;
// To search for a list view subitem (also for items), use this function:

{
Search for text in a listview item
@Param lv is the listview, supposed to be in vaReport mode
@Param S is the text to search for
@Param column is the column index for the column to search , 0-based
@Returns the found listview item, or Nil if none was found
@Precondition lv nil, lv in report mode if column 0, S not empty
@Desc The search is case-insensitive and will only match on the
complete column content. Use AnsiContainsText instead of AnsiCompareText
to match on a substring in the columns content.
Created 14.10.2001 by P. Below
}

function FindListViewItem(lv: TListView; const S: string; column: Integer): TListItem;
var
i: Integer;
found: Boolean;
begin
Assert(Assigned(lv));
Assert((lv.viewstyle="vsReport)" or (column = 0));
Assert(S <> '');
for i := 0 to lv.Items.Count - 1 do
begin
Result := lv.Items[i];
if column = 0 then
found := AnsiCompareText(Result.Caption, S) = 0
else if column > 0 then
found := AnsiCompareText(Result.SubItems[column - 1], S) = 0
else
found := False;
if found then
Exit;
end;
// No hit if we get here
Result := nil;
end;

// Example call:

procedure TForm1.Button1Click(Sender: TObject);
var
lvItem: TListItem;
begin
// Search subitem[0] for text from edit1
// in der Spalte subitem[0] den Text aus Edit1 suchen
lvItem := FindListViewItem(ListView1, Edit1.Text, 1);
// if found, then show the item
// falls item gefunden, dann anzeigen
if lvItem <> nil then
begin
ListView1.Selected := lvItem;
lvItem.MakeVisible(True);
ListView1.SetFocus;
end;
end;
// Function to search items and select if found

procedure LV_FindAndSelectItems(lv: TListView; const S: string; column: Integer);
var
i: Integer;
found: Boolean;
lvItem: TListItem;
begin
Assert(Assigned(lv));
Assert((lv.Viewstyle="vsReport)" or (column = 0));
Assert(S <> '');
for i := 0 to lv.Items.Count - 1 do
begin
lvItem := lv.Items[i];
if column = 0 then
found := AnsiCompareText(lvItem.Caption, S) = 0
else if column > 0 then
begin
if lvItem.SubItems.Count >= Column then
found := AnsiCompareText(lvItem.SubItems[column - 1], S) = 0
else
found := False;
end
else
found := False;
if found then
begin
lv.Selected := lvItem;
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
lvItem: TListItem;
begin
// in der Spalte subitem[0] den Text aus Edit1 suchen
LV_FindAndSelectItems(ListView1, Edit1.Text, 1);
ListView1.SetFocus;
end;

Приложение:

---------
The world is mine! :)

Ответ отправил: Силантьев Евгений Александрович (статус: 5-ый класс)
Отправлен: 07.09.2005, 21:08
Оценка за ответ: 5
Комментарий оценки:
Спасибо огромное, попробую.


Вопрос № 26.002
Здравствуйте!
У меня к Вам такой вопрос: как скрыть мою программу от всевидящего взгляда Диспетчера Процессов Windows XP?
Отправлен: 07.09.2005, 16:03
Вопрос задал: Nik890 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Lector
Здравствуйте, Nik890!
Никак.
Можно запустить дочерний процесс от уже существующего. Тогда он станет виден при просмотре из утилит просмотра потоков служб.
---------
Хочешь помочь дураку - сам дурак
Ответ отправил: Lector (статус: 2-ой класс)
Отправлен: 07.09.2005, 16:11

Отвечает: Denisss
Здравствуйте, Nik890!
Предлагаю почитать тут:
http://www.wasm.ru/article.php?article=apihook_1
http://www.wasm.ru/article.php?article=apihook_2
http://www.wasm.ru/article.php?article=apihook_3

В конце статей есть примеры.
В конце первой статьи есть пример того, как спрятать Winlogon.exe из процессов.
Не стоит забывать, что также там есть пример, который способен этот же Winlogon показать как его не прячь. Но все же в диспетчере задач winlogon у меня прячется.

Удачи!
Ответ отправил: Denisss (статус: Практикант)
Отправлен: 07.09.2005, 17:24

Отвечает: John Freeman
Здравствуйте, Nik890!
http://wasm.ru/article.php?article=apihook_1
И читать до упора. Другого способа нет.
---------
Ik bin ulien spiegel!
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 07.09.2005, 19:51


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


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

В избранное