1. Извинияюсь, плохо прочитал Ваш пост. Показалось, что Вы через модальной окно что-то делали.
2. Если создавать окно уже зарегистрированного класса, то оно создастся. Но обычные приложения перед созданиям окна регистрируют его класс.
Hook на CreateProcess
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Короче сегодня добрался до вопроса и решил не париться, сделал через сравнение хандлов, кому нада юзайте вот код..
Код: Выделить всё
(*
//------------------------------------------------------------------------------
global vars
k, n: Word;
flag: Boolean;
_Handles, Handles: array[0..65535] of HWND;
//------------------------------------------------------------------------------
Пример использования:
KillAllNewProc(4000);
//------------------------------------------------------------------------------
*)
procedure Kill(h: HWND);
const
process_terminate = $0001;
var
ProcessHandle : THandle;
Processid: integer;
begin
GetWindowTHreadProcessId(h, @Processid);
ProcessHandle := OpenProcess(process_terminate, False, Processid);
TerminateProcess(ProcessHandle, 4);
end;
//------------------------------------------------------------------------------
function EnumWin(h: HWND; Param: LongInt): BOOL; stdcall;
begin
_Handles[k] := h;
k := k+1; //or inc(n); :)
Result := True;
end;
//------------------------------------------------------------------------------
function EnumWin2(h: HWND; Param: LongInt): BOOL; stdcall;
begin
Handles[n] := h;
n := n+1; //or inc(n); :)
Result := True;
end;
//------------------------------------------------------------------------------
procedure KillAllNewProc(SleepTime: Word);
var
i, c: Word;
begin
k := 0;
EnumWindows(@EnumWin, 0);
Form1.pause(SleepTime); //you can use Sleep(); //pause(); is my func Duncon
n := 0;
EnumWindows(@EnumWin2, 0);
Application.ProcessMessages;
for i := n downto 0 do begin
flag := True;
for c := k downto 0 do
if Handles[i] = _Handles[c] then begin
flag := False;
Break;
end;
if flag then Kill(Handles[i]);
end;
end;