.NET

Reply
Active Contributor
misterblobby
Posts: 28
Registered: ‎07-19-2004
Message 1 of 4 (369 Views)
Accepted Solution

Capturing escape key during a command

369 Views, 3 Replies
12-17-2013 10:33 PM

Hi all,

 

I have a vb.net Autocad add-in which runs an iterative routine with a while..wend loop that often takes a few minutes to finish.

 

The routine is very stable and always restores user control eventually, but if the user hits the escape key while it is running, a fatal error occurs in acad.exe.

 

Does anyone know if there is a way to detect that the escape key has been pressed so the routine is exited?

Mentor
SENL1362
Posts: 214
Registered: ‎07-20-2011
Message 2 of 4 (357 Views)

Re: Capturing escape key during a command

12-18-2013 12:40 AM in reply to: misterblobby

 

 

 

bool EscapePressed=false;

//before your while loop

Autodesk.AutoCAD.ApplicationServices.Application.PreTranslateMessage += new PreTranslateMessageEventHandler(myEscWatcher);

 

while(true)

{

    //do your work

   if (EscapePressed)

       break;

}

 

 

const int KEYDOWN= 0x0100;

void myEscWatcher(object sender, PreTranslateMessageEventArgs messageDetails)
{
if (messageDetails.Message.message == KEYDOWN && ((Keys)(int)messageDetails.Message.wParam & Keys.KeyCode) == Keys.Escape)
{
    //do something when ESCAPE has been pressed, for example

   EscapePressed=true;
}

ADN Support Specialist
augusto.goncalves
Posts: 387
Registered: ‎04-30-2009
Message 3 of 4 (339 Views)

Re: Capturing escape key during a command

12-18-2013 05:28 AM in reply to: misterblobby

Hi,

 

AutoCAD has a property to determine whenever the ESCAPE was pressed, check the posts below:

 

http://adndevblog.typepad.com/autocad/2013/02/return-to-command-prompt-when-escape-is-pressed-using-...

http://adndevblog.typepad.com/autocad/2012/07/allowing-users-to-escape-from-long-operations-in-autoc...

 

Regards,



Augusto Goncalves
Autodesk Developer Network
Active Contributor
misterblobby
Posts: 28
Registered: ‎07-19-2004
Message 4 of 4 (316 Views)

Re: Capturing escape key during a command

12-18-2013 05:25 PM in reply to: augusto.goncalves

Thanks guys,

 

Easy as that!

 

Just for convenience, below is the relevant piece of code from the first link above in VB. I had to place it in a few different places to catch the keypress reliably, but it works well if in the right spot.

 

 

If HostApplicationServices.Current.UserBreak = True Then
           Throw New Autodesk.AutoCAD.Runtime.Exception(ErrorStatus.UserBreak, "Escape pressed")
            Exit Sub

End If

Post to the Community

Have questions about Autodesk products? Ask the community.

New Post
Announcements
Are You Going To Be @ AU 2014? Feel free to drop by our AU topic post and share your plans, plug a class that you're teaching, or simply check out who else from the community might be in attendance. Ohh and don't forgot to stop by the Autodesk Help | Learn | Collaborate booths in the Exhibit Hall and meet our community team if you get a chance!