procedure TForm1.FormCreate(Sender: TObject);
var
iResult: integer;
begin
regist := TRegistry.Create;
try
regist.RootKey:=HKEY_LOCAL_MACHINE;
regist.Access:= KEY_READ;
regist.OpenKey('
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyGeldBar', true);
geldbarapppath:= regist.Readstring('
DisplayIcon');
finally
regist.free;
end;
if geldbarapppath <> '
'
then
begin
ShellExecute(0,'
open', PAnsiChar(geldbarapppath),
Nil, PAnsiChar(geldbarapppath), SW_SHOW);
form1.Height:=close.Height;
SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE)
or WS_EX_TOOLWINDOW
and not WS_EX_APPWINDOW);
close.Left:=screen.Width - 77;
end;
Sleep(10000);
SHAppBarMessage(ABM_REMOVE, fAppBarData);
// Größe der ganzen Struktur
fAppBarData.cbSize := SizeOf(TAppBarData);
// Handle des Formulares, das als AppBar dienen soll
fAppBarData.hWnd := Self.Handle;
// Callback-Message
fAppBarData.uCallbackMessage := WM_APPBARMSG;
// Wo soll die AppBar sein?
fAppBarData.uEdge := ABE_TOP;
{Alternative Werte: ABE_BOTTOM, ABE_LEFT, ABE_RIGHT}
// Rect für den reservierten Platz, wo keine Anwendung "hin darf"
fAppBarData.rc.Left := 0;
fAppBarData.rc.Right := 0;
fAppBarData.rc.Top := 0;
fAppBarData.rc.Bottom := self.ClientHeight;
// AppBar erstellen
iResult := SHAppBarMessage(ABM_NEW, fAppBarData);
// Hat das Erzeugen geklappt?
if iResult = 0
then
begin
ShowMessage('
Die AppBar konnte nicht erzeugt werden. Unter Umständen existiert bereits eine AppBar an dieser Position.');
Exit;
end;
// Formular genauso breit machen, wie Bildschirm
self.Width := screen.Width;
// Position abfragen und nochmal setzen
SHAppBarMessage(ABM_QUERYPOS, fAppBarData);
SHAppBarMessage(ABM_SETPOS, fAppBarData);
// Nachrichtenschleife abarbeiten
Application.ProcessMessages;
// Bringt das Fenster an die gewünschte Position. Dazu werden die vorher festgelegten Werte verwendet.
MoveWindow(fAppBarData.hWnd, fAppBarData.rc.Left, fAppBarData.Rc.Top, GetSystemMetrics(SM_CXSCREEN), fAppBarData.rc.Bottom, true);
end;