• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 332
  • Last Modified:

very easy question...

how to activate a win32 app???
I start myapp, then start onother app, and I want to bring to front myapp after one minites...
I've tried SetForgroundWindow, but it only flashes the myapp's icon on the taskbar, but did not puts myapp to the front, and set the focus to it. How to do that?
0
cosie
Asked:
cosie
1 Solution
 
jkrCommented:
Have you tried 'BringWindowToTop()'?
0
 
mblatCommented:
or SetWindowPos(.....) ?
0
 
ambienceCommented:
As far as i know the SetForegroundWindow function on Windows 2000 cannot force a window to the foreground while the user is working with another window. Instead, SetForegroundWindow will activate the window and call the FlashWindowEx function to notify the user.  You can use the following undocumented API to bring a window to front.

void SwitchToThisWindow (HWND hWnd, BOOL bRestore);
typedef void (WINAPI *PROC) (HWND, BOOL);

PROC SwitchToThisWindow = (PROC)GetProcAddress(GetModuleHandle("user32"), "SwitchToThisWindow");  

the second parameter specifies whether the window should restores its position if it is minimized:

SwitchToThisWindow(hWnd, TRUE);

hope this helps ...
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
fl0ydCommented:
ambience,
    just out of curiosity: How did you come across that function? I mean, this is nothing that you do stumble into when doing 'normal' business. After all, it's undocumented probably for the reason to keep people from using it ;)
    kudos to those people that do not fear reverse engineering in this day and age of evergrowing complexity of computer systems and os's.

cosie,
    like ambience already said, the behaviour you are experiencing is meant to work this way. This is a security feature. If you read through the MSDN description that tells you what conditions have to be met to get SetForegroundWindow to work, you will quickly see why it is implemented the way it is. To give you an example: Let's assume your screen saver asks the user to enter the password when it returns, this could result in a potential security hazard. Some virus-like application running in the background could intercept that system message, call SetForegroundWindow to gain input focus, have the unsuspecting user type his/her password and save it. In general, the user should be in absolute control over which application has the input focus any given time. That's why the SetForegroundWindow-fxn has been 'disabled' on win nt systems >=5.0.
0
 
ambienceCommented:
i found a mention of it on web somewhere, but cant remember the link (was quite long ago) ...
0
 
cosieAuthor Commented:
W2k test results:
SwitchToThisWindow(hWnd, TRUE) for the app itself worked only with 2nd param set to false, anyway worked only, if the app was minimized. (So I had to add a SetWindowState and SetFocus)

If I called it from an outofprocess exe component, the same effect occured.

If I called it from another process, which had the focus, it worked regardless the second param...

Interesting, but who cares?

Thanx, pal.

0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now