Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "WinAPI";
Поточний архів: 2003.09.01;
Завантажити: [xml.tar.bz2];

Вниз

Як активувати (передати фокус в) своє вікно? Знайти схожі гілки


RIMMER   (2003-06-17 23:14) [0]

Питання може здатися тупим, але все ж. В мою форму притягають URL зі сторінки IE. Форма його благополучно приймає (за допомогою URLDropTarget http://www.torry.net/vcl/system/draganddrop/urldroptarget.zip), прописує куди треба і ... активним ставати вікно IE :( А треба щоб моє. Як? Викрутаси з SetFocus, SetActiveWindow - не допомогли: ((



Diamond Cat   (2003-06-18 01:45) [1]

Я теж мучився цією проблемою, не так давно подсказаді, відмінно працює, дивись тут http://delphimaster.net/view/4-1050876268/



RIMMER   (2003-06-23 00:04) [2]

Мдаа ... Diamond Cat, хоч ім'я тієї гілки підкажи, не хоче відкриватися !! Пожаааалуйста!



RIMMER   (2003-06-28 00:33) [3]

Рятуйте! Хто-небудь! Гілка пропала !!! Дайте хоч сабж її, хто знав, подивіться у себе в Журналі !!!!!



Diamond Cat   (2003-06-28 00:53) [4]

Зробимо простіше ось исходник

unit setselffocus;

інтерфейс
використовує
sysutils, windows;

function ForceForegroundWindow (hwnd: THandle): Boolean;

реалізація

function ForceForegroundWindow (hwnd: THandle): Boolean;
сопзЬ
SPI_GETFOREGROUNDLOCKTIMEOUT = $ 2000;
SPI_SETFOREGROUNDLOCKTIMEOUT = $ 2001;
було
ForegroundThreadID: DWORD;
ThisThreadID: DWORD;
timeout: DWORD;
починати
if IsIconic (hwnd) then ShowWindow (hwnd, SW_RESTORE);

if GetForegroundWindow = hwnd then Result: = True
ще
починати
// Windows 98 / 2000 doesn "t want to foreground a window when some other
// window has keyboard focus

if ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion> 4)) or
((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and
((Win32MajorVersion> 4) or ((Win32MajorVersion = 4) and
(Win32MinorVersion> 0)))) then
починати
// Code from Karl E. Peterson, www.mvps.org/vb/sample.htm
// Converted to Delphi by Ray Lischner
// Published in The Delphi Magazine 55, page 16

Result: = False;
ForegroundThreadID: = GetWindowThreadProcessID (GetForegroundWindow, nil);
ThisThreadID: = GetWindowThreadPRocessId (hwnd, nil);
if AttachThreadInput (ThisThreadID, ForegroundThreadID, True) then
починати
BringWindowToTop (hwnd); // IE 5.5 related hack
SetForegroundWindow (hwnd);
AttachThreadInput (ThisThreadID, ForegroundThreadID, False);
Result: = (GetForegroundWindow = hwnd);
end;
if not Result then
починати
// Code by Daniel P. Stasinski
SystemParametersInfo (SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @timeout, 0);
SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject (0),
SPIF_SENDCHANGE);
BringWindowToTop (hwnd); // IE 5.5 related hack
SetForegroundWindow (hWnd);
SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject (timeout), SPIF_SENDCHANGE);
end;
кінець
ще
починати
BringWindowToTop (hwnd); // IE 5.5 related hack
SetForegroundWindow (hwnd);
end;

( GetForegroundWindow = hwnd) Зробимо простіше ось исходник

unit setselffocus;

інтерфейс
використовує
sysutils, windows;

function ForceForegroundWindow (hwnd: THandle): Boolean;

реалізація

function ForceForegroundWindow (hwnd: THandle): Boolean;
сопзЬ
SPI_GETFOREGROUNDLOCKTIMEOUT = $ 2000;
SPI_SETFOREGROUNDLOCKTIMEOUT = $ 2001;
було
ForegroundThreadID: DWORD;
ThisThreadID: DWORD;
timeout: DWORD;
починати
if IsIconic (hwnd) then ShowWindow (hwnd, SW_RESTORE);

if GetForegroundWindow = hwnd then Result: = True
ще
починати
// Windows 98 / 2000 doesn "t want to foreground a window when some other
// window has keyboard focus

if ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion> 4)) or
((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and
((Win32MajorVersion> 4) or ((Win32MajorVersion = 4) and
(Win32MinorVersion> 0)))) then
починати
// Code from Karl E. Peterson, www.mvps.org/vb/sample.htm
// Converted to Delphi by Ray Lischner
// Published in The Delphi Magazine 55, page 16

Result: = False;
ForegroundThreadID: = GetWindowThreadProcessID (GetForegroundWindow, nil);
ThisThreadID: = GetWindowThreadPRocessId (hwnd, nil);
if AttachThreadInput (ThisThreadID, ForegroundThreadID, True) then
починати
BringWindowToTop (hwnd); // IE 5.5 related hack
SetForegroundWindow (hwnd);
AttachThreadInput (ThisThreadID, ForegroundThreadID, False);
Result: = (GetForegroundWindow = hwnd);
end;
if not Result then
починати
// Code by Daniel P. Stasinski
SystemParametersInfo (SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @timeout, 0);
SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject (0),
SPIF_SENDCHANGE);
BringWindowToTop (hwnd); // IE 5.5 related hack
SetForegroundWindow (hWnd);
SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject (timeout), SPIF_SENDCHANGE);
end;
кінець
ще
починати
BringWindowToTop (hwnd); // IE 5.5 related hack
SetForegroundWindow (hwnd);
end;

Result: = (GetForegroundWindow = hwnd);
end;
end;

end.



RIMMER   (2003-07-01 00:01) [5]

ДУЖЕ ДЯКУЮ!
GRAND MERCI!
ВЕЛИЧЕЗНЕ СПАСИБІ!



DVM   (2003-07-01 11:49) [6]

Можна ще SwithToThisWindows використовувати. У user32.dll вона здається знаходиться. Але ForceForegroundWindow () краще працює.



Diamond Cat   (2003-07-02 14:57) [7]


> DVM © (01.07.03 11: 49)
SwithToThisWindows не працює з вікнами мають стиль WS_EX_TOOLWINDOW наведений ж приклад нормально працює



сторінки: 1 вся гілка

Форум: "WinAPI";
Поточний архів: 2003.09.01;
Завантажити: [xml.tar.bz2];

Вгору





Пам'ять: 0.57 MB
Час: 0.034 c
6-1533
nester
2003-06-25 18:16
2003.09.01
як перехопити в IE 404 not found і підсунути замість цього своє


14-1629
Торнадо
2003-08-13 08:26
2003.09.01
форум помер


4-1711
DemonLord
2003-07-01 16:14
2003.09.01
Як намалювати +/- в дереві


14-1657
AZ
2003-08-12 03:43
2003.09.01
Net BreAkeR у - Публічну екзекуцію!


1-1449
dima_matrix
2003-08-16 12:55
2003.09.01
Компонування коду Делфі





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська