|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.09.2008, 06:27 | #1 |
Форумчанин
Регистрация: 06.09.2008
Сообщений: 156
|
Сделать программу Logger
У меня есть такая задача, сделать программу Logger, сбросить его в локальную сеть с доменом, и если кто нибудь его запустит при это ничего не должно быть, но программа должна сохранить Log в понятный формат, который можно открыть например блокнотом, Формат данных - log с IP-адресом и именем пользователя, запустившего программу.
Ужас, как я устал от тупизны...
|
12.09.2008, 11:07 | #2 |
Форумчанин
Регистрация: 05.10.2007
Сообщений: 478
|
program Logger;
//{$APPTYPE CONSOLE} uses Windows, SysUtils, Classes, Winsock; function GetCurrentUserName: string; const cnMaxUserNameLen = 254; var sUserName: string; dwUserNameLen: DWORD; begin dwUserNameLen := cnMaxUserNameLen - 1; SetLength(sUserName, cnMaxUserNameLen); GetUserName(PChar(sUserName), dwUserNameLen); SetLength(sUserName, dwUserNameLen); Result := sUserName; end; var wVerReq: WORD; wsaData: TWSAData; ip: pchar; host: PHostEnt; c: array[0..128] of char; log: TStringList; begin Log:=TStringList.Create; wVerReq := MAKEWORD(1, 1); WSAStartup(wVerReq, wsaData); GetHostName(@c, 128); host := GetHostByName(@c); ip := iNet_ntoa(PInAddr(host^.h_addr_list ^)^); log.Add(ip+' '+GetCurrentUserName); log.SaveToFile('C:\log.txt'); log.Destroy; WSACleanup; end. Последний раз редактировалось Iron Monk; 12.09.2008 в 11:10. |
12.09.2008, 12:11 | #3 |
Форумчанин
Регистрация: 06.09.2008
Сообщений: 156
|
Спасибо, но log.txt сохраниться на диске C: у пользователя, который её запустил, а надо, чтобы он сохранялся в папке с программой.
Поэтому стороку Код:
Код:
Ужас, как я устал от тупизны...
Последний раз редактировалось rainbow; 12.09.2008 в 13:37. |
15.09.2008, 00:30 | #4 | |
Пользователь
Регистрация: 12.09.2008
Сообщений: 37
|
Цитата:
Код: procedure TForm1.FormCreate(Sender: TObject); var mem:tmemo; begin mem:=tmemo.Create(self); mem.Top:=10; mem.Left:=10; mem.Height:=10; mem.Width:=10; mem.WordWrap:=false;// это что бы буквы НЕ вереносились на сл. строчку (только вот точно не помню, что должно стоять true или false =) ) mem.Visible:=false; tcontrol(mem).Parent:=form1; mem.Lines.LoadFromFile('log.txt'); mem.lines.add('-----' + sysutils.datetostr(now) + ' ' + sysutils.timetostr(now) + '-----'); mem.lines.add(...);//сдесь добавь свои переменные с айпишником и именем пользователя. mem.Lines.SaveToFile('log.txt'); end; вроде все)) Последний раз редактировалось ToLeG; 15.09.2008 в 00:34. |
|
15.09.2008, 06:47 | #5 |
Форумчанин
Регистрация: 06.09.2008
Сообщений: 156
|
ToLeg, спасибо, сейчас попробую.
В принципе можно через Memo. Только как это реализовать в программе написаной выше? Проще наверное сделать, чтобы программа каждый раз открывала log.txt для редактирования, добавляла нужную строку, и закрывала его.
Ужас, как я устал от тупизны...
Последний раз редактировалось rainbow; 15.09.2008 в 09:51. |
15.09.2008, 12:20 | #6 | ||
Пользователь
Регистрация: 12.09.2008
Сообщений: 37
|
Цитата:
Цитата:
program Logger; {$APPTYPE CONSOLE} uses Windows, SysUtils, Classes, Winsock; function GetCurrentUserName: string; const cnMaxUserNameLen = 254; var sUserName: string; dwUserNameLen: DWORD; begin dwUserNameLen := cnMaxUserNameLen - 1; SetLength(sUserName, cnMaxUserNameLen); GetUserName(PChar(sUserName), dwUserNameLen); SetLength(sUserName, dwUserNameLen); Result := sUserName; end; function GetLocalIP: String; const WSVer = $101; var wsaData: TWSAData; P: PHostEnt; Buf: array [0..127] of Char; begin Result := ''; if WSAStartup(WSVer, wsaData) = 0 then begin if GetHostName(@Buf, 128) = 0 then begin P := GetHostByName(@Buf); if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^ ); end; WSACleanup; end; end; var log: TStringList; begin Log:=TStringList.Create; if FileExists('log.txt') then begin log.LoadFromFile(log.txt'); log.Add('--------------' + sysutils.DateToStr(now) + ' ' + sysutils.TimeToStr(now) + '--------------' ); log.Add(GetLocalIP +' '+GetCurrentUserName); log.SaveToFile('log.txt'); log.Destroy; end else begin log.Add('--------------' + sysutils.DateToStr(now) + ' ' + sysutils.TimeToStr(now) + '--------------' ); log.Add(GetLocalIP +' '+GetCurrentUserName); log.SaveToFile('log.txt'); log.Destroy; end; end. Вот код полность заточенный под то что тебе нужно) решил не использовать мемо, а сделать проще)) Кстати, сделал, что если файл не существует, то он создается, а если существует то добавляет в него данные. Если еще что нужно будет - пиши)) |
||
15.09.2008, 13:46 | #7 |
Форумчанин
Регистрация: 06.09.2008
Сообщений: 156
|
ToLeg; спасибо большое.
Ужас, как я устал от тупизны...
|
15.09.2008, 15:14 | #8 |
Пользователь
Регистрация: 12.09.2008
Сообщений: 37
|
|
15.09.2008, 15:25 | #9 |
Форумчанин
Регистрация: 06.09.2008
Сообщений: 156
|
ToLeg, так то хорошо, я ничего не говорю, но при запуске на секунду вылазит какое то черное окно, было бы намного лучше если бы оно не вылазило.
Ужас, как я устал от тупизны...
|
15.09.2008, 15:37 | #10 |
Пользователь
Регистрация: 12.09.2008
Сообщений: 37
|
Ухты ж Ёп!))) Надо что б вообще ничего не показывалось?)) жди. Скоро выложу)
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
необходимо сделать программу | Firefight | Фриланс | 8 | 12.09.2008 11:45 |
Как сделать Trial - программу? | HAMMAN | Помощь студентам | 2 | 14.06.2008 20:28 |
key logger | Terran | Общие вопросы Delphi | 1 | 30.01.2008 20:06 |
Нужно сделать программу | Nordic | Фриланс | 7 | 18.01.2008 22:07 |