/trunk/Kalenderersatz/Calender.dpr |
---|
4,7 → 4,8 |
Forms, |
Main in 'Main.pas' {MainForm}, |
FullYearCalendar in 'FullYearCalendar.pas', |
NoDoubleStart in 'NoDoubleStart.pas'; |
NoDoubleStart in 'NoDoubleStart.pas', |
Functions in 'Functions.pas'; |
{$R *.res} |
/trunk/Kalenderersatz/Main.pas |
---|
40,7 → 40,7 |
{$R *.dfm} |
uses |
CommCtrl, FullYearCalendar; |
CommCtrl, FullYearCalendar, Functions; |
// Ref: http://www.delphi-fundgrube.de/faq01.htm |
115,68 → 115,10 |
ClientHeight := cal.Height; |
end; |
// Ref: http://www.swissdelphicenter.ch/de/showcode.php?id=261 |
function ForceForegroundWindow(hwnd: THandle): Boolean; |
const |
SPI_GETFOREGROUNDLOCKTIMEOUT = $2000; |
SPI_SETFOREGROUNDLOCKTIMEOUT = $2001; |
var |
ForegroundThreadID: DWORD; |
ThisThreadID: DWORD; |
timeout: DWORD; |
begin |
if IsIconic(hwnd) then ShowWindow(hwnd, SW_RESTORE); |
if GetForegroundWindow = hwnd then Result := True |
else |
begin |
// 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 |
begin |
// 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 |
begin |
BringWindowToTop(hwnd); // IE 5.5 related hack |
SetForegroundWindow(hwnd); |
AttachThreadInput(ThisThreadID, ForegroundThreadID, False); |
Result := (GetForegroundWindow = hwnd); |
end; |
if not Result then |
begin |
// 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; |
end |
else |
begin |
BringWindowToTop(hwnd); // IE 5.5 related hack |
SetForegroundWindow(hwnd); |
end; |
Result := (GetForegroundWindow = hwnd); |
end; |
end; |
procedure TMainForm.Vordergrund; |
begin |
Show; |
ShowWindow(Handle, SW_RESTORE); |
ForceForegroundWindow(Handle); |
end; |
/trunk/Kalenderersatz/Functions.pas |
---|
0,0 → 1,72 |
unit Functions; |
interface |
uses |
SysUtils, Windows; |
function ForceForegroundWindow(hwnd: THandle): Boolean; |
implementation |
// Ref: http://www.swissdelphicenter.ch/de/showcode.php?id=261 |
function ForceForegroundWindow(hwnd: THandle): Boolean; |
const |
SPI_GETFOREGROUNDLOCKTIMEOUT = $2000; |
SPI_SETFOREGROUNDLOCKTIMEOUT = $2001; |
var |
ForegroundThreadID: DWORD; |
ThisThreadID: DWORD; |
timeout: DWORD; |
begin |
if IsIconic(hwnd) then ShowWindow(hwnd, SW_RESTORE); |
if GetForegroundWindow = hwnd then Result := True |
else |
begin |
// 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 |
begin |
// 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 |
begin |
BringWindowToTop(hwnd); // IE 5.5 related hack |
SetForegroundWindow(hwnd); |
AttachThreadInput(ThisThreadID, ForegroundThreadID, False); |
Result := (GetForegroundWindow = hwnd); |
end; |
if not Result then |
begin |
// 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; |
end |
else |
begin |
BringWindowToTop(hwnd); // IE 5.5 related hack |
SetForegroundWindow(hwnd); |
end; |
Result := (GetForegroundWindow = hwnd); |
end; |
end; |
end. |
/trunk/Kalenderersatz/Calender.cfg |
---|
31,8 → 31,8 |
-M |
-$M16384,1048576 |
-K$00400000 |
-LE"C:\Dokumente und Einstellungen\Daniel Marschall\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-LN"C:\Dokumente und Einstellungen\Daniel Marschall\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-LE"C:\Dokumente und Einstellungen\Solar del Sol\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-LN"C:\Dokumente und Einstellungen\Solar del Sol\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-w-UNSAFE_TYPE |
-w-UNSAFE_CODE |
-w-UNSAFE_CAST |
/trunk/Kalenderersatz/Calender.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |