Что именно это API и что он делает? - PullRequest
3 голосов
/ 23 июля 2011

Я знаю, ты будешь ненавидеть меня за такой вопрос. Но может ли кто-нибудь сказать мне, что делает следующий код?

Я имею в виду, что загружены некоторые библиотеки, я понял. плюс есть некоторые методы, но я не понимаю.

F.e:.

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]

Вот код:

private static class API 
    {

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern IntPtr SetWindowsHookEx(
            int idHook,
            HookDel lpfn,
            IntPtr hMod,
            uint dwThreadId);

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool UnhookWindowsHookEx(IntPtr hhk);

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern IntPtr CallNextHookEx(
            IntPtr hhk,
            int nCode,
            IntPtr wParam,
            IntPtr lParam);

        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern IntPtr GetModuleHandle(
            string lpModuleName);
    }

Вам не нужно объяснять мне строку за строкой. По крайней мере, дайте мне ссылку, где я могу это прочитать, пожалуйста.

Спасибо заранее!

Ответы [ 4 ]

3 голосов
/ 23 июля 2011

Этот код использует P / Invoke , чтобы позволить коду C # вызывать несколько функций Win32 API, связанных с Windows Hooks .

Опубликованный код определяет только методы;он их не вызывает, поэтому сам по себе ничего не делает.Это просто позволяет вам использовать методы из других частей вашего кода.

2 голосов
/ 23 июля 2011

Вот более старая MSDN статья, объясняющая P / Invoke и что происходит.Надеюсь, это поможет вам.

То, что делает код, позволяет вашему управляемому коду C # вызывать неуправляемые функции Win32 API.

Вот также учебное пособие по MSDN, которое поможет вамчерез процесс P / Invoke для создания кода, подобного вашему вопросу.

1 голос
/ 23 июля 2011

Взгляните на это .Ваша программа где-то устанавливает хук в цепочку хуков Windows, чтобы отслеживать некоторые события.

Атрибут dllimport сам по себе позволяет программе вызывать функции Win32 API, как упоминалось в предыдущем ответе.

1 голос
/ 23 июля 2011

DllImport используется для вызова неуправляемого кода / API в .Net / Управляемый код.Весь код, который вы опубликовали, пытается работать с window объектом Win32 API.

Ссылки:

DLLImport

Win32 API

Win32 API для сопоставления API .Net

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...