Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ID скрытого процесса [D7, XP]


Страницы:   1 2

8shar ©   (2009-03-31 06:30:00) 

Доброго дня. Нужно узнать ID скрытого процесса, как это осуществить?


8shar   (2009-04-07 18:13:00) [1]


type
 TAttachConsole = function (dwProcessId: DWORD): LongBOOL stdcall;

var
 AttachConsole: TAttachConsole;
 mProcessID, Hcwnd: Cardinal;

procedure TForm1.FormCreate(Sender: TObject);
begin
 @AttachConsole := GetProcAddress(GetModuleHandle('kernel32.dll'), 'AttachConsole');
 GetWindowThreadProcessId(FindWindow(nil,'C:\WINDOWS\system32\cmd.exe'),@mProcess ID);
 AttachConsole(mProcessID);
end;

function TForm1.ReadCMD(x, y: byte): string;
const
 SMB = 4;
var
 chRead: Cardinal;
 BufInfo: _CONSOLE_SCREEN_BUFFER_INFO;
 lpCh : PChar;
 Coord: _COORD;
begin
   Hcwnd:=GetStdHandle(STD_OUTPUT_HANDLE);
   GetConsoleScreenBufferInfo (Hcwnd, BufInfo);
   GetMem(lpCh,SMB);
   Coord.X:=x;
   Coord.Y:=y;
   ReadConsoleOutputCharacter(Hcwnd,lpCh,SMB,Coord,chRead);
   Result:=copy(lpCh,1,SMB);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Lines.Add(ReadCMD(22,1));
end;

А вот это уже рабочий код, мы получаем 4 символа из CMD стоящие начиная с позиции x y передаваемой аргументами функции.
Спасибо всем огромное!!!
А насчет нанят программиста, я студент, учусь программить....
Вот....


8shar   (2009-04-07 18:10:00) [2]

есть маленькая проблемка при первом на жатии кнопки все срабатывает при остальных - нет - вывод белеберду. Поработал над этим и:


8shar   (2009-04-07 17:03:00) [3]


>
> Например, внять совету [22], потому как дело у тебя к 36-
> му посту нишиша не двинулось)

Лед тронулся:

procedure TForm1.Button9Click(Sender: TObject);
type
  TAttachConsole = function (dwProcessId: DWORD): LongBOOL stdcall;
var
 AttachConsole: TAttachConsole;
 mProcessID, Hcwnd, chRead: Cardinal;
 BufInfo: _CONSOLE_SCREEN_BUFFER_INFO;
 lpCh : PChar;
 Coord: _COORD;
 i: Integer;

 Phwnd:HWND;
 ii:bool;
begin
 Phwnd:=FindWindow(nil,'C:\WINDOWS\system32\cmd.exe');

 @AttachConsole := GetProcAddress(GetModuleHandle('kernel32.dll'), 'AttachConsole');
 GetWindowThreadProcessId(Phwnd,@mProcessID);

 if AttachConsole(mProcessID) then begin
   Hcwnd:=GetStdHandle(STD_OUTPUT_HANDLE);
   GetConsoleScreenBufferInfo (Hcwnd, BufInfo);
   GetMem(lpCh, BufInfo.dwMaximumWindowSize.Y*BufInfo.dwMaximumWindowSize.X);
   Coord.X:=0;
   Coord.Y:=0;
  ii := ReadConsoleOutputCharacter(Hcwnd,lpCh,BufInfo.dwMaximumWindowSize.X,Coord,chRead );

   If ii then Memo1.Lines.Add('yes'); //успешон забрали с консоли
   If not ii then Memo1.Lines.Add('no'); //не забрали с консоли
    Memo1.Lines.Add(lpCh);  //выводим то что забрали

       Memo1.Lines.Add('Phwnd '+IntToStr(Phwnd));
       Memo1.Lines.Add('Hcwnd '+IntToStr(Hcwnd));
 end else Memo1.Lines.Add('Nea');

end;

Я же умею читать!!!


Сергей М.   (2009-04-07 16:26:00) [4]


> мне то что делать?


Например, внять совету [22], потому как дело у тебя к 36-му посту нишиша не двинулось)


8shar   (2009-04-07 16:05:00) [5]

а мне то что делать????


sniknik   (2009-04-06 16:20:00) [6]

> Из Far с Alt+Enter нормально.
странно, а у меня в фаре пустой экран... ;( ну да пофигу это вообще под дос писалась, когда еще и винды то нормальной не было (3.11 вроде еще только была)...


AndreyV   (2009-04-06 16:06:00) [7]

> [33] sniknik ©   (06.04.09 14:47)
> (запускать из под дос/интерпретатора например из запущенного
> NC (нортон командера, far не пойдет), и развернутым на весь
> экран (Alt+Enter). иначе ничего не видно ;()

Из Far с Alt+Enter нормально.


sniknik   (2009-04-06 14:47:00) [8]

> Делал в графике )
я тоже... вот даже пример остался (не вирус! хоть и маленький)
http://webfile.ru/3339458
(запускать из под дос/интерпретатора например из запущенного NC (нортон командера, far не пойдет), и развернутым на весь экран (Alt+Enter). иначе ничего не видно ;()


Сергей М.   (2009-04-06 14:10:00) [9]


> clickmaker ©   (06.04.09 14:04) [31]


Для хилых допотопных писюков псевдографика - самое то. И ресурсов не шибко много занимает и результаты в более-менее удобоваримом виде представляет.


clickmaker   (2009-04-06 14:04:00) [10]

> [7] 8shar ©   (31.03.09 15:24)
> Вот скрин проги:
> http://antsa.narod.ru/img.jpg

жесть!
я как-то писал нечто подобное под дос, но до того, что в текстовом режиме можно вентили и конденсаторы рисовать, не додумался.
Делал в графике )


Тыщ   (2009-04-06 11:33:00) [11]

> Сергей М. ©   (05.04.09 21:56) [28]
> Каждая "досовская прога" будет выполняться в контексте отдельного экз-ра VM86-машины


Спасибо, я в курсе. Можно написать TSR.


8shar   (2009-04-06 06:55:00) [12]

Дескрипторы

 Вызовом GetStdHandle можно узнать дескрипторы (handles) буфера ввода, стандартного экранного буфера и обработчика ошибок (не потребуется). Функция SetStdHandle может, при необходимости, переназначить их - это понадобится лишь при создании порожденных консольных процессов.

 Довольно похож и вывод с помощью WriteConsole, но здесь писать можно на любой экран, в том числе не активный.

 Рассмотрим пример:

var
 C: _COORD;
 Hnd, Wr: Cardinal;
 ...
begin
 ...
Hnd:=GetStdHandle(STD_INPUT_HANDLE);

inpHnd - дескриптор буфера ввода:
inpHnd:=GetStdHandle(STD_INPUT_HANDLE);

Но это все на вывод в консоль, так что по идее мне нужен
hStdout := GetStdHandle(STD_OUTPUT_HANDLE);


Сергей М.   (2009-04-05 21:56:00) [13]


> что тогда передавать в эту функцию?


http://www.delphimaster.ru/articles/console.html


> Тыщ ©   (05.04.09 21:40) [27]


> Текстовый буфер начинается с $B800:0.


Каждая "досовская прога" будет выполняться в контексте отдельного экз-ра VM86-машины, соответственно будет иметь свой собственный текстовый экранный буфер.


Тыщ   (2009-04-05 21:40:00) [14]

А почему бы для доставания из досовской проги досовскую прогу не написать?
Текстовый буфер начинается с $B800:0.


8shar   (2009-04-05 14:50:00) [15]


> Какой такой "карат", какой такой "сброс" ?
> Ты где увидел описание ф-ции GetStdHandle в таком виде -
>  с "каратами" и "сбросами" ?
> Эта ф-ция предназначена совсем для иной цели !

Это перевод с анг сайта там похожий пример рассматривался. да и:
http://www.delphikingdom.com/asp/itemq.asp?ItemID=448
http://www.sql.ru/forum/actualthread.aspx?tid=512514&pg=-1
я много где так встречал, думал мож оно так и нужно.
А что тогда передавать в эту функцию?
hConsoleOutput : Cardinal???????


Сергей М.   (2009-04-05 14:38:00) [16]


> This is used to reset the carat/cursor to the top left.
> Это используется для сброса карат / курсор в верхнем левом
> углу.
>


Какой такой "карат", какой такой "сброс" ?
Ты где увидел описание ф-ции GetStdHandle в такомвиде - с "каратами" и "сбросами" ?
Эта ф-ция предназначена совсем для иной цели !


8shar   (2009-04-05 13:14:00) [17]

ReadConsoleOutput
http://winapi.freetechsecrets.com/win32/WIN32ReadConsoleOutput.htm
В ReadConsoleOutput функция читает характер и цвет атрибут данных из прямоугольных блоков характера клеток в буфер экрана консоли, а также функция записывает данные в прямоугольных блоков на указанном месте в буфер назначения.

ReadConsoleOutputAttribute
http://winapi.freetechsecrets.com/win32/WIN32ReadConsoleOutputAttribute.htm
В ReadConsoleOutputAttribute функция копии указанного количества плана и цвет фона атрибуты из последовательных ячеек консольный буфер экрана, начиная с указанного места.


ReadConsoleOutputCharacter
http://winapi.freetechsecrets.com/win32/WIN32ReadConsoleOutputCharacter.htm
В ReadConsoleOutputCharacter функция копии ряда персонажей из последовательных ячеек консольный буфер экрана, начиная с указанного места.


8shar   (2009-04-05 12:57:00) [18]


> Palladin ©   (05.04.09 12:49) [22]
>
> Найми программиста.

НЕТ!!! я чувствую что истина где то рядом...


Palladin   (2009-04-05 12:49:00) [19]

Найми программиста.


8shar   (2009-04-05 12:48:00) [20]

Мне всего лишь нужно достать с проги http://antsa.narod.ru/img.jpgнесколько цифр, помогите.... -_-,


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо