WinApi функция GetClassName в С#. "Attempted to read or write protected memory" - C#
Формулировка задачи:
Вот код, который я пытаюсь заставить работать. Здесь я пытаюсь по дескриптору окна узнать название его класса(в данном случае "notepad") :
Однако, во время выполнения строки
Программа выдаёт следующее: "Unhandled Exception: System.AccessViolationException: Attempted to read or write
protected memory. This is often an indication that other memory is corrupt."
Ни малейшего понятия, что с этим делать.
Гугление не помогло.
Помогите пожалуйста.
P.S: Перед запуском кода необходимо открыть notepad.exe
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Runtime.InteropServices;
- namespace GetClassNameCSharp
- {
- class Program
- {
- [DllImport("user32.dll", SetLastError = true)]
- static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
- [DllImport("user32.dll")]
- static extern int GetClassName(IntPtr hWnd, ref StringBuilder lpClassName, int nMaxCount);
- static void Main(string[] args)
- {
- IntPtr hwnd = FindWindow("notepad", null);
- StringBuilder lpClassName = new StringBuilder();
- GetClassName(hwnd, ref lpClassName, 100);
- Console.WriteLine(lpClassName.ToString());
- }
- }
- }
Листинг программы
- GetClassName(hwnd, ref lpClassName, 100);
Решение задачи: «WinApi функция GetClassName в С#. "Attempted to read or write protected memory"»
textual
Листинг программы
- StringBuilder lpClassName = new StringBuilder(100);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д