Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 78

Не правильный адрес на структуру

29.12.2022, 12:56. Показов 2607. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день товарищи знатоки, столкнулся с такой проблемой, задача моей программы состоит в том, чтобы получить адрес на структуру, причём такой адрес чтобы можно было подключиться с другого приложения и в основной программе можно было изменить саму переменную. при запуске программы она мне выдаёт значение переменной p.mem = 846546216, а после мне выдаёт её адрес, но если я вбиваю этот адрес (переведённый с 10 в 16 есесно) допустим в чит энджин, то чит энджин показывает значение никак не 846546216, а какие-то левые динамические данные. Если попытаться найти вручную это значение (846546216), то он находит, и даже изменяет, моя программа это моментально показывает, но адрес отличается на
2FD070 меньше. Что делать, в чём я ошибся,
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
26
public struct Memmory
    {
        public int mem;
        public float mem1;
        public float mem11;
    }
 
 
static public void Structura()
        {
            
            Memmory p = new Memmory();
 
            unsafe
            {
                p.mem = 846546216;
                ulong ptr = (ulong)&p;
                MainWindow.Changes.Content = ptr;
                
            }
            while (true)
            {
                MainWindow.Settings.Content = p.mem;
                await Task.Delay(100);
            }
        }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.12.2022, 12:56
Ответы с готовыми решениями:

Правильный айпи-адрес
Здравствуйте! Помогите, пожалуйста, с задачей, заваливается на некоторых тестах. Для того чтобы выходить в Интернет, каждому...

Считать из пары правильный адрес
Есть Dictionary<string,string> D;, в котором значения - адреса файлов вида "C:\f.dat\". При чтении строки значения из пары var...

Сделать правильный адрес для страниц в постраничной навигации
Здравствуйте! Столкнулся с такой проблемой, что не могу вывести правильные ссылки для страниц. Суть в том, что у меня есть страница с...

30
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 78
30.12.2022, 19:15  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от kolorotur Посмотреть сообщение
Рабочий код не интересен, т.к. он уже рабочий
Она работает только на консольном, а в wpf он работать не хочет. мне нужно чтобы он и на wpf сработал
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
30.12.2022, 20:13
Цитата Сообщение от DimKon Посмотреть сообщение
а в wpf он работать не хочет.
Как конкретно вы вызываете это метод?
Так?
C#
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    public partial class App
    {
        public App()
        {
            testic();
        }
 
        static public void testic()
        {
            struktura str = new struktura();
            str.kee = 1;
            unsafe 
            {
                ulong ptr = (ulong)&str;
                Console.WriteLine(ptr.ToString("X"));
 
            }
 
            while (true)
            {
                Console.WriteLine(str.kee);
                Console.WriteLine(str.kee1);
                Console.WriteLine(str.kee11);
                Thread.Sleep(1000);
            }
        }
    }
 
    public struct struktura
    {
        public int kee;
        public float kee1;
        public float kee11;
    }
Если нет, то дайте ПОЛНЫЙ код (XAML с Шарпа) относящийся к вопросу.
Сразу пишу я не компетентен в этом вопросу.
Но как написал kolorotur, дело не в коде метода, а в каком окружении он вызывается.
Поэтому могут иметь значения нюансы напрямую не относящиеся к коду метода.

Лучше всего если вы сделаете в Решении два проекта Консольный (рабочий) и WPF (нерабочий).
Зальёте это решение на GitHub и дадите ссылку.
Это позволит максимально быстро найти решение, если это возможно.

Со своей стороны, постараюсь дать вам пример реализации на файлах памяти.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
30.12.2022, 23:30
DimKon, пример реализации на MemoryMappedFile в архиве: TransferBetweenApplications.7z
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
31.12.2022, 15:16
Цитата Сообщение от DimKon Посмотреть сообщение
Она работает только на консольном, а в wpf он работать не хочет. мне нужно чтобы он и на wpf сработал
Если взять ваш код выше и использовать его в WPF, то все прекрасно работает.
Выше вы писали, что этот консольный код был как-то "адаптирован" к WPF в результате чего работать перестало — значит эти адаптации что-то сломали, но что это за адаптации нам неведомо, т.к. кода нет.
1
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 78
02.01.2023, 18:22  [ТС]
kolorotur, Я не знаю, а можно его вам отдельно как то показать, не очень хочется огромным проектом раскидываться...
Ну или я новый проект создам, адаптирую и вам скину...
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
02.01.2023, 19:58
DimKon, Выложите новый проект с минимальным кодом, демонстрирующим проблему.
0
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 78
02.01.2023, 22:46  [ТС]
kolorotur,
Вложения
Тип файла: zip Programm.zip (59.4 Кб, 5 просмотров)
0
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 78
02.01.2023, 22:54  [ТС]
kolorotur, Я сейчас проверил свою программу, и она заработала, но не на долго, спустя минуту значение в CE изменилось, а значит и адрес изменился. На скрине подтверждение
Миниатюры
Не правильный адрес на структуру  
0
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 78
02.01.2023, 23:03  [ТС]
Но я до сих пор не могу понять, почему тут хоть как-то сработало, а на основном приложении не стартует, код просто в тупую перекопировал в новый проект, поменял просто лэйблы на правильные имена и всё заработало, не до конца, но что-то есть, теперь осталось разобраться почему он потом изменяется
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.01.2023, 20:22
Лучший ответ Сообщение было отмечено DimKon как решение

Решение

Цитата Сообщение от DimKon Посмотреть сообщение
она заработала, но не на долго, спустя минуту значение в CE изменилось, а значит и адрес изменился
Ну вполне ожидаемо — у вас же асинхронный метод, значит переменная будет жить в куче, а следовательно сборщик ее будет перемещать в памяти, т.к. экземпляр не закреплен.
В консольном приложении вместо await Task.Delay был Thread.Sleep, потому структура скорее всего жила в стеке, а не в куче, а память стека не перемещается.

Цитата Сообщение от DimKon Посмотреть сообщение
я до сих пор не могу понять, почему тут хоть как-то сработало, а на основном приложении не стартует
В основном приложении больше всякого разного происходит, следовательно сборка мусора выполняется чаще и в результате переменная быстрее "убегает" из изначального места в памяти.

Цитата Сообщение от DimKon Посмотреть сообщение
это используется для коммуникации через память для кернел и шарпа
Можно, конечно, попробовать извращаться с закреплением через всякие GCHandle или fixed pattern (в новых версиях языка), но раз у вас постоянно ведется работа с неуправляемой памятью, то, я думаю, лучше сразу выделить место под структуру в неуправляемой памяти и там его держать (туда сборщик не лазит — потому она и неуправляемая).
А как структуру эту память интерпретировать только тогда, когда оттуда нужно достать или поменять там значения.

Как-то так:
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
26
27
28
29
30
31
static public async void testic()
{
    IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf<struktura>());
 
    unsafe
    {
        var str = (struktura*)ptr;
        str->kee = 12345;
    }
 
    while (true)
    {
        MainWindow.Adress.Content = $"Adress (10): {ptr} Adress (16): {(ulong)ptr:X2}";
        unsafe
        {
            var str = (struktura*)ptr;
            Value.Content = str->kee.ToString();
        }
        await Task.Delay(100);
    }
 
    Marshal.FreeHGlobal(ptr);
}
 
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct struktura
{
    public int kee;
    public float kee1;
    public float kee11;
}
В неуправляемый код передавайте ptr.
2
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 78
03.01.2023, 21:53  [ТС]
kolorotur, уххх, чёт жёстко, но я сейчас попробую перекинуть в основное приложение, посмотрю что это и с чем его едят. А так, спасибо огромное за помощь

Добавлено через 21 минуту
kolorotur, Последний код что вы скинули сработал и на основной программе, спасибо вам огромное, говоря честно надо будет разобраться что вы написали, и понять как оно работает. Спасибо вам ещё раз!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.01.2023, 21:53

Объявить структуру «Адрес»
Объявить структуру «Адрес» с такими полями: название населенного пункта и название улицы, реализованные в виде символьных строк; номер...

Объявить структуру «Адрес»
Объявить структуру «Адрес» с такими полями: название населенного пункта и название улицы, реализованные в виде символьных строк; номер...

Вычислить адрес верхушки стека, адрес следующей команды, адрес переменной, адрес которой содержится в BX
Помогите решить следующие задачи: 1.Вычислить адрес верхушки стэка. 2.Вычислить адрес следующей выполняемой программы. 3. Вычислить...

Как захешировать структуру, содержащую ip-адрес и порт?
Добрый вечер всем. Есть некая структура в упрошенном виде: struct session { struct sockaddr local; struct sockaddr peer; }; ...

Как записать в переменную данные из структуры, а не адрес на структуру?
Подскажите пожалуйста, есть ли способ записать в переменную *char именно сами данные, а не адрес на структуру? Или где я ошибаюсь? ...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru