GetMessage() gegeben ein 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; }
    }
}

wenn das Ziel ist, gedrückt wird, bekomme ich die folgende Fehlermeldung:

Exception of type 'System.ExecutionEngineException' was thrown.

was ist das? wie man dieses Problem beheben? Vielen Dank im Voraus.

  • Ihre Nachricht Klasse nicht genügend Mitglieder, so GetMessage() verdirbt die garbage Collection-heap. Überschreiben von WndProc() statt. Suche nach "setvisiblecore", um herauszufinden, wie zu halten, das Fenster unsichtbar.
InformationsquelleAutor The Mask | 2012-01-18
Schreibe einen Kommentar