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

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


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

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

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

Выпуск № 212
от 18.08.2005, 00:05

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


Вопрос № 24766: Я уже обращался к вам с расными вопросами и вы мне хорошо помагли. Спасибо! Но вот новый вопрос. Записываю в файл отчета, который лежит в GetCurrentDir + 'ПримерыStatikFile.ini', данные, а потом мне надо вывести файл memo. А загвоздка вот в чем...
Вопрос № 24772: При просмотре свойств файла в проводнике (XP) можно увидеть дату и время последнего создания, изменения и открытия файла. Подскажите, как в D7 получить эти данные (например в поле memo)?...
Вопрос № 24776: Как програмно можно: 1. скрыть целый partition но при етом можно было бы работать с данными сохраненными на нем, 2. дезактивировать мишь, клаву, и, если ето вообше можно, вырубить монитор ... ..
Вопрос № 24784: Здраствуйте, мне нужно написать кейлоггер(в мирных целях) помогите пожалуйста зделать это, например чтобы все нажатые клавиши записывались в поле memo, только приведите пример кода. Заранее спасибо....

Вопрос № 24.766
Я уже обращался к вам с расными вопросами и вы мне хорошо помагли. Спасибо!
Но вот новый вопрос. Записываю в файл отчета, который лежит в GetCurrentDir + 'ПримерыStatikFile.ini', данные, а потом мне надо вывести файл memo. А загвоздка вот в чем. Запись и вывод происходит в разных формахи естественно и процедуры разные. Если сначало выполняется вывод, а потом запись, то ничего. А если наобарот то компилятор ругается что папки нет. Почему он добавляет ещё одну папку 'Примеры'? Вообще ошибка наблюдается при выводе данных. Но её не возникает если после записи Читать не из GetCurrentDir + 'ПримерыStatikFile.ini', а GetCurrentDir + 'StatikFile.ini'. При этом если так и прописать в проге при выполнении сперва чтения происходит ошибка - опять ненаходит файл по адресу GetCurrentDir + 'StatikFile.ini', и в этом случае он не добавляет в адрес папку 'Примеры'.

Вот сами процедуры:
//Запись
procedure TFormPley.BitBtn1Click(Sender: TObject);
begin
try
STAT:=TStringList.Create;
STAT.LoadFromFile('StatikFile.ini');
except
end;
STAT.Add(DateToStr(Date)+#13+#10+TimeToStr(Time)+#13+#10+nam+#13+#10+
NameLabel.Caption+#13+#10+IntToStr(u)+#13+#10+masoc[0,0]+#13+#10+
IntToStr(ioc)+#13+#10+Iz);
STAT.SaveToFile('StatikFile.ini');
STAT.Free;
end;
procedure TStatistik.FormActivate(Sender: TObject);
begin
Memo1.Lines.LoadFromFile(GetCurrentDir+'ПримерыStatikFile.ini');
end;

Большая прозьба, Ответы представлять хоть с каким нибудь, но наглядным примером. Заранее спасибо.
Отправлен: 12.08.2005, 06:25
Вопрос задал: Puld (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Rusland
Здравствуйте, Puld!
Вместо GetCurrentDir используй ExtractFilePath(Application.ExeName). Удачи.
---------
Тише едешь, дальше будешь... от того места куда едешь
Ответ отправил: Rusland (статус: Студент)
Отправлен: 12.08.2005, 09:54

Отвечает: Zubex
Здравствуйте, Puld!
По моему в Вашем коде и есть ответ на вопрос:

STAT.LoadFromFile('StatikFile.ini');
STAT.SaveToFile('StatikFile.ini'); //Здесь Вы читаете и записываете в каталоге программы;

Memo1.Lines.LoadFromFile(GetCurrentDir+'ПримерыStatikFile.ini'); //Здесь Вы читаете в каталоге "Примеры"...
Ответ отправил: Zubex (статус: 1-ый класс)
Отправлен: 12.08.2005, 11:13

Отвечает: Denisss
Здравствуйте, Puld!
Вся Ваша ошибка, по видимому в том, что Вы считаете, что GetCurrentDir Вам выдает папку, в которой находится программа. Это не совсем так. Т.е. само приложение может лежать в любой папке. При этом, я даже однажды сталкнулся с неудобством в использовании такого подхода:
программа также использовала такой подход, а я запустил ее через ярлык на рабочем столе, в итоге, программа сделала файлы настроек у меня на рабочем столе.

Приложение:

Ответ отправил: Denisss (статус: Студент)
Отправлен: 12.08.2005, 15:41

Отвечает: Ерёмин Андрей
Здравствуйте, Puld!
Насколько я вижу, тут надо строчки немного местами поменять, а вместо GetCurrentDir() использовать ExtractFilePath(Application.ExeName):

procedure TFormPley.BitBtn1Click(Sender: TObject);
begin
STAT:=TStringList.Create;
try
STAT.LoadFromFile(ExtractFilePath(Application.ExeName)+'ПримерыStatikFile.ini');
except
Abort;
end;
STAT.Add(DateToStr(Date)+#13+#10+TimeToStr(Time)+#13+#10+nam+#13+#10+
NameLabel.Caption+#13+#10+IntToStr(u)+#13+#10+masoc[0,0]+#13+#10+
IntToStr(ioc)+#13+#10+Iz);
STAT.SaveToFile(ExtractFilePath(Application.ExeName)+'ПримерыStatikFile.ini');
STAT.Free;
end;

procedure TStatistik.FormActivate(Sender: TObject);
begin
Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'ПримерыStatikFile.ini');
end;

---------
Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 12.08.2005, 19:33


Вопрос № 24.772
При просмотре свойств файла в проводнике (XP) можно увидеть дату и время последнего создания, изменения и открытия файла. Подскажите, как в D7 получить эти данные (например в поле memo)?
Отправлен: 12.08.2005, 12:18
Вопрос задала: Svetlana (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Rusland
Здравствуйте, Svetlana!
Можно использовать функцию GetFileAttributesEx (не забудь подключить winbase) - функция возвращает структуру на всю информацию о файле. Второй способ смотри в приложении. Удачи.

Приложение:

---------
Тише едешь, дальше будешь... от того места куда едешь

Ответ отправил: Rusland (статус: Студент)
Отправлен: 12.08.2005, 12:24

Отвечает: xXx
Здравствуйте, Svetlana!
В приложении функция, которая возвращает дату последнего изменения файла.
Напиши примерно следующее:
Memo1.Lines.Add(GetFileDate('file.ext'));
Не забудь в програмку добавить эту функцию.
Удачи.

Приложение:

Ответ отправил: xXx (статус: 4-ый класс)
Отправлен: 12.08.2005, 12:40

Отвечает: Ерёмин Андрей
Здравствуйте, Svetlana!
Элементарно, Светлана! Функция GetFileTime() - возвращает дату и время создания файла, его последнего открытия и последнего изменения. Подробности в справочнике по WinAPI. Изменять эти параметры можно с помощью SetFileTime().
---------
Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 12.08.2005, 19:34

Отвечает: Werewolf
Здравствуйте, Svetlana!
http://delphiworld.narod.ru/base/get_all_info_about_file.html
Ответ отправил: Werewolf (статус: 5-ый класс)
Отправлен: 17.08.2005, 01:43


Вопрос № 24.776
Как програмно можно:
1. скрыть целый partition но при етом можно было бы работать с данными сохраненными на нем,
2. дезактивировать мишь, клаву, и, если ето вообше можно, вырубить монитор ...
Отправлен: 12.08.2005, 12:59
Вопрос задал: Negruzzi Cristian (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Rusland
Здравствуйте, Negruzzi Cristian!
1. не знаю... скорее всего нужно общаться с устройством напрямую через ассемблер
2. В приложении пример использования недокументированной функции из User32.dll, которая блокирует ввод (мышь, клавиатуру кроме Ctrl+Alt+Del).
Удачи.

Приложение:

---------
Тише едешь, дальше будешь... от того места куда едешь

Ответ отправил: Rusland (статус: Студент)
Отправлен: 12.08.2005, 14:35
Оценка за ответ: 5
Комментарий оценки:
1. а какнибудь обмануть виндозу чтобы просто их не показывать?

Отвечает: Ерёмин Андрей
Здравствуйте, Negruzzi Cristian!
Если Вам надоел компьютер, не включайте его или продайте (шутка) :)
Выключить монитор:
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);
Включить монитор:
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
Отключить клаиватуру:
конецформыначалоформыwinexec(Pchar('rundll32 keyboard,disable' ) ,sw_Show);
Отключить мышь:
winexec(Pchar('rundll32 mouse,disable' ) ,sw_Show);
---------
Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 12.08.2005, 19:34


Вопрос № 24.784
Здраствуйте, мне нужно написать кейлоггер(в мирных целях) помогите пожалуйста зделать это, например чтобы все нажатые клавиши записывались в поле memo, только приведите пример кода.
Заранее спасибо.
Отправлен: 12.08.2005, 19:03
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Rusland
Здравствуйте, Станислав!
Смотри пример в приложении (dll + сам проект) - запись идет не в memo, а в файл KeyLog.txt

Приложение:

---------
Тише едешь, дальше будешь... от того места куда едешь

Ответ отправил: Rusland (статус: Студент)
Отправлен: 15.08.2005, 15:27
Оценка за ответ: 5


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

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

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

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

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


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


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

Яндекс


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

В избранное