Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506

WinApi (PInvoke): GetWindowLongPtr выбрасывает 'Access is denied'

11.10.2012, 07:45. Показов 1938. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При попытке получения адреса оконной процедуры главного окна другого процесса через GetWindowLongPtr выдается ошибка "Access is denied":
C#
1
2
3
4
5
6
7
8
            var process = Process.GetProcessesByName("CFF Explorer");
            if (process.Length != 0)
            {
                var mainWndHandle = process[0].MainWindowHandle;
                var value = User32.GetWindowLongPtr(mainWndHandle, WindowFieldOffsets.WindowProc);
                if (value == IntPtr.Zero && Marshal.GetLastWin32Error() != 0) throw new Win32Exception();
                Console.WriteLine(value.ToString("X"));
            }
При использовании функции для получения других значений (Style, StyleEx, UserData) все работает нормально. В описании SetWindowLongPtr говорится, что проблемы могут быть из-за UIPI иерархии, но Integrity Level - 'High' у обоих процессов.
Интересует причина ошибки и другие возможности получения адреса оконной процедуры окна другого процесса.

Импорт функции:
GetWindowLongPtr
C#
1
2
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr GetWindowLongPtr(IntPtr window, WindowFieldOffsets offsetIndex);
ОС Win 7 x64
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.10.2012, 07:45
Ответы с готовыми решениями:

Access denied
Всем привет! У меня такая проблемка: При входе на локальный диск D или E выдает ошибку access denied. Измениила NTFS Permissions на...

Access is denied
C:\Windows\system32>takeown /f "*.*" /r /d y ERROR: Access is denied. Сталкивался кто нибудь?? нет возможности изменить владельца...

phpmyadmin access denied
Denwer+phpMyAdmin!? Что за ошибка, как ее исправить, не могу в phpmyadmin зайти (см. внутри)? Access denied Error MySQL...

6
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
11.10.2012, 19:42
GetWindowLongPtr работает локально. Используйте GetClassLongPtr
C#
1
GetClassLongPtr( hWnd, -24 );
1
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
11.10.2012, 23:35  [ТС]
Большое спасибо. Скажите еще, можно ли поменять что-либо в памяти чужого окна методами WinApi? С SetClassLongPtr те же проблемы, что и в первом посте, при попытке установить любое значение.
С одной стороны, логично как-то защищать окна одного процесса от вмешательства другого, с другой, некоторые программы вроде этой, как я понимаю, попросту меняют стиль окна.
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
12.10.2012, 00:30
Цитата Сообщение от Lasur Посмотреть сообщение
Скажите еще, можно ли поменять что-либо в памяти чужого окна методами WinApi?
Зависит от "что-либо".
Цитата Сообщение от Lasur Посмотреть сообщение
некоторые программы вроде этой, как я понимаю, попросту меняют стиль окна
Эта программа использует SetWindowPos для установки окна поверх всех.
Цитата Сообщение от Lasur Посмотреть сообщение
С SetClassLongPtr те же проблемы, что и в первом посте, при попытке установить любое значение.
http://msdn.microsoft.com/en-u... S.85).aspx
The following are the window styles. After the window has been created, these styles cannot be modified, except as noted.
Ниже представлены стили окна. После того как окно создано, стили не могут быть изменены, за исключением указанных.
Это относится как к обычным стилям так и к расширенным, GWLP_WNDPROC нельзя установить легальными способами из другого процесса.
1
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
12.10.2012, 10:34  [ТС]
Цитата Сообщение от SSTREGG Посмотреть сообщение
Зависит от "что-либо".
SetClassLongPtr выдает 'Access is denied' при попытке установить следующие значения (кроме WndProc):
GCLP_ HBRBACKGROUND = -10
GCLP_HCURSOR = -12
GCLP_HICON = = -14
GCLP_HICONSM = -34

То есть, установить не получилось ничего из того что пробовал.
0
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
12.10.2012, 13:20
может проблема в чужом адресном пространстве?
передаешь туда допустим хендл иконки, но ведь загружена она в память твоего процесса
в итоге для другой программы это указатель в чужую память, а там как раз Access is denied и ждет
0
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
12.10.2012, 14:35  [ТС]
m0nax, с этим делом пока разбираюсь плохо, но для тестирования использую системные курсоры (IDC_HELP например), так что проблем вроде быть не должно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.10.2012, 14:35
Помогаю со студенческими работами здесь

Access To Data Denied
dt = Datenumber(Year(Today)+100, Month(Today), Day(Today)) reg.RegistrationServer = "workflow/KSU" reg.CreateMailDb = False ...

Ошибка access denied
После ряда манипуляций со скриптом, написанным третьим лицом на PHP, а именно попыток установить captcha, мой ip адрес начал блокировать...

Access to the path'.' is denied
Здравствуйте много уважаемые товарищи! Изучаю программирование самостоятельно и у меня возникла такая проблема. Я напишу программу(wp 8.0...

ошибка Access denied
Хочу получить доступ к БД на удалённом сервере (хостинг 000webhost.com) с помощью C++. Hо при подключении выдаёт ошибку: Host '(Мой IP)'...

Ssh access denied
Купил VPS, раньше никогда не покупал, пришли на почту айпи, логин и пароль от ssh, захожу в PuTTY, ввожу айпи, пользователя, пароль, но как...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru