zvyagaaa
|
Posted: Thu Sep 17, 2009 17:43 Post subject: |
|
|
var dwTargetOwner: DWORD; // указатель на подключаемый процесс
dwThreadID: DWORD;
ListBoxHnd: hwnd;
t, l: Integer;
Resulted: Boolean; // метка присоединения чужого процесса
itemindex: Integer; // указатель на текущий процесс
itemrect: TRect; // рамка вокруг позиции
ListBoxRect: TRect; // рамка вокруг окна
begin
dwTargetOwner:= GetWindowThreadProcessId(GetForegroundWindow, nil);
dwThreadID:= GetCurrentThreadId(); // указатель на текущий процесс
if (dwTargetOwner <> dwThreadID) then // если не один и тот же процесс
Resulted:= AttachThreadInput(dwThreadID, dwTargetOwner, TRUE);
// подключение
ListBoxHnd:= GetFocus;
itemindex:= SendMessage(ListBoxHnd, lb_GetCurSel, wParam(0), lParam(0));
itemrect:= Rect(0, 0, 0, 0);
SendMessage(ListBoxHnd, LB_GETITEMRECT, wParam(itemindex), lParam
(Integer(@itemrect)));
GetWindowRect(ListBoxHnd, ListBoxRect);
t:= itemrect.Bottom + ListBoxRect.Top;
l:= itemrect.Left + 20 + ListBoxRect.Left; |
|