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

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

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

Author24 — интернет-сервис помощи студентам
Вот код, который я пытаюсь заставить работать. Здесь я пытаюсь по дескриптору окна узнать название его класса(в данном случае "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...

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

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

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

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

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

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

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

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

Добавить 2 класса Read и Display, без Console.(Write/Read)Line
Нужно добавить class read и class display. ОБРАТИТЕ ВНИМАНИЕ мне не надо через Console.Readline и...

Какой технический смысл access mode(read only/read write) isolation level?
Какой технический смысл access mode(read only/read write) isolation level? Тот, кто делает...

Ошибка attempted update during read-only transaction
Не получается установить возможность обновления таблицы в IBConcole. После установки флажка...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
В чем отличие между INNER JOIN и OUTER JOIN
bytestream 22.01.2025
В современных базах данных информация часто распределена между множеством взаимосвязанных таблиц, что делает операции объединения JOIN неотъемлемой частью работы с SQL. Эти операции позволяют. . .
Как сделать первую букву заглавной в JavaScript
bytestream 22.01.2025
JavaScript предоставляет разработчикам множество инструментов для эффективной работы с текстовыми данными. Одной из часто встречающихся задач при обработке строк является преобразование первой буквы. . .
Что такое Big O нотация и алгоритмическая сложность
bytestream 22.01.2025
Введение в алгоритмическую сложность В мире разработки программного обеспечения эффективность алгоритмов играет crucial роль в создании качественных приложений. Алгоритмическая сложность. . .
Как решать конфликты слияния (merge) в Git
bytestream 22.01.2025
Конфликты слияния в системе контроля версий Git возникают в ситуациях, когда две или более ветки разработки содержат несовместимые изменения в одних и тех же участках кода. Эти конфликты представляют. . .
Как использовать регулярные выражения
bytestream 22.01.2025
Регулярные выражения представляют собой мощный инструмент для работы с текстовыми данными, который позволяет осуществлять поиск, проверку и манипуляцию строками на основе определенных шаблонов. Этот. . .
Как выйти из Vim
bytestream 22.01.2025
Vim (Vi IMproved) представляет собой один из самых влиятельных текстовых редакторов в истории компьютерной индустрии, эволюционировавший из своего предшественника Vi, созданного Биллом Джоем в 1976. . .
NoSQL базы данных: что это такое и какие существуют
bytestream 22.01.2025
В современную эпоху цифровой трансформации объемы данных растут экспоненциально, создавая новые вызовы для традиционных систем управления базами данных. NoSQL (Not Only SQL) представляет собой. . .
Обновление исследования от команды MCM (январь 2025 г.)
Programma_Boinc 22.01.2025
Обновление исследования от команды MCM (январь 2025 г. ) Мы продолжаем изучать молекулярные сигнатуры, связанные с раком легких, с текущим фокусом на GCM1, факторе транскрипции, участвующем в. . .
Как работать с Kafka в Go (Golang)
bytestream 22.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки событий и интеграции микросервисов. Эта система, изначально. . .
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru