How to check if the program is run from a console?
The typical test is:
if( isatty( STDOUT_FILENO )) { /* this is a terminal */ }
You can use GetConsoleWindow, GetWindowThreadProcessId and GetCurrentProcessId methods.
1) First you must retrieve the current handle of the console window using the GetConsoleWindow
function.
2) Then you get the process owner of the handle of the console window.
3) Finally you compare the returned PID against the PID of your application.
Check this sample (VS C++)
#include "stdafx.h"
#include <iostream>
using namespace std;
#if _WIN32_WINNT < 0x0500
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0500
#endif
#include <windows.h>
#include "Wincon.h"
int _tmain(int argc, _TCHAR* argv[])
{
HWND consoleWnd = GetConsoleWindow();
DWORD dwProcessId;
GetWindowThreadProcessId(consoleWnd, &dwProcessId);
if (GetCurrentProcessId()==dwProcessId)
{
cout << "I have my own console, press enter to exit" << endl;
cin.get();
}
else
{
cout << "This Console is not mine, good bye" << endl;
}
return 0;
}