Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.6 MB
Время: 0.041 c
11-1068996521
DeF
2003-11-16 18:28
2004.05.16
Дочерние окна


4-1079960071
Dr.Karter
2004-03-22 15:54
2004.05.16
Результат от процесса


14-1083166285
Yegorchic
2004-04-28 19:31
2004.05.16
Статья по клавеатуре...


7-1081145534
Clawhammer
2004-04-05 10:12
2004.05.16
Установка Time Zone...


3-1082094273
Артем К.
2004-04-16 09:44
2004.05.16
Как связать QReport со своим окном предварительного просмотра?