![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте.
Дайте совет, как сделать что бы при передвижении своей программы (form1), сторонняя программа двигалась вместе с ней, точнее в ней. На форме есть прозрачный кусок, я хочу в этот прозрачный кусок поместить программу (заставить двигаться относительно координатам left и top form1). Что бы если я переместил Form1, сторонняя программа двигалась тоже. Допустим это будет cmd.exe Делаю так: запускаю программно cmd.exe В глобальных переменных x,y: integer; Код:
procedure TForm1.tmr1Timer(Sender: TObject);
var
h: HWND;
begin
x:=form1.Left;
y:=form1.Top+12;
h := findwindow(nil, 'C:\WINDOWS\system32\cmd.exe');
if h <> 0 then
SetWindowPos(h, HWND_BOTTOM, x, y, 0,0, swp_nosize);
end;Само окно cmd.exe появляется там где мне надо, но таким образом не получается переместить form1. Подскажите, как можно сделать, спасибо заранее. |
|
#2
|
||||
|
||||
|
Вместо таймера используйте OnMove т.е. отслеживайте перемещение формы
Код:
...
private
procedure OnMove(var Msg: TWMMove); message WM_MOVE;
...
procedure TForm1.OnMove(var Msg: TWMMove);
var
h: HWND;
begin
inherited;
x:=form1.Left;
y:=form1.Top+12;
h := findwindow(nil, 'C:\WINDOWS\system32\cmd.exe');
if h <> 0 then
SetWindowPos(h, HWND_BOTTOM, x, y, 0,0, swp_nosize);
end; |
|
#3
|
|||
|
|||
|
Цитата:
Перетаскиваю свою форму, она на несколько пикселей двигается(окно cmd.exe вместе с ней, всё как надо), а дальше стопорится и форма и окно cmd.exe, как будто отпустил кнопку мышки при перетаскивании. Может что-от не так делаю? |
|
#4
|
||||
|
||||
|
Проверил - это в связке с вашим кодом работает нормально
|
|
#5
|
|||
|
|||
|
Цитата:
![]() |
|
#6
|
||||
|
||||
|
Код:
procedure TForm1.WMMOVE(var Msg: TWMMove);
var
h: HWND;
begin
inherited;
x:=Left;
y:=Top;
h := FindWindow(nil, 'C:\WINDOWS\system32\cmd.exe');
if h <> 0 then
SetWindowPos(h, HWND_TOP, x, y, 0,0, SWP_NOSIZE or SWP_NOACTIVATE);
end; |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Gareth (26.01.2014)
| ||