472,373 Members | 1,445 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,373 software developers and data experts.

Console "Pause"

I am writing a console application and I would like to put a "Press any key..." message once the program is done executing. Currently, when it executes it returns to the prompt. I have tried console.read and console.readline but they both require an <Enter> key to be hit. Any suggestions

Thanks
-KC
Nov 15 '05 #1
4 30220
"=?Utf-8?B?S2Vyd2luIENhYnJlcmE=?=" <an*******@discussions.microsoft.com>
wrote in news:CD**********************************@microsof t.com:
I am writing a console application and I would like to put a "Press
any key..." message once the program is done executing. Currently,
when it executes it returns to the prompt. I have tried console.read
and console.readline but they both require an <Enter> key to be hit.
Any suggestions?

Thanks,
-KC


Hi,

Console.WriteLine("Press any key...");
Console.Read();

greets
Peter

--
------ooo---OOO---ooo------

Peter Koen - www.kema.at
MCAD CAI/RS CASE/RS IAT

------ooo---OOO---ooo------
Nov 15 '05 #2
I tried this but it still requires the <Enter> key. Do you have any other
suggestions?

KC
"Peter Koen" <koen-newsreply&snusnu.at> wrote in message
news:uf**************@TK2MSFTNGP11.phx.gbl...
"=?Utf-8?B?S2Vyd2luIENhYnJlcmE=?=" <an*******@discussions.microsoft.com>
wrote in news:CD**********************************@microsof t.com:
I am writing a console application and I would like to put a "Press
any key..." message once the program is done executing. Currently,
when it executes it returns to the prompt. I have tried console.read
and console.readline but they both require an <Enter> key to be hit.
Any suggestions?

Thanks,
-KC


Hi,

Console.WriteLine("Press any key...");
Console.Read();

greets
Peter

--
------ooo---OOO---ooo------

Peter Koen - www.kema.at
MCAD CAI/RS CASE/RS IAT

------ooo---OOO---ooo------

Nov 15 '05 #3
In article <CD**********************************@microsoft.co m>, Kerwin Cabrera wrote:
I am writing a console application and I would like to put a "Press any key..." message once the program is done executing. Currently, when it executes it returns to the prompt. I have tried console.read and console.readline but they both require an <Enter> key to be hit. Any suggestions?

Thanks,
-KC


You have to use P/Invoke for this to call SetConsoleMode to turn off
ENABLE_LINE_INPUT and ENABLE_ECHO_INPUT. Here is a little program that
I use to grab key values for a batch file menu... It is pretty quick
and dirty, but it does the job :)

using System;
using System.ComponentModel;
using System.Runtime.InteropServices;

namespace GetKey
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class KeyGrabber
{
// constant values for use with the console api
private const uint STD_INPUT_HANDLE = unchecked((uint) -10);
private const uint ENABLE_LINE_INPUT = 0x0002;
private const uint ENABLE_ECHO_INPUT = 0x0004;
private static readonly IntPtr INVALID_HANDLE_VALUE = new
IntPtr(-1);

// console functions
[DllImport("kernel32", ExactSpelling=true, SetLastError=true)]
private static extern IntPtr GetStdHandle (
uint nStdHandle);

[DllImport("kernel32", ExactSpelling=true, SetLastError=true)]
private static extern bool GetConsoleMode (
IntPtr hConsoleHandle,
out uint lpMode);

[DllImport("kernel32", ExactSpelling=true, SetLastError=true)]
private static extern bool SetConsoleMode(
IntPtr hConsoleHandle,
uint dwMode);

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static int Main(string[] args)
{
int ret = 0;
string prompt = (args.Length != 0 ? args[0] : string.Empty);

IntPtr stdin = GetStdHandle(STD_INPUT_HANDLE);
if (stdin != INVALID_HANDLE_VALUE)
{
uint oldMode;

if (GetConsoleMode(stdin, out oldMode))
{
uint newMode = (oldMode & (~(ENABLE_LINE_INPUT |
ENABLE_ECHO_INPUT)));
if (SetConsoleMode(stdin, newMode))
{
Console.Write(prompt);
ret = Console.Read();
Console.WriteLine();
if (!SetConsoleMode(stdin, oldMode))
{
ret = -1;
}
}
else
{
ret = -1;
}
}
else
{
ret = -1;
}
}
else
{
ret = -1;
}

return ret;
}
}
}

HTH
--
Tom Shelton
MVP [Visual Basic]
Nov 15 '05 #4
Thanks! That worked great!

KC
"Tom Shelton" <to*@mtogden.com> wrote in message
news:e$**************@TK2MSFTNGP09.phx.gbl...
In article <CD**********************************@microsoft.co m>, Kerwin

Cabrera wrote:
I am writing a console application and I would like to put a "Press any key..." message once the program is done executing. Currently, when it
executes it returns to the prompt. I have tried console.read and
console.readline but they both require an <Enter> key to be hit. Any
suggestions?
Thanks,
-KC


You have to use P/Invoke for this to call SetConsoleMode to turn off
ENABLE_LINE_INPUT and ENABLE_ECHO_INPUT. Here is a little program that
I use to grab key values for a batch file menu... It is pretty quick
and dirty, but it does the job :)

using System;
using System.ComponentModel;
using System.Runtime.InteropServices;

namespace GetKey
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class KeyGrabber
{
// constant values for use with the console api
private const uint STD_INPUT_HANDLE = unchecked((uint) -10);
private const uint ENABLE_LINE_INPUT = 0x0002;
private const uint ENABLE_ECHO_INPUT = 0x0004;
private static readonly IntPtr INVALID_HANDLE_VALUE = new
IntPtr(-1);

// console functions
[DllImport("kernel32", ExactSpelling=true, SetLastError=true)]
private static extern IntPtr GetStdHandle (
uint nStdHandle);

[DllImport("kernel32", ExactSpelling=true, SetLastError=true)]
private static extern bool GetConsoleMode (
IntPtr hConsoleHandle,
out uint lpMode);

[DllImport("kernel32", ExactSpelling=true, SetLastError=true)]
private static extern bool SetConsoleMode(
IntPtr hConsoleHandle,
uint dwMode);

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static int Main(string[] args)
{
int ret = 0;
string prompt = (args.Length != 0 ? args[0] : string.Empty);

IntPtr stdin = GetStdHandle(STD_INPUT_HANDLE);
if (stdin != INVALID_HANDLE_VALUE)
{
uint oldMode;

if (GetConsoleMode(stdin, out oldMode))
{
uint newMode = (oldMode & (~(ENABLE_LINE_INPUT |
ENABLE_ECHO_INPUT)));
if (SetConsoleMode(stdin, newMode))
{
Console.Write(prompt);
ret = Console.Read();
Console.WriteLine();
if (!SetConsoleMode(stdin, oldMode))
{
ret = -1;
}
}
else
{
ret = -1;
}
}
else
{
ret = -1;
}
}
else
{
ret = -1;
}

return ret;
}
}
}

HTH
--
Tom Shelton
MVP [Visual Basic]

Nov 15 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
by: Danny Anderson | last post by:
Hola! I am working on a program where I am including a library that came with my numerical methods textbook. The "util.h" simply includes a large number of files. I had to change the util.h...
5
by: Brian.Steele | last post by:
Greetings everyone. See http://www.spiceisle.com/cgi-bin/slideshow/slideshow.cgi?dir=brian/personal/2005/uk_trip/images&type=jpg The "Pause" button works in IE, but not in Firefox. Any ideas...
11
by: Paminu | last post by:
Is there something like system("PAUSE") for linux?
3
by: RR | last post by:
I have a button on a form (form A) that opens another form. The form that opens (form B) has a listbox that is populated with a call to a function in the "on current" event. When form B with the...
9
by: Susan Rice | last post by:
I'm running a simple win32 console application and I want to impliment a "Press any key to continue", so I print that prompt, and then what's the easiest way to impliment reading any key? Do I use...
5
by: CoderMarc | last post by:
Hi, I can not get the system pause to work in a simple program. Here is my program below: // i/o example #include <iostream> using namespace std; int main ()
1
by: Wazza | last post by:
G'Day, I have a re-occurring problem and wish to design a framework or pattern to address it. I have some Ideas but I would like to do some brainstorming with my peers before commencing. The...
2
by: Charles Zhang | last post by:
For Win32 application, I could use "__asm pause". However, for X64 platform, the inline assembler is not supported. Is there a compiler intrinsics for "__asm pause"? Thanks Charles Zhang
2
by: Kemmylinns12 | last post by:
Blockchain technology has emerged as a transformative force in the business world, offering unprecedented opportunities for innovation and efficiency. While initially associated with cryptocurrencies...
0
by: Naresh1 | last post by:
What is WebLogic Admin Training? WebLogic Admin Training is a specialized program designed to equip individuals with the skills and knowledge required to effectively administer and manage Oracle...
0
by: antdb | last post by:
Ⅰ. Advantage of AntDB: hyper-convergence + streaming processing engine In the overall architecture, a new "hyper-convergence" concept was proposed, which integrated multiple engines and...
0
by: Carina712 | last post by:
Setting background colors for Excel documents can help to improve the visual appeal of the document and make it easier to read and understand. Background colors can be used to highlight important...
0
BLUEPANDA
by: BLUEPANDA | last post by:
At BluePanda Dev, we're passionate about building high-quality software and sharing our knowledge with the community. That's why we've created a SaaS starter kit that's not only easy to use but also...
0
by: Rahul1995seven | last post by:
Introduction: In the realm of programming languages, Python has emerged as a powerhouse. With its simplicity, versatility, and robustness, Python has gained popularity among beginners and experts...
2
by: Ricardo de Mila | last post by:
Dear people, good afternoon... I have a form in msAccess with lots of controls and a specific routine must be triggered if the mouse_down event happens in any control. Than I need to discover what...
1
by: ezappsrUS | last post by:
Hi, I wonder if someone knows where I am going wrong below. I have a continuous form and two labels where only one would be visible depending on the checkbox being checked or not. Below is the...
0
DizelArs
by: DizelArs | last post by:
Hi all) Faced with a problem, element.click() event doesn't work in Safari browser. Tried various tricks like emulating touch event through a function: let clickEvent = new Event('click', {...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.