WinApi функция GetClassName в С#. "Attempted to read or write protected memory" - C#

Узнай цену своей работы

Формулировка задачи:

Вот код, который я пытаюсь заставить работать. Здесь я пытаюсь по дескриптору окна узнать название его класса(в данном случае "notepad") :
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Runtime.InteropServices;
  6. namespace GetClassNameCSharp
  7. {
  8. class Program
  9. {
  10. [DllImport("user32.dll", SetLastError = true)]
  11. static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
  12. [DllImport("user32.dll")]
  13. static extern int GetClassName(IntPtr hWnd, ref StringBuilder lpClassName, int nMaxCount);
  14. static void Main(string[] args)
  15. {
  16. IntPtr hwnd = FindWindow("notepad", null);
  17. StringBuilder lpClassName = new StringBuilder();
  18. GetClassName(hwnd, ref lpClassName, 100);
  19. Console.WriteLine(lpClassName.ToString());
  20. }
  21. }
  22. }
Однако, во время выполнения строки
Листинг программы
  1. GetClassName(hwnd, ref lpClassName, 100);
Программа выдаёт следующее: "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

Решение задачи: «WinApi функция GetClassName в С#. "Attempted to read or write protected memory"»

textual
Листинг программы
  1. StringBuilder lpClassName = new StringBuilder(100);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы