Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
 Аватар для RoastedBard
1 / 1 / 0
Регистрация: 06.09.2012
Сообщений: 10

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

15.03.2013, 21:46. Показов 5158. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код, который я пытаюсь заставить работать. Здесь я пытаюсь по дескриптору окна узнать название его класса(в данном случае "notepad") :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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());
        }
    }
}
Однако, во время выполнения строки
C#
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"  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.03.2013, 21:46
Ответы с готовыми решениями:

Ошибка Additional information: Attempted to read or write protected memory при вызове OpenFileDialog
При 6 визове OpenFileDialog. То что видает. A first chance exception of type 'System.AccessViolationException' occurred in...

DLLImport C++ библиотеки и ошибка "Attempted to read or write protected memory"
Нужно прикрутить метод из С++ библиотеки myDll.dll. Выглядит его прототип так int MyMethod(unsigned char* materials, ...

Attempted to read or write protected memory while destructor executed
Касается это строки 7 в коде реализации. Прототип. class Queue_list{ struct unit{ //Tasks key; int key; unit* next; ...

4
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
15.03.2013, 21:49
C#
1
StringBuilder lpClassName = new StringBuilder(100);
1
 Аватар для RoastedBard
1 / 1 / 0
Регистрация: 06.09.2012
Сообщений: 10
15.03.2013, 21:58  [ТС]
Спасибо за ответ.
К сожалению, ничего не изменилось(
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
15.03.2013, 23:23
Значит уберите ref из сигнатуры метода.
1
 Аватар для RoastedBard
1 / 1 / 0
Регистрация: 06.09.2012
Сообщений: 10
15.03.2013, 23:35  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Значит уберите ref из сигнатуры метода.
Да! Спасибо, помогло)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2013, 23:35
Помогаю со студенческими работами здесь

Attempted To Read Or Write Protected Memory при действиях с Notesricht
Здравствуйте! Пишу на C#, хочу добавить NotesRichTextItem в документ. Следующий код: // это работает нормально ...

При обращении к функции из dll ошибка attempted to read or write protected memory
После создание контекста опенгл, пробую использовать функции из расширения glew. И вот при обращении и C# в длл на c++/cli появляеться...

1080 ti маленькая скорость "Memory read/write" AIDA64 GPGPU Benchmark
Здравствуйте, добрые люди!) Давно не был на этом велеколепном сайте, который всегда мне помогал решать проблемы). И вот я столкнулся с...

The memory could not be "read" \ "write"; Read\WriteProcessMemory
Добрый день. Вечная проблема при попытке прочитать \ записать в память, при помощи Read\WriteProcessMemory - это ошибки The memory could...

Modification of a read-only value attempted
Добрый день всем. Столкнулся вот с такой проблемой Вот такой код #!/usr/bin/perl -w print &doit(""); sub doit...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru