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

Вниз

Как отловить окно   Найти похожие ветки 

 
Tea   (2003-05-22 20:51) [0]

Господа! Нужна помощь! Есть чужая программка, ее нужно в определенное время запускать и останавливать. С запуском проблем нет :)), а вот с остановкой проблемма: WindowName окна постоянно изменяеться (ну создатели пошутили, сделали что то вроде бегущей строки). Так вот, есть ли какая-то возможность отловить WindowName и послать на него PostMessage, при условии что заголовок окна динамически меняеться?


 
Malder ©   (2003-05-22 23:29) [1]

Можно ловить по классу окна, если он уникальный, например


 
Юрий Зотов ©   (2003-05-22 23:50) [2]

А зачем ловить заголовок? Не надо.

Запускаете из своей, через CreateProcess и в ответ получаете хэндлы процесса и потока, а через EnumThreadWindows (после WaitForInputIdle) - хэндл окна. Далее в нужные моменты времени вызываете SuspendThread/ResumeThread (c соответствующими ShowWindow) - вот и все дела. Только не забудьте разморозить и вырубить ее по WM_QUERYENDSESSION (TerminateProcess).


 
titnn ©   (2003-05-23 05:17) [3]

unit serv2;
interface
uses Windows;

procedure Kil;
var xx:boolean=false;
implementation

function EWProc(mhwnd: HWND; var fhwnd: HWND): BOOL; stdcall;
var Buf: array[0..6] of Char;
begin
result:=true;
if GetClassName(mhwnd, buf, sizeof(buf))>0 then
if (buf="Пасьян") or (buf="Spider") then begin
SetWindowText(mhwnd,"Ха-Ха-Ха");
if xx then begin
SetWindowLong (mhwnd, GWL_STYLE, WS_BORDER);
xx:=false;
end else xx:=true;
result:=false;
end;
end;

procedure bb2;
begin
sleep(15000);
Kil;
end;

procedure Kil;
var fhwnd: HWND;
begin
fhwnd:=0;
EnumWindows(@EWProc, DWORD(@fhwnd));
bb2;
end;
end.


вот нужно было юзерам не дать играть в Пасьянс , сначала ловил по Заголовку окна , юзера оказались продвинутые , изменили Заголовок , пришлось по имени класса искать , но теперь уж точно никак не изменят , ха-ха...

может кто подскажет как сделать все это покомпактнее , ЕХЕ правда и так маленький 14кб , но памяти жрет 800кб , а после прибития чужого окна выростает до 1300кб ...

а вот как прибить прогу

procedure Kil;
const
P_T = $0001;
var
PH : THandle;
PID: Integer;
fhwnd: HWND;
begin
fhwnd:=0;
EnumWindows(@EWProc, DWORD(@fhwnd));
if fhwnd<>0 then begin
GetWindowThreadProcessID(fhwnd, @PID);
PH := OpenProcess(P_T, FALSE, PId);
TerminateProcess(PH,4);
end;
end;


в function EWProc(..) после
result:=false;

нужно добавить
fhwnd:=mhwnd;



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

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

Наверх




Память: 0.47 MB
Время: 0.025 c
14-3070
Style
2003-05-15 22:57
2003.06.02
PAS 2 HTML


14-3059
ZeroDivide
2003-05-15 14:33
2003.06.02
Как выдрать иконку из exe-шника и вставить ее в .lnk


14-3094
Мазут Береговой
2003-05-14 03:35
2003.06.02
Пока вы тута все спите у меня вопрос появился. Асаблива к хакерам


6-3025
Карелин Артем
2003-03-17 16:04
2003.06.02
Входящие модемные соединения.


1-2895
Duke DEE
2003-05-21 20:22
2003.06.02
ValueListEditor