Solved

Bring application to foreground if not on top

Posted on 2002-04-10
14
208 Views
Last Modified: 2010-04-04
I have a tray icon application. If I click on the tray icon I want my application, if already visible with (Application.ShowMainForm := True;), to be displayed on top of all the other windows. Also if my application is not visible then it must be showed. So there are two states: 1. Application is visible but not on top & 2. Application is not visible. How will I know if it's visible and not on top so that I can put it on top? And how would I put it on top? Thanx in advance!
0
Comment
Question by:skynergy
  • 5
  • 4
  • 2
  • +2
14 Comments
 
LVL 17

Expert Comment

by:geobul
ID: 6931281
Hi,

...
ShowWindow(Form1.Handle, SW_RESTORE);
SetForegroundWindow(Form1.Handle);
...

Regards, Geo
0
 
LVL 17

Expert Comment

by:geobul
ID: 6931301
You don't need to know the current state. Just execute that two lines above when you want the form to be displayed.

Regards, Geo
0
 

Author Comment

by:skynergy
ID: 6931339
Thanx for the reply. Geo answered my 2nd question. I still need my first question answered. Thanx.
0
 
LVL 9

Expert Comment

by:ginsonic
ID: 6931511
listening
0
 
LVL 4

Expert Comment

by:jsweby
ID: 6931595
Surely geobul answered both of your questions in one? The code he supplied will show the form and bring it to the top, regardless of whether it is currently showing or not.

J.
0
 
LVL 17

Accepted Solution

by:
geobul earned 50 total points
ID: 6931610
If you mean 'Always on top' then set your form's FormStyle property to fsStayOnTop.

Otherwise I gave a solution. When your form is visible but overlapped by other windows, 'ShowWindow(Form1.Handle, SW_RESTORE);' does nothing and SetForegroundWindow brings the form over other normal windows. The form gets focused also.

Regards, Geo
0
 

Author Comment

by:skynergy
ID: 6931647
I need to know if my form is below some other windows so that I can use the code provided by GEO. I am aware that if I use the code the window will go to the top. But I am looking for the windows API to determine if my application is not the foreground window and then bring it to the top if I want to. Sorry, guys it might sound silly but that's more imortant than getting it to the top. Thanx!
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 4

Expert Comment

by:jsweby
ID: 6931654
Out of interest, why?
0
 
LVL 17

Expert Comment

by:geobul
ID: 6931679
Well, IsIconic(Form1.Handle) will return true if the window is minimized and false if it's not.

Regards, Geo
0
 
LVL 17

Expert Comment

by:inthe
ID: 6932131
one idea GetForeGroundWindow(), will give the handle of current foreground window check it with the handle of your form.
0
 

Author Comment

by:skynergy
ID: 6933392
Good idea Inthe. I will come back to you thanx!
0
 

Author Comment

by:skynergy
ID: 6933454
var
   pCh: PChar;
begin
  pCh := StrAlloc(1024);
  GetWindowText(GetForegroundWindow, pCh, 1024);
  if Application.Title = StrPas(pCh) then
     DoSomeThing;
  StrDispose(pCh);


This is working well in my application. What do you think? Just comparing the Handles didn't do it. Unless I didn't do it incorrectly.
0
 
LVL 17

Expert Comment

by:inthe
ID: 6933665
its actually better than comparing handles as always  possibility(although really a remote one) that handle could change
0
 

Author Comment

by:skynergy
ID: 6933709
Thanx for the help guys. Geo I'm going to give you the points seeing that you answered first and helped me along the way, thanx! Thanx for all the other input.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Delphi Firemonkey Need Sample for Online Shopping Example. 2 119
find a node in VST 2 63
Working with hours 3 46
FMX and jaudiotracker playing memory stream 29 66
This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

919 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now