![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ID скрытого процесса [D7, XP]
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несколько цифр, помогите.... -_-,