簡體   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