{"id":1715,"date":"2022-07-27T23:27:41","date_gmt":"2022-07-27T14:27:41","guid":{"rendered":"https:\/\/www.typea.info\/blog\/?p=1715"},"modified":"2022-07-27T23:27:41","modified_gmt":"2022-07-27T14:27:41","slug":"net6_user32_dll_setwindowshookex_error_126","status":"publish","type":"post","link":"https:\/\/www.typea.info\/blog\/index.php\/2022\/07\/27\/net6_user32_dll_setwindowshookex_error_126\/","title":{"rendered":".NET6 \u306e Windows Forms\u304b\u3089 user32.dll\u306e SetWindowsHookEx \u3092\u547c\u3073\u51fa\u3059\u304c ERROR_MOD_NOT_FOUND(126) \u30a8\u30e9\u30fc\u306b\u306a\u308b\u5bfe\u51e6"},"content":{"rendered":"<p>\u00a0<\/p>\n<p>\u52d5\u753b\u3092\u518d\u751f\u3059\u308b\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30a4\u30d0\u30fc\u3092\u4f5c\u6210\u4e2d\u3002<\/p>\n<p>Windows Forms \u306bElementHost(Windows Forms\u3067WPF\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u3067\u304d\u308b)\u3092\u7f6e\u3044\u3066\u3001WPF\u306eMediaElement\u3092\u914d\u7f6e\u3001\u52d5\u753b\u3092\u518d\u751f\u3055\u305b\u308b\u3002<\/p>\n<p>\u305d\u3053\u307e\u3067\u306f\u826f\u3044\u306e\u3060\u304c\u3001\u30ad\u30fc\u30dc\u30fc\u30c9\u3084\u30de\u30a6\u30b9\u30a4\u30d9\u30f3\u30c8\u3092\u62fe\u3063\u3066\u753b\u9762\u3092\u9589\u3058\u305f\u3044\u306e\u3060\u304c\u3001ElementHost\u4e0a\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u62fe\u3046\u306e\u304c\u975e\u5e38\u306b\u96e3\u5100(\u305d\u3082\u305d\u3082\u3067\u304d\u308b\u306e\u304b\u3082\u308f\u304b\u3089\u306a\u3044)\u306e\u3067\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u30d5\u30c3\u30af\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5916\u306e\u30de\u30a6\u30b9\u3001\u30ad\u30fc\u30dc\u30fc\u30c9\u30a4\u30d9\u30f3\u30c8\u3082\u62fe\u304a\u3046\u3068\u601d\u3046\u3002<\/p>\n<p>\u3044\u304f\u3064\u304b\u30b5\u30a4\u30c8\u3092\u691c\u7d22\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u30b5\u30a4\u30c8\u304c\u30b7\u30f3\u30d7\u30eb\u305d\u3046\u306a\u306e\u3067\u53c2\u8003\u306b\u3055\u305b\u3066\u3044\u305f\u3060\u3044\u305f\u3002<\/p>\n<p><a href=\"https:\/\/myugaru.hatenadiary.org\/entry\/20071130\/1196434749\">https:\/\/myugaru.hatenadiary.org\/entry\/20071130\/1196434749<\/a><\/p>\n<p>\u3053\u308c\u3067\u3001VisualStudio2022\u306e\u30c7\u30d0\u30c3\u30b0\u30e2\u30fc\u30c9\u3067\u306f\u671f\u5f85\u901a\u308a\u306e\u52d5\u304d\u3092\u3057\u3066\u3001\u3088\u3057\u3088\u3057\u3068\u601d\u3063\u305f\u306e\u3060\u304c\u3001\u767a\u884c\u3057\u305fexe\u3092\u53e9\u304f\u3068\u3001RROR_MOD_NOT_FOUND(126) \u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u3002<\/p>\n<p>int errorCode = Marshal.GetLastWin32Error();<\/p>\n<p>MessageBox.Show($&#8221;{errorCode}&#8221;);<\/p>\n<p>\u4e0a\u8a18\u306e\u90e8\u5206\u3002<\/p>\n<p>2\u65e5\u304f\u3089\u3044\u3001\u3042\u308c\u3084\u3053\u308c\u3084\u8a66\u3057\u3066\u30c0\u30e1\u3002<\/p>\n<p>\u306a\u3093\u3068\u304b\u3001\u4ee5\u4e0b\u306e\u30b5\u30a4\u30c8\u306b\u30d2\u30f3\u30c8\u3092\u898b\u3064\u3051\u305f\u3002<\/p>\n<p><a href=\"https:\/\/www.jike.in\/qa\/?qa=845051\/\">https:\/\/www.jike.in\/qa\/?qa=845051\/<\/a><\/p>\n<p>\u4fee\u6b63\u70b9\u306f\u3001\u4ee5\u4e0b\u30bd\u30fc\u30b9\u306e\u300c.NET 4\u4ee5\u964d\u3067\u306f\u3082\u3046\u52d5\u4f5c\u3057\u307e\u305b\u3093\u3002\u8868\u793a\u3055\u308c\u308b\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u306f\u3001126 = &#8220;\u6307\u5b9a\u3055\u308c\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u300d<\/p>\n<p>\u76f4\u4e0b\u3067\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3057\u305f\u3001Marshal.GetHINSTANCE \u3092 LoadLibrary \u306b\u5909\u66f4\u3002<\/p>\n<p>\u3053\u308c\u3067\u671f\u5f85\u901a\u308a\u306b\u52d5\u3044\u305f\u3002<\/p>\n<p>\u00a0<\/p>\n<pre class=\"prettyprint\">using System;\nusing System.Windows.Forms;\nusing System.Runtime.InteropServices;\nusing System.ComponentModel;\n\nnamespace DsScreenSaver\n{\n    public partial class ScreenSaverMainForm : Form\n    {\n        private System.Windows.Forms.Integration.ElementHost host;\n\n        HookHandler keyboardHookDelegate;\n        IntPtr keyboardHook;\n\n        HookHandler mouseHookDelegate;\n        IntPtr mouseHook;\n\n        public ScreenSaverMainForm()\n        {\n            WH keyboardHookType = WH.KEYBOARD_LL;\n            keyboardHookDelegate = new HookHandler(OnKeyboardHook);\n\n            \/\/ .NET 4\u4ee5\u964d\u3067\u306f\u3082\u3046\u52d5\u4f5c\u3057\u307e\u305b\u3093\u3002\u8868\u793a\u3055\u308c\u308b\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u306f\u3001126 = \"\u6307\u5b9a\u3055\u308c\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\n            \/\/IntPtr hKeyboardMod = Marshal.GetHINSTANCE(\n            \/\/    System.Reflection.Assembly.\n            \/\/    GetExecutingAssembly().GetModules()[0]);\n\n            var hKeyboardMod = NativeMethods.LoadLibrary(\"user32.dll\");\n            keyboardHook = SetWindowsHookEx(keyboardHookType, keyboardHookDelegate, hKeyboardMod, 0);\n            if (keyboardHook == IntPtr.Zero)\n            {\n                int errorCode = Marshal.GetLastWin32Error();\n                MessageBox.Show($\"{errorCode}\");\n                throw new Win32Exception(errorCode);\n            }\n\n            WH mouseHookType = WH.MOUSE_LL;\n            mouseHookDelegate = new HookHandler(OnMouseHook);\n            \/\/IntPtr hMouseMod = Marshal.GetHINSTANCE(\n            \/\/    System.Reflection.Assembly.\n            \/\/    GetExecutingAssembly().GetModules()[0]);\n            var hMouseMod = NativeMethods.LoadLibrary(\"user32.dll\");\n            mouseHook = SetWindowsHookEx(mouseHookType, mouseHookDelegate, hMouseMod, 0);\n            if (mouseHook == IntPtr.Zero)\n            {\n                int errorCode = Marshal.GetLastWin32Error();\n                throw new Win32Exception(errorCode);\n            }\n\n            InitializeComponent();\n        }\n\n        private void ScreenSaverMainForm_Loaded(object sender, EventArgs e)\n        {\n            host = new ElementHost();\n\n            \/\/host.SetBounds(20, 10, 600, 300);\n            System.Windows.Controls.MediaElement player = new System.Windows.Controls.MediaElement();\n            host.Dock = DockStyle.Fill;\n            host.Child = player;\n            this.Controls.Add(host);\n            \n\n            \/\/\u81ea\u5206\u81ea\u8eab\u306e\u30d5\u30a9\u30fc\u30e0\u3092\u6700\u5927\u5316\n            this.FormBorderStyle = FormBorderStyle.None;\n            this.WindowState = FormWindowState.Maximized;\n            this.BackColor = Color.Black;\n\n            player.Source = new System.Uri(@\"C:\\Users\\piroto\\Desktop\\movies\\practice.mp4\");\n            player.UnloadedBehavior = System.Windows.Controls.MediaState.Manual;\n            player.Play();\n        }\n\n        \/\/\n        \/\/ DELEGATE for Hook\n        \/\/\n        public delegate int HookHandler(\n            int code, WM message, IntPtr state);\n\n        \/\/\n        \/\/ SetWindowsHookEx\n        \/\/\n        [DllImport(\"user32.dll\", SetLastError = true)]\n        public static extern IntPtr SetWindowsHookEx(\n            WH hookType, HookHandler hookDelegate, IntPtr module, uint threadId);\n\n        \/\/\n        \/\/ HookType\n        \/\/\n        public enum WH\n        {\n            KEYBOARD_LL = 13,\n            MOUSE_LL = 14,\n        }\n\n        \/\/\n        \/\/ UnhookWindowsHookEx\n        \/\/\n        [DllImport(\"user32.dll\", SetLastError = true)]\n        public static extern bool UnhookWindowsHookEx(IntPtr hook);\n\n        \/\/\n        \/\/ CallNextHookEx\n        \/\/\n        [DllImport(\"user32.dll\")]\n        public static extern int CallNextHookEx(\n            IntPtr hook, int code, WM message, IntPtr state);\n\n        \/\/\n        \/\/ Win32 Message\n        \/\/\n        public enum WM\n        {\n            KEYDOWN = 0x0100,\n            KEYUP = 0x0101,\n            SYSKEYDOWN = 0x0104,\n            SYSKEYUP = 0x0105,\n            MOUSEMOVE = 0x0200,\n            LBUTTONDOWN = 0x0201,\n            LBUTTONUP = 0x0202,\n            LBUTTONDBLCLK = 0x0203,\n            RBUTTONDOWN = 0x0204,\n            RBUTTONUP = 0x0205,\n            RBUTTONDBLCLK = 0x0206,\n            MBUTTONDOWN = 0x0207,\n            MBUTTONUP = 0x0208,\n            MBUTTONDBLCLK = 0x0209,\n            MOUSEWHEEL = 0x020A,\n            XBUTTONDOWN = 0x020B,\n            XBUTTONUP = 0x020C,\n            XBUTTONDBLCLK = 0x020D,\n            MOUSEHWHEEL = 0x020E,\n        }\n        protected override void OnClosing(CancelEventArgs e)\n        {\n            base.OnClosing(e);\n            if (keyboardHook != IntPtr.Zero)\n            {\n                UnhookWindowsHookEx(keyboardHook);\n            }\n            if (mouseHook != IntPtr.Zero)\n            {\n                UnhookWindowsHookEx(mouseHook);\n            }\n        }\n\n        int OnKeyboardHook(int code, WM message, IntPtr state)\n        {\n\n            this.Close();\n             \n            return CallNextHookEx(keyboardHook, code, message, state);\n        }\n\n        int OnMouseHook(int code, WM message, IntPtr state)\n        {\n\n            this.Close();\n\n            return CallNextHookEx(mouseHook, code, message, state);\n        }\n\n        static internal class NativeMethods\n        {\n\n            [DllImport(\"kernel32.dll\")]\n            public static extern IntPtr LoadLibrary(string dllToLoad);\n        }\n    }\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u00a0 \u52d5\u753b\u3092\u518d\u751f\u3059\u308b\u30b9\u30af\u30ea\u30fc\u30f3\u30bb\u30a4\u30d0\u30fc\u3092\u4f5c\u6210\u4e2d\u3002 Windows Forms \u306bElementHost(Windows Forms\u3067WPF\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u3067\u304d\u308b)\u3092\u7f6e\u3044\u3066\u3001WPF\u306eMediaElement\u3092\u914d\u7f6e\u3001 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"sns_share_botton_hide":"","vkExUnit_sns_title":"","_vk_print_noindex":"","sitemap_hide":"","_veu_custom_css":"","veu_display_promotion_alert":"","vkexunit_cta_each_option":"","footnotes":""},"categories":[77,12,13],"tags":[200,201],"class_list":["post-1715","post","type-post","status-publish","format-standard","hentry","category-c","category-visualstudio","category-windows","tag-c","tag-win32api"],"veu_head_title_object":{"title":"","add_site_title":""},"_links":{"self":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=1715"}],"version-history":[{"count":1,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1715\/revisions"}],"predecessor-version":[{"id":1716,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1715\/revisions\/1716"}],"wp:attachment":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=1715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=1715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=1715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}