![]() |
Programm in den Vordergrund bringen
HI,
ich möchte mein Programm, wenn ein bestimmter fall eintritt, in den Vordergrund bringen. Wie kann ich das machen ? ich hab schon danach gegoogelt habe nur "alte" methoden gefunden, die bei mir nicht funktionieren, da ich XP habe. Vielen dank schonmal im voraus. |
Re: Programm in den Vordergrund bringen
Ich würds einfach so machen:
Delphi-Quellcode:
Gibt vielleicht noch ne elegantere Methode die mich auch interressieren würde ^^
procedure MeinEreignis;
begin FormStyle := fsStayOnTop; //Form in den "StayOnTop" Modus bringen FormStyle := fsNormal; //Form wieder "normalisieren" end; |
Re: Programm in den Vordergrund bringen
und wie kann ich es verbergen, also, dass das Form nicht mehr zu sehen ist (habe es schon in Tray gebracht)?
|
Re: Programm in den Vordergrund bringen
Auch TApplication kennt
Delphi-Quellcode:
,
BringToFront;
wenn ich mich denn nicht irre. Edit: Zitat:
Delphi-Quellcode:
?
form1.visible := false
|
Re: Programm in den Vordergrund bringen
Zitat:
Zitat:
![]() Verbergen geht mit der Eigenschaft ![]() |
Re: Programm in den Vordergrund bringen
könntest du mir dafür ein beispiel geben ?
ich weiß nämlich nicht, wie ich das mit den "uFlags" machen soll:
Delphi-Quellcode:
?
SetWindowPos(HWND,HWND_TOPMOST,0,0,0,0,UINT uFlags);
|
Re: Programm in den Vordergrund bringen
Sthet doch alles im PSDK:
![]() |
Re: Programm in den Vordergrund bringen
Ansonsten kannst du dir das Vordergrundfenster holen (GetForegroundWindow), die Eingabequeues verbinden (GetWindowThreadProcessId, AttachThreadInput) und mittels (Windows.)SetFocus dein Programm aktivieren.
Delphi-Quellcode:
Wenn dein Programm sich ohne Grund den Fokus holt, wird der Benutzer es schnell hassen lernen...
function BringToFrontEx(AWnd: HWND): Boolean;
var FgWindow: HWND; ThreadId: DWORD; Attached: BOOL; begin FgWindow := GetForegroundWindow(); ThreadId := GetWindowThreadProcessId(FgWindow, nil); Attached := AttachThreadInput(GetCurrentThreadId(), ThreadId, True); if Attached or (ThreadId = GetCurrentThreadId()) then Result := SetFocus(AWnd) <> 0 else Result := SetForegroundWindow(AWnd); if Attached then AttachThreadInput(GetCurrentThreadId(), ThreadId, False); end; |
Re: Programm in den Vordergrund bringen
Achso ok, danke Luckie für die Aufklärung :)
Habs halt mit bringToFront versucht aber das funktioniert leider nicht :( |
Re: Programm in den Vordergrund bringen
Ich hab das Porgramm jetzt versteckt mit:
Delphi-Quellcode:
ShowWindow(Handle, SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE); aber wie kann ich es wieder anzeigen ? |
Re: Programm in den Vordergrund bringen
Hallo,
in dem du statt SW_HIDE SW_SHOW verwendest. Gruß, ManuMF |
Re: Programm in den Vordergrund bringen
danke...ich habs mit
Delphi-Quellcode:
probiert, funktioniert auch, aber wenn ich es in dieser Procedure (von dsdt) verwende funktioniert es nicht:
ShowWindow(Handle, SW_SHOWNORMAL);
Delphi-Quellcode:
woran liegt das, dass es in der einen procedure funktioniert, in dieser aber nicht ? kriegt er da das Handle nicht ?
procedure TaskBarRemoveIcon;
var tnid: TNotifyIconData; Owner: HWnd; begin tnid.cbSize := SizeOf(TNotifyIconData); tnid.Wnd := Form1.Handle; tnid.uID := 1; Shell_NotifyIcon(NIM_DELETE, @tnid); Owner:=GetWindow(Form1.Handle,GW_OWNER); If Owner<>0 Then Begin ShowWindow(Handle, SW_SHOWNORMAL); //<<--- er sagt: [Error] Unit1.pas(76): Undeclared identifier: 'Handle' ShowWindow(Owner,SW_Show); ShowWindow(Owner,SW_Normal); End; end; Danke hat sich schon erledigt, ich hab einfach das Handle des letzten aufrufes (sw_hide) in einer variable gespeichert und oben verwendet. |
Re: Programm in den Vordergrund bringen
Hallo,
in der anderen Procedure steht Handle für das Handle von Form1 ( :arrow: procedure TForm1.XYZ). In der anderen Procedure gibt es aber nichts, wozu handle gehören könnte ( :arrow: Undefinierter Bezeichner). Schreibe also einfach ein "Form1." davor, und es funktioniert. Gruß, ManuMF |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz