Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Слежка за запускаемыми на ПК процессами   Найти похожие ветки 

 
Angel_Forever   (2004-01-24 16:15) [0]

Привет программерам!!!
 Слушайте есть такое дельце...нужно написать прогу, чтобы висела в ОЗУ (была резидентной - аля вирус :)) и следила за запускаемыми процессами и при обнаружени заданного (заданных)процесса(ов) их убивал...Есть процедуры типа
TerminateProcess(hProcess:Cardinal,uExitCode:Cardinal):LongBool;
и
ExitProcess(uExitCode:Cardinal); , но я незнаю как с ними работать...просто понятия не имею...:(...можт есть какой нить другой способ\метод\процедура\функция? Подскажите плиз...


 
Digitman ©   (2004-01-24 16:17) [1]

интересуют только GUI-процессы ?


 
Angel_Forever   (2004-01-24 16:28) [2]

Digitman
Процессы типа... можт слыхал про вирусняк ishtar? Вот он меня ужо достал...поперёк горла стоит...каждый раз когда я пытаюсь установить какую либо прогу (правда не навсе слава богу действует, но на многие ) он создаёт себя в папке C:\WINDOWS и запускает себя в процессы, висит там понимаешь...и заражает собой приложения которые я запускаю...по этому мне приходится после запуска инсталяхи сразу же давить три волшебные клавиши и заходить в папку C:\WINDOWS и сносить его оттуда, благо при повторном запуске той же самой инсталяхи он себя больше не создаёт, но представь себе...отслеживать создание и запуск оного в ручную это геморой притом конкретный геморой...вот я и прибумал такую затею написать прогу, чтобы висела себе в ОЗУ и следиля за тем какие процессы на писюке запускаются...и при обнаружении процесса ishtar.ехе убивал этот процесс и удалял саму эту прогу с виндовой папки....вот...


 
SammIk ©   (2004-01-24 16:37) [3]

А ты не думал от куда он берется?
Ведь просто так он не появится, ведь правда?(надеюсь)
Проверь антивирусом папку програм филес, и писать ничего не надо


 
Angel_Forever   (2004-01-24 16:58) [4]

SammIk гы-гы...не всё так просто....антивирусы его НЕВИДЯТ...в том-то вся и беда...


 
Agent13 ©   (2004-01-24 18:16) [5]


> Angel_Forever   (24.01.04 16:58) [4]

Ну и что, что не видят? А ты по Program Files ручками пройдись, глядишь найдёшь чего интересного, а заодно и по Temp"ам всяким...


 
Angel_Forever   (2004-01-24 18:29) [6]

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


 
RealRascal ©   (2004-01-25 01:54) [7]

базы обнови


 
Angel_Forever   (2004-01-25 03:55) [8]

RealRascal Я базы у своей антивируски обнавляю каждый раз когда вылазаю в инет...ну в смысе не в течение дня - вылез обновил,вылез обновил,вылез....короче говоря почти каждый день провожу обновления...никакого понту с этого ни результата нету
:( . Я у пацана интересовался (у него тоже этот вирусяка завёлся...возможно, что у меня подцепил) он говорит, что его невидят даже Каспер и ДрВеб, у меня стояло сразу две антивируски McAfee Professional Edition 7 и Antivir Personal 6 (на мой взгляд одни из самых лучших антивирусок)


 
Serge66   (2004-01-25 11:25) [9]

Вместо того, что бы сносить ishtar.ехе, напиши письмо в DrWEB мол вирус не определяется, прикрепи к нему ishtar.ехе , отправь.
Ребята разберуться, выпустят обновление.
Проверял, работает.


 
Angel_Forever   (2004-01-26 04:51) [10]

Serge66
В принципе...можно и так...тока я ДрВебом не пользуюсь...не нравится он мне чёто...вот...я хотел сам типа антивируса написать...ну я описывал выше, да и ктому же, эту тему можно было-бы применить не обязательно для иштара...а например опять же для контроля за запускаемыми на писюке процессами...например у нас на работе есть Квака 3 и контра...и чтобы прога следила запущены ли хотя бы одна из этих игрух и проверяла условие если она запущенна во время обеденного перерыва то игнорировала...но по истечении этого самого прерыва вырубала процесс и если игруха запущена до или послеобеденного перерыва, чтобы просто тупо убивала поцесс и всё...так же можно и просто использовать её как утилиту контроля доступа юзера к определённым программам, если в настройках стоит запрет какому нибудь конкретному юзеру, то соответственно не давала ему запускаться...так, что тут спектор применения её широк...был бы еслибы мне помогли бы это сделать...вот так вота...


 
_VaaL_ ©   (2004-01-26 11:02) [11]

КГ/АП - застрелись... тибя ужо ничьо не спасьот


 
_VaaL_ ©   (2004-01-26 11:02) [12]

Найди его сам и не парся


 
Angel_Forever   (2004-01-27 07:02) [13]

_VaaL_ Ещё один советчик нашёлся...на этот счёт я уже писал см. Angel_Forever   (24.01.04 18:29) [6]


 
Digitman ©   (2004-01-27 08:43) [14]


> Angel_Forever   (24.01.04 16:15)  


тебя спасет только написание спец.драйвера режима ядра


 
AlisaKK   (2004-01-27 10:42) [15]

program pKillProc;

uses
 Windows,
 Forms,
 SysUtils;

var
 Wnd : hWnd;
 buff : ARRAY[0.. 127] OF Char;
 ProcessID: hWnd;
 s: String;
 f: TextFile;
begin
 while True do
 begin
   Sleep(10000);
   Wnd := GetWindow(Application.Handle, 0);
   try
     AssignFile(f, "c:\Programm.txt");
     while Wnd <> 0 do
     begin {Hе показываем:}
       if (Wnd <> Application.Handle) and {-Собственное окно}
          (GetWindow(Wnd, gw_Owner) = 0) AND {-Дочернии окна}
          (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) then
       begin
         GetWindowText(Wnd, buff, sizeof(buff));
         Reset(F);
         while Not EOF(f) do
         begin
           Readln(F, s);
           if Pos(s, AnsiUpperCase(String(buff)))<>0 Then Begin
             GetWindowThreadProcessID(Wnd, @ProcessID);
             ProcessID := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
             TerminateProcess(ProcessID,4);
           end;
         end;
       end;
       Wnd := GetWindow(Wnd, gw_hWndNext);
     end;
     CloseFile(F);
   except
   end;
 end;
end.

Если не вдаваться в подробности - в файле "C:\Programm.txt" храниться список файлов(точнее их Caption), которые надо убивать.


 
Некто   (2004-01-27 11:03) [16]


> он создаёт себя в папке C:\WINDOWS

Дешево и сердито: создаешь в этой папке файл с именем файла вируса, но пустой; устанавливаешь для него свойства "системный", "спрятанный", "только для чтения"; когда в очередной раз вирус попытается создать себя, ему будет отказано в доступе к файлу; получается эдакая "вакцинация".

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

P.S. В Win2k и ХР (NTFS) лучше запретить доступ к этому файлу  для всех пользователей. Тогда даже попытка снятия аттрибутов не поможет.

Rem (C) 2003


 
Angel_Forever   (2004-02-04 14:09) [17]

AlisaKK

Не помогло...тестил на обычном калькуляторе...ниубивает его никак...ни calc ни calc.exe ни Калькулятор...как ещё подругому написать в файле "c:\Programm.txt" Caption...я не знаю...calculator что-ли? :(


 
RealRascal ©   (2004-02-04 23:14) [18]

Удалено модератором


 
Alexander666 ©   (2004-02-05 10:01) [19]

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


 
Alexander666 ©   (2004-02-05 10:16) [20]

Упс, хуки насколько я понимаю действуют только для GUI-приложений.


 
Angel_Forever   (2004-02-15 15:27) [21]

Некто хочешь прикол  ;)? Попробовал я создать файл с таким именем (правда через консоль) ishtar.exe атрибуты правда поставил только RO...но вирусу этот атрибут оказался непомехой...я ради интереса открыл таск менеджер, Виндовую папку с псевдовирусом, и запустил заражённый иштаром файл...гы-гы....этот ё_ый вирусяка....без лишних вопросов взял записал себя....может он определил, что файл котоый уже существует не есть он...типа файлсайзы не совпадают...что-ли короче говоря х.з. что с ним делать.....


 
Defunct   (2004-02-15 16:49) [22]

> Некто хочешь прикол  ;)? Попробовал я создать файл с таким именем (правда через консоль) ishtar.exe атрибуты правда поставил только RO...но вирусу этот атрибут оказался непомехой...я ради интереса открыл таск менеджер, Виндовую папку с псевдовирусом, и запустил заражённый иштаром файл...гы-гы....этот ё_ый вирусяка....без лишних вопросов взял записал себя....может он определил, что файл котоый уже существует не есть он...типа файлсайзы не совпадают...что-ли короче говоря х.з. что с ним делать.....

Тут вот есть идея, что если переименовать какой-то полезный процесс в ishtar.exe (например taskmgr.exe или explorer.exe) поменять имена в реестре и тогда вирус вообще никогда не сможет в него дописаться, т.к. процесс запущен постоянно.


 
Burmistroff   (2004-02-15 18:02) [23]

касаемо первого поста в ветке можешь взглянуть на
http://maxcomputing.narod.ru/ssm.html


 
Angel_Forever   (2004-02-21 09:58) [24]

Defunct проблема в том, что он и в реестре-то не прописывается... :|


 
KSergey ©   (2004-02-22 10:50) [25]

Навеяно > Defunct   (15.02.04 16:49) [22]

Раз уж "вирус" чихал на атрибуты - просто состряпать простейшую прогу, которая ничего не делает (например, постоянно в Sleep висит, или еще что-то такое Да даже просто из единственного окна невидимого состоит - вот и все) - и запускать ее из автозапуска. Имя и расположение должна иметь, разумеется, "вирусное". ТОгда уже никто этот файл не перетрет.

PS
Ну разве что вдруг обнаружится, что "вирус" умеет произвольное имя файла вибирать ;)

Хотя детство это все. Что-то подозрение, что либо не вирус это, либо не это вирус...


 
Ihor Osov'yak ©   (2004-02-22 11:19) [26]

хм.. Для начала пройдись в реестре на тему поиска ishtar.ехе...

> каждый раз когда я пытаюсь установить какую либо прогу (

Есть подозрение, что нечто интересное можешь увидить в ветке
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

Ищи там раздел  с именем setup.exe или install.exe, а в разделе  -параметр Debugger.. Если будет там сия вещь - значит оно..
Что сей параметр значит - догадайся сам, или какой-то букварик почитай, где подробно процесс запуска приложений описан.. Соломона с Руссиновичем, например..

Зы2. Есть ли аналогичная фича в W9X - не знаю, я с этой системой мало работаю, а специально смотреть сейчас - влом..


 
KSergey ©   (2004-02-22 12:59) [27]

Хорошие нынче букварики пошли...
А "Дельфи за х часов" - это тогда памперсы получается? ;)


 
Ihor Osov'yak ©   (2004-02-22 15:08) [28]

ну, о том что Соломон с Руссиновичом букварик - я немного загнул.. Сорри ...


 
12345678   (2004-02-23 10:06) [29]

http://maxcomputing.narod.ru
Там есть пример перехвата CreateInternalProcess для NT
hehe


 
not_antisemit   (2004-01-23 14:00) [30]

Соломон с Руссиновичем букварей не пишут, они пишут буквагики,таки.


 
Angel_Forever   (2004-02-27 14:28) [31]

Ihor Osov"yak тама где ты сказал посмотреть...чисто...ни каких упоминаний о вирусе...

ДЛЯ ВСЕХ УЧАСТНИКОВ ЭТОЙ ТЕМЫ СВЕЖЕИСПЕЧЁННАЯ ИНФА ПО ВИРУСУ ishtar.exe.... Тута один мой знакомый у меня что-то резал на болванку и к нему попал этот вирус...он проверил, что чудит этот вирусяка...он находит шаровые папки и расшаривает их на пример Общие документы в ИксПине...папку Виндовс и т.д....


 
Angel_Forever   (2004-03-07 04:24) [32]

KSergey Ну....написал...я прогу из одной формы....а поту?...эта с-ка вирусяка и с ней х. з. каким образом расправился :)))(((


 
alkarin   (2004-03-20 05:55) [33]

хрен его знает... я касперским запросто справлялся с этой гадостью, которая плодится с каждой секундой


 
BlackBaracuda ©   (2004-03-26 05:57) [34]

А почему бы не попробовать...
СЛУШАЙ а ведь в делфях есть команды, которые определяют имя файла, от которого произошел этот процесс...
Или легче запустить утилиту WinSight32 , она находится автоматом в делфи, два раза щелкнуть на процесс ishtar, и тебе откроется заветное имя файла вируса...
Если не помогло тогда вот -
var ishtar:TFilestream;
ishtar:=TFileStream.Create("C:\windows\ishtar.exe",fmOpenRead,fmShareDenyNone);
Создай файл ishtar.exe в виндах, и запусти прогу...
Можно по нажатию на кнопку...


 
BlackBaracuda ©   (2004-03-26 05:57) [35]

А почему бы не попробовать...
СЛУШАЙ а ведь в делфях есть команды, которые определяют имя файла, от которого произошел этот процесс...
Или легче запустить утилиту WinSight32 , она находится автоматом в делфи, два раза щелкнуть на процесс ishtar, и тебе откроется заветное имя файла вируса...
Если не помогло тогда вот -
var ishtar:TFilestream;
ishtar:=TFileStream.Create("C:\windows\ishtar.exe",fmOpenRead,fmShareDenyNone);
Создай файл ishtar.exe в виндах, и запусти прогу...
Можно по нажатию на кнопку...


 
Александр1 ©   (2004-03-27 19:28) [36]

Angel_Forever Скажи этот вирус заражает exe? Ну в смысле дописывается к ним и как он переносится?

Вообще когда у меня заводится гадость типа этой, я переписываю windows (стираю нафик старый win и ставлю новый). А если не поможет, Format C: уж точно поможет! Если конечно он в Bios не засел?
А на счёт убивания процессов это ты хороший вопрос задал! Я тоже пытаюсь найти на него ответ?
И к стати нашёл кое что! Могу поделиться.

nit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   ListBox1: TListBox;
   Button1: TButton;
   Button2: TButton;
   CheckBox1: TCheckBox;
   CheckBox2: TCheckBox;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure CheckBox1Click(Sender: TObject);
   procedure CheckBox2Click(Sender: TObject);
 private
   { Private declarations }
 public
   procedure KillProgram(ClassName: PChar; WindowTitle: PChar);
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.KillProgram(ClassName: PChar; WindowTitle: PChar);
const
 PROCESS_TERMINATE = $0001;
var
 ProcessHandle : THandle;
 ProcessID: Integer;
 TheWindow : HWND;
begin
 TheWindow := FindWindow(Classname, WindowTitle);
 GetWindowThreadProcessID(TheWindow, @ProcessID);
 ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
 TerminateProcess(ProcessHandle,4);
end;

procedure TForm1.Button1Click(Sender: TObject);
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)or checkbox1.checked) AND {-Невидимые окна}
   ((GetWindow(Wnd, gw_Owner) = 0)or checkbox2.checked) 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;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 killprogram(nil,pchar(listbox1.Items.Strings[listbox1.ItemIndex]));
 sleep(100);
 button1click(form1);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 button1click(form1);
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 button1click(form1);
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
 button1click(form1);
end;

end.


 
TButton ©   (2004-03-27 22:56) [37]

Win+F ishtar.ехе


 
JSilver   (2004-03-28 16:58) [38]

Я про этот визус ничего не слышал, слава богу, но была другая напасть, переводчик СакратПерсональный4,1 при завершении винды все дело портил, пришлось помочь ему умирать самому, и удачно(была написана прога по убитию роцесса, вот ее фрагмент).

Procedure ...
 Var hKillProcess, hProcess, hProc: HWND;
     PID  : DWORD;
     szProcessName: ARRAY[0..80] Of char;
     ahMod: ARRAY[0..10] Of PDWORD;
     dwNeeded: DWORD;
     NameProc: String;
Begin
 For PID:=1 to 65000 do Begin    
     hProcess := OpenProcess (PROCESS_ALL_ACCESS, FALSE, PID);  
     if hProcess <> NULL Then Begin
        if EnumProcessModules (hProcess, @ahMod, sizeof(@ahMod), dwNeeded) Then Begin
             hProc := OpenProcess (PROCESS_ALL_ACCESS, FALSE, PID);  
             If GetModuleBaseName(hProc, Cardinal(ahMod[0]), szProcessName, sizeof(szProcessName))<>0 Then Begin
                 NameProc:=szProcessName[0]+szProcessName[1]+szProcessName[2]+szProcessName[3]+
                           szProcessName[4]+szProcessName[5]+szProcessName[6];
                 If (NameProc="SPV.EXE") or (NameProc="spv.exe") Then Begin
                      hKillProcess := OpenProcess( PROCESS_TERMINATE, FALSE, PID ); // &#211;&#225;&#232;&#226;&#224;&#229;&#236; &#253;&#242;&#238;&#242; &#239;&#240;&#238;&#246;&#229;&#241;&#241;
                      if  hKillProcess <> NULL Then  TerminateProcess( hKillProcess, DWORD(-1) );                        CloseHandle (hKillProcess);
                                                                              End;
                                                                                                           End
                                                                                                      else ;//ShowMessage("<failure>");
             CloseHandle (hProc);
                                                                                End;
                              End;
     CloseHandle (hProcess);
                        End;
End;

Это однократный поиск и убитие. Загони, к примеру, в цикл и прогоняй раз в минуту. А прогу в автозагрузку.


 
L   (2004-03-28 23:38) [39]

win98
unit KernlUtl;

interface
uses TlHelp32, Windows, Classes, Sysutils;

procedure GetProcessList(List: TStrings);
procedure GetModuleList(List: TStrings);
function GetProcessHandle(ProcessID: DWORD): THandle;
procedure GetParentProcessInfo(var ID: DWORD; var Path: String);

const

 PROCESS_TERMINATE         =  $0001;
 PROCESS_CREATE_THREAD     =  $0002;
 PROCESS_VM_OPERATION      =  $0008;
 PROCESS_VM_READ           =  $0010;
 PROCESS_VM_WRITE          =  $0020;
 PROCESS_DUP_HANDLE        =  $0040;
 PROCESS_CREATE_PROCESS    =  $0080;
 PROCESS_SET_QUOTA         =  $0100;
 PROCESS_SET_INFORMATION   =  $0200;
 PROCESS_QUERY_INFORMATION =  $0400;

 PROCESS_ALL_ACCESS        =
   STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $0FFF;

implementation

procedure GetProcessList(List: TStrings);
var
 I: Integer;
 hSnapshoot: THandle;
 pe32: TProcessEntry32;
begin
 List.Clear;
 hSnapshoot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

 if (hSnapshoot = -1) then
     Exit;
 pe32.dwSize := SizeOf(TProcessEntry32);
 if (Process32First(hSnapshoot, pe32)) then
 repeat
   I := List.Add(Format("%x, %x: %s",
     [pe32.th32ProcessID, pe32.th32ParentProcessID, pe32.szExeFile]));
   List.Objects[I] := Pointer(pe32.th32ProcessID);
 until not Process32Next(hSnapshoot, pe32);

 CloseHandle (hSnapshoot);
end;

procedure GetModuleList(List: TStrings);
var
 I: Integer;
 hSnapshoot: THandle;
 me32: TModuleEntry32;
begin
 List.Clear;
 hSnapshoot := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, 0);

 if (hSnapshoot = -1) then
     Exit;
 me32.dwSize := SizeOf(TModuleEntry32);
 if (Module32First(hSnapshoot, me32)) then
 repeat
   I := List.Add(me32.szModule);
   List.Objects[I] := Pointer(me32.th32ModuleID);
 until not Module32Next(hSnapshoot, me32);

 CloseHandle (hSnapshoot);
end;

procedure GetParentProcessInfo(var ID: DWORD; var Path: String);
var
 ProcessID: DWORD;
 hSnapshoot: THandle;
 pe32: TProcessEntry32;
begin
 ProcessID := GetCurrentProcessID;
 ID := -1;
 Path := "";

 hSnapshoot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

 if (hSnapshoot = -1) then
     Exit;

 pe32.dwSize := SizeOf(TProcessEntry32);
 if (Process32First(hSnapshoot, pe32)) then
 repeat
   if pe32.th32ProcessID = ProcessID then
   begin
     ID := pe32.th32ParentProcessID;

     Break;
   end;
 until not Process32Next(hSnapshoot, pe32);

 if ID <> -1 then
 begin
   if (Process32First(hSnapshoot, pe32)) then
   repeat
     if pe32.th32ProcessID = ID then
     begin
       Path := pe32.szExeFile;
       Break;
     end;
   until not Process32Next(hSnapshoot, pe32);
 end;
 CloseHandle (hSnapshoot);
end;

function GetProcessHandle(ProcessID: DWORD): THandle;
begin
 Result := OpenProcess(PROCESS_ALL_ACCESS, True, ProcessID);
end;

end.

winNT
есть библиотека "NTDLL.DLL" в ней функция "NtQuerySystemInformation"
возвращает в буфере инфу о всех процессах в системе


 
Angel_Forever   (2004-04-01 02:57) [40]

Александр1, он какраз таки прописывает себя ехе файлах, при запуске заражённого файла запускает себя в процессы и создаёт свой исполняемый файл размером в 40 кб с именем ishtar.exe, сканит все диски и прописывает себя во все ехешники (можешь открыть заражённый файл например в фаре или в нортоне F3 и поглядеть на него, только ты о нём мало там инфы найдёшь...только надпись в заголовочной части файла), определить заражён ли файл этим долбаным вирусякой можно только по иконке программы. у заражённого файла обычно меняется иконка...



Страницы: 1 2 вся ветка

Форум: "Система";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.59 MB
Время: 0.035 c
1-1083727727
russko
2004-05-05 07:28
2004.05.16
Многоуровневый выпадающий список


6-1080161810
Pr0t0n
2004-03-24 23:56
2004.05.16
SMS &amp; Delphi


1-1083685629
Татьяна
2004-05-04 19:47
2004.05.16
StringGrid


14-1082696455
V.exeR
2004-04-23 09:00
2004.05.16
"Улица ремесел"


3-1082097103
BPK
2004-04-16 10:31
2004.05.16
Stored procedure (MSSQL2000): произвольный набор параметров





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский