Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Остановка времени в чужом приложении.


Автор: Simplex 4.12.2005, 13:46
Имеется чужое приложение, где в таймере уменьшается PorogressBar.Position. Как заставить остановиться таймер или в крайнем случае заморозить положение ProgressBar?

Буду благодарен за любую информацию.

Автор: Snowy 4.12.2005, 14:17
Заморозка прогресбара ничего не даст - это всего лишь отображение.
Здесь нужно или убивать user timer, чтобы он не тикал,
либо перехватывать сообщения от таймера к окну приложения и не пускать их дальше.

Автор: Girder 4.12.2005, 15:05
Заморозь потоки. Пример приводил... воспользуйся поиском.

Автор: RA 4.12.2005, 17:50
К примеру так.

Код


.............

var
     Hinst : THandle;
   WndArr : array of THandle;
   Wnd : THandle;

......

function GetTimerWindows(Handle: HWND; Info: Pointer): BOOL; stdcall;
const
 sClName ='TPUtilWindow';
var
 s : String;
begin
 Result := True;
 SetLength(s,Length(sClName)+1);
 GetClassName(Handle, PChar(s),Length(s));
 SetLength(s,Length(sClName)); 
 if (GetWindowLong(Handle, GWL_HINSTANCE) = Hinst) and
    (s=sClName)
 then
   begin
     SetLength(WndArr,High(WndArr)+2);
     WndArr[High(WndArr)]:=Handle;
   end;
end;

...............

Procedure KillTbyCaption(s:string);
var

 i : integer;
begin
 Wnd:=FindWindow(nil,Pchar(s));
 if Wnd=0 then Exit;
 hinst:=GetWindowLong(Wnd, GWL_HINSTANCE);
 EnumWindows(@GetTimerWindows,0);
 for i:=0 to High(WndArr) do
       KillTimer(WndArr[i],1);
end;

KillTbyCaption('Заголовок окна');



Автор: Simplex 4.12.2005, 18:41
RAdmin, спасибо за код!

А на счет ProgressBar я вот как выкрутился.
Код

procedure TForm1.Timer1Timer(Sender: TObject);
var tpy  : TPoint;
    hwnd : THandle;
begin
  GetCursorPos(tpy);
  Label1.Caption:='X='+IntToStr(tpy.x);
  Label2.Caption:='Y='+IntToStr(tpy.y);
  hwnd:=WindowFromPoint(tpy);
  SendMessage(hwnd, WM_USER+2, 50, 0);
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)