Hogyan készítsünk egy alkalmazás aktív!
Hogyan készítsünk egy olyan alkalmazás, aktív az ő ablak tetején a másik, ha fut, mint ez:
Palacsinta megpróbálta a legkülönfélébb módokon:
PostMessage (fogantyú, WM_ACTIVATE, 0, 0);
SendMessage (fogantyú, WM_ACTIVATE, WA_CLICKACTIVE, 0);
BringWindowToTop (fogantyú);
Itt egy másik üzenetet a lehetőség WM_ACTIVATEAPP tartalmaz hThread is használja, mint?
Vagy hogyan lehet megvalósítani egy ilyen lehetőség?
Timer program aktívvá válik, azaz A program ablak tetején az összes ablak és volt a hangsúly.
Itt vagyok találtam egy ilyen lehetőség
Úgy működik - de nem tetszik, hogy az ablak első minimalizálható.
Van valakinek bármilyen további változatok.
> Hogyan alkalmazás előtérbe?
ha GetActiveWindow<>Egyes HWND majd SetActiveWindow (néhány HWND);
2 GanibalLector # XA0; [4]
Rossz, bocs
Ebben:
var QQ: HWND;
kezdődik
QQ: = findwindow ( "SciCalc", nulla);
ha GetForegroundWindow<>QQ majd SetForegroundWindow (QQ);
végén;
Itt van egy lista a funkciók és az üzenetek amit használtam semmi sem segített.
A legjobb, a villogó ablak címét, és minden.
si.wShowWindow: = sw_show;
PostMessage (fogantyú, WM_SYSCOMMAND, SC_restore, 0);
BringWindowToTop (fogantyú);
si.dwFlags: = STARTF_RUNFULLSCREEN;
si.wShowWindow: = 4;
ARC30.Enabled: = true;
FlashWindow (Handle, true);
Showwindow (fogantyú, sw_show);
SetWindowPos (fogantyú, HWND_BOTTOM, 1,1,200,200, SWP_SHOWWINDOW);
PostMessage (fogantyú, WM_ACTIVATE, 0, 0);
ShowWindow (fogantyú, SW_RESTORE);
SendMessage (fogantyú, WM_SYSCOMMAND, SC_MINIMIZE, 0);
SendMessage (fogantyú, WM_ACTIVATE, WA_CLICKACTIVE, 0);
BringWindowToTop (fogantyú);
SetForegroundWindow (.Handle);
SendMessage (fogantyú, WM_LButtonDown, 1,1);
SendMessage (fogantyú, WM_LButtonUP, 1,1);
SendMessage (fogantyú, WM_ACTIVATEAPP, 0, 0);
SetWindowPos (fogantyú, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE + SWP_NOMOVE);
Csak akkor működik:
Application.Minimize;
Application.Restore;
Application.BringToFront;
Niuzhele nincs mód.
Ez csak akkor működik,
Nem hiszem el.
Ön [6] megpróbálta.
segíthet ez pontosan
# XA0; # XA0; ha nem, akkor Eredmény
# XA0; # XA0; kezdődik
# XA0; # XA0; # XA0; // Kód: Daniel P. Stasinski
# XA0; # XA0; # XA0; SystemParametersInfo (SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @timeout, 0);
# XA0; # XA0; # XA0; SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject (0), SPIF_SENDCHANGE);
# XA0; # XA0; # XA0; BringWindowToTop (hwnd); // IE 5.5 kapcsolatos hack
# XA0; # XA0; # XA0; SetForegroundWindow (hwnd);
# XA0; # XA0; # XA0; SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject (timeout), SPIF_SENDCHANGE);
# XA0; # XA0; végén;
# XA0; vég
# XA0; más
# XA0; kezdődik
# XA0; # XA0; BringWindowToTop (hwnd); // IE 5.5 kapcsolatos hack
# XA0; # XA0; SetForegroundWindow (hwnd);
# XA0; végén;
# XA0; Eredmény: = (GetForegroundWindow = hwnd);
végén;
végén;
// -----------------------------------------
eljárás TForm1.Timer1Timer (Sender: TObject);
kezdődik
# XA0; ForceForegroundWindow (Application.Handle);
végén;
VÉGRE működik.
Köszönöm szépen DDA.
A lényege a program Következő:
A programok futtatásához ellenőrzi önmagát jelenlétében memóriát, ha van is működnek, ha van egy üzenet, amely továbbítja az első program, amely kialakulni és aktívvá válik, és a második példányt a kijárat.
Köszönet újra.