| Автор
| Сообщение |
 Discorezzz
Бывалый

Зарегистрирован: 13.10.2006
Сообщения: 53
Откуда: СССР
|
|
|
Цитата |
|
Такое возможно?
Имя класса окна прогрессбара известно... |
|
| В начало |
|
 |
|
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
Если заглянуть в исходники VCL, увидишь там такую штуку:
| delphi: | function TProgressBar.GetPosition: Integer; begin if HandleAllocated then begin if F32BitMode then Result := SendMessage(Handle, PBM_GETPOS, 0, 0) else Result := SendMessage(Handle, PBM_DELTAPOS, 0, 0) end else Result := FPosition; end;
|
Стоит попробовать сделать то же самое, но с нужным тебе прогрессбаром - вполне вероятно, что получится _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
 Discorezzz
Бывалый

Зарегистрирован: 13.10.2006
Сообщения: 53
Откуда: СССР
|
|
|
Цитата |
|
Благодарствую за подсказочку, всё пашет как часы
Накидал "летучку" получилось примерно так:
| delphi: | procedure TForm1.TimerTimer(Sender: TObject); const //from CommCtrl.pas PBM_GETRANGE = WM_USER+7; PBM_GETPOS = WM_USER+8; var PW, ChW: HWND; //Parent & child windows Poz, Max: Integer; begin PW := FindWindow('<ИМЯ КЛАССА>', '<ИМЯ ОКНА>'); if PW <> 0 then begin ChW := FindWindowEx(PW, 0, '<ИМЯ КЛАССА ПРОГРЕССБАРА>', nil); if ChW <> 0 then begin Max := SendMessage(ChW, PBM_GetRange, 0, 0); Poz := Round(SendMessage(ChW, PBM_GETPOS, 0, 0) * (100 / Max)); PBar.Position := Poz; end else PBar.Position := 0; end else PBar.Position := 0; end;
|
|
|
| В начало |
|
 |
|