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

Вниз

Указатель на 16-разрядный процесс   Найти похожие ветки 

 
Demon ©   (2003-03-11 18:11) [0]

Как получить указатель на 16-разрядный процесс?


 
MBo ©   (2003-03-11 18:15) [1]

А что такое указатель на процесс????


 
Demon ©   (2003-03-11 18:20) [2]

В данном случае это то, что ты можешь увидать в Task manager :), извиняюсь за неточную формулировку. Смысл: современная прога тянет пару 16-тиразрядных exe-шников (начальство никак не желает понять, что это проще переделать). Ну они и подвисают временами. Необходимо в этом случае грохнуть этот процесс (типа TerminateProcess)...


 
Игорь Шевченко ©   (2003-03-11 18:25) [3]

Demon © (11.03.03 18:20)
> В данном случае это то, что ты можешь увидать в Task manager
>


В task manager виден процесс NTVDM. Вот его, очевидно, и надо убивать при подвисаниях :-)))


 
Demon ©   (2003-03-11 18:31) [4]

> Игорь Шевченко

!!! Спасибо! :) А для 98-й как? Просто у меня сейчас только 2000-к, а надо будет.


 
Burmistroff   (2003-03-11 21:01) [5]

А в 98 разве есть какие-то особые правила для 16 битных (я честно говоря ни когда над этим не задумывался ;) ) но про NT - скажу - убивать ntvdm несколько не спортивно, хотя и действенно. По хорошему, надо получить его PID, а затем использовать ф-ции vdmdbg:

function AppKill(PID, VDM: cardinal):boolean; //Убивает процесс. Если процесс 16-разрядный, то VDM должен быть PID"ом NTVDM.EXE иначе, VDM = 0
type TVDMTerm= function(VDM_, PID_: dword): boolean; stdcall;
var
hInstLib2, ProcHand: thandle;
FuncPtr: pointer;
r: boolean;
VDMTerm: TVDMTerm;
begin
r:=false;
if pid>0 then
try
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
EnablePrivilege("SeSystemEnvironmentPrivilege");
EnablePrivilege("SeDebugPrivilege");
end;
if vdm=0 then
begin
ProcHand := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
if (ProcHand>0)and(terminateprocess(ProcHand,0)) then r:=true else r:=false;
CloseHandle(ProcHand);
end else
begin
try
hInstLib2:=LoadLibraryA("VDMDBG.DLL");
FuncPtr:=GetProcAddress(hInstLib2,"VDMTerminateTaskWOW");
if FuncPtr<>nil then
begin
@VDMTerm:=FuncPtr;
r:=VDMTerm(VDM, PID);
FuncPtr:=nil;
end;
finally
FreeLibrary(hInstLib2);
end;
end;
except r:=false end;

result:=r;
end;



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

Текущий архив: 2003.04.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
14-91534
Дмитрий К.К.
2003-04-11 07:27
2003.04.28
Именинники 11 апреля


14-91446
Dudao
2003-04-06 05:05
2003.04.28
Интерфейc и Delphi


7-91567
DJ_Sedoy
2002-12-31 01:29
2003.04.28
Скрыть программу от Ctrl-Alt-Del в XP


1-91335
neodiX
2003-04-13 22:29
2003.04.28
TrayIcon in Service or Hide Form on starting service


1-91333
v.topalov
2003-04-15 16:18
2003.04.28
Создание