Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 382
  • Last Modified:

function needed similar to FreeConsole()

Hi,
I have the problem that a Console Application
should disappear from the screen. I can't use
FreeConsole(), since my program is using
StdInput und StdOutput handles to redirect the
output of its child. The best is to only show
the process in the Systray. (the process should
run as a service, if I call FreeConsole() then
the redirection fails).

Does anyone have a solution for this problem ?
0
boyracer
Asked:
boyracer
  • 6
  • 4
1 Solution
 
trestanCommented:
Use CreateProcess() function to execute the application. Then the console window can be hiden. Use CreatePipe to redirect the output the created pipe. Then ReadFile to take the output from the file. I have used this method. And the variable of the pipe should be local to the function.
0
 
boyracerAuthor Commented:
Maybe I was not specific enough. It is the parent window
which should disappear.
0
 
nietodCommented:
I don't know enough about console window applications.  Can you access the window handle?  If so, just use ShowWindow() with a SW_HIDE parameter.
0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
nietodCommented:
I can't find any way to access a console window's window handle?  were you able to?  If not, one solution that will work is to use SetConsoleWindowInfo() to position the console window at coordinates that are off the screen.  If you want the make the window vissible again, you can return it to its original coordinates which you would obtain using GetConsoleScreenBufferInfo().

The only problem I can see with this, is that the console will still appear on the task bar.
0
 
nietodCommented:
What is happening with this problem?  Have you found a solution?  Did you try the one I suggested?
0
 
boyracerAuthor Commented:
yes,
the problem is that the process shows up on the taskbar.
I am now thinking about moving to the win32 api where I have
an example how to put the task in the systray.
however I don't know if my redirection of pipes fails.
another message I received was that I can use FreeConsole(),
but have to modify the handles. I did not get that to work
either :-(

0
 
nietodCommented:
I don't know why I didn't think of this before!
You can use FindWindow() to get a handle to the console window.

Then you can use ShowWindow() with SW_HIDE to hide the window.

0
 
boyracerAuthor Commented:
All right !
Since I am at a Unix machine at the moment I will try
it this evening. But it sounds good.

markus

0
 
nietodCommented:
The window class you need to search for seems to be "tty" in windows 95 and "ConsoleWindowClass" in window NT.  If you want to be sure to hide the right window, you can use SetConsoleTitle() to be sure that the console window has a very unique name so you don't accidentally find another window and hide that one instead.
0
 
boyracerAuthor Commented:
All right !
Since I am at a Unix machine at the moment I will try
it this evening. But it sounds good.

markus

0
 
nietodCommented:
Never accept an answer without trying it first!   The general approach will work, but who knows what little problems might appear that will cause the solution to be insufficient.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

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