繁体   English   中英

给定System.ExecutionEngineException的GetMessage()

[英]GetMessage() given an System.ExecutionEngineException

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll")]
        public static extern
            bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, int vk);
        [DllImport("user32")]
        public static extern
            bool GetMessage(ref Message lpMsg, IntPtr handle, uint mMsgFilterInMain, uint mMsgFilterMax);

        public const int MOD_ALT = 0x0001;
        public const int MOD_CONTROL = 0x0002;
        public const int MOD_SHIFT = 0x004;
        public const int MOD_NOREPEAT = 0x400;
        public const int WM_HOTKEY = 0x312;
        public const int DSIX = 0x36;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            bool r = RegisterHotKey(Handle, 1, MOD_ALT, DSIX);

            if (!r)
            {
                MessageBox.Show("can't do..");
                return;
            }

            Message msg = new Message();

            while (GetMessage(ref msg,IntPtr.Zero, 0, 0))
            {
                if (msg.message == WM_HOTKEY)
                {
                    MessageBox.Show("do work..");
                }
            }


        }
    }


    public class Message
    {
        public int message { get; set; }
    }
}

当按下目标时,出现以下错误:

Exception of type 'System.ExecutionEngineException' was thrown.

这是什么? 如何解决这个问题? 提前致谢。

这注定要失败。 如果编写自己的消息循环,它将停止WinForms接收任何消息。

而是改写PreProcessMessageWndProc函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM