|
|
Регистрация | << Правила форума >> | 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)
|
#7
|
|||
|
|||
Цитата:
Alegun, так же спасибо! |