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

Подключение неуправляемого кода

15.10.2018, 19:56. Показов 5537. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код на С++

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct auth_answer{
   int TType;             /**< [in] тип транзакции. см ::OpetationTypes */
   unsigned long Amount;  /**< [in] сумма в копейках                    */
   char RCode[3];         /**< [out] код результата авторизации         */
   char AMessage[16];     /**< [out] текст результата авторизации       */
   int  CType;            /**< [in,out] тип карты                       */
   char* Check;           /**< [out] образ чека, должен освобождаться GlobalFree в вызывающей программе */
};
 
struct auth_answer5{
  struct auth_answer auth_answ;   /**< [in]  Основные параметры операции. См. ::auth_answer */
  char   RRN[MAX_REFNUM];         /**< [in,out] Номер ссылки операции, присвоенный хостом. Используется
                                                для операций возврат и множественной авторизации.
                                                Содержит уникальный 12-значный ссылочный номер.
                                                При предавторизации это поле является выходным
                                                (его заполняет библиотека pilot_nt.dll), а при
                                                завершении расчета – входным (значение должно 
                                                быть заполнено вызывающей программой; оно должно
                                                совпадать со значением, возвращенным при предавторизации).*/
  char   AuthCode[MAX_AUTHCODE]; /**< [out] Код авторизации. 7 байт.                       */
};
 
PILOT_NT_API int card_authorize(char track2, struct auth_answer auth_answer);
Сделал на C# аналог не без помощи форумчан

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public unsafe struct auth_answer
        {
            public OpetationTypes TType { get; set; }
            public uint  Amount { get; set; }
            public fixed byte RCode[3];
            public fixed byte AMessage[16];
            public int CType { get; set; }
            public IntPtr check;            
        }
 
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public unsafe struct auth_answer5
        {
            public auth_answer auth_answ;
            public fixed byte RRN[MAX_REFNUM];
            public fixed byte AuthCode[MAX_AUTHCODE];
         }
 
         [DllImport(".\\WIN\\pilot_nt.DLL", EntryPoint = "_card_authorize5", CallingConvention = CallingConvention.StdCall)]
        private static extern int card_authorize5(string truck,ref auth_answer5 InStrict);
Все работает, но как вытащить check?
C#
1
chequeSTR = Marshal.PtrToStringAnsi(Auth_answer.auth_answ.check);
дает пустую строку
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2018, 19:56
Ответы с готовыми решениями:

Запуск неуправляемого кода внутри кода c#
часто требуется при выполнении программы запускать исполняемые файлы (exe) с ключами. Для этого использую пространство имен using...

Быстродействие управляемого и неуправляемого кода
начал изучать небезопасный код,написал прогу в ней 2 функции одна с управляемым кодом вторая нет,так вот сравнил время выполнения этих...

Вызов неуправляемого кода из длл
Замучался с маршилингом! Есть функция в длл: RetCode = HMM_Path_Init( char *path ); RetCode – код возврата ( тип DWORD ) Как...

25
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
16.10.2018, 09:48
char* в C# как string должен быть, а не IntPtr как я помню, попробуйте в такой вариации, может потому и нету данных. Да и это единственное чего нету? остальные данные приходят?

Добавлено через 3 минуты
Есть вот такая статья у майков: https://docs.microsoft.com/en-... orm-invoke
описывает какой тип какому соответствует, думаю будет полезна.
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
16.10.2018, 10:42  [ТС]
Цитата Сообщение от SeIZVeIZ Посмотреть сообщение
char* в C# как string должен быть, а не IntPtr как я помню, попробуйте в такой вариации, может потому и нету данных. Да и это единственное чего нету? остальные данные приходят?

Добавлено через 3 минуты
Есть вот такая статья у майков: https://docs.microsoft.com/en-... orm-invoke
описывает какой тип какому соответствует, думаю будет полезна.
Это единственная проблема осталась. Есть еще более глобальная, но пока на этом остановлюсь.
Сейчас проверю.

Добавлено через 3 минуты
Цитата Сообщение от VicNic Посмотреть сообщение
Это единственная проблема осталась. Есть еще более глобальная, но пока на этом остановлюсь.
Сейчас проверю.
Вообще вылетает.

Добавлено через 17 секунд
Цитата Сообщение от SeIZVeIZ Посмотреть сообщение
char* в C# как string должен быть, а не IntPtr как я помню, попробуйте в такой вариации, может потому и нету данных. Да и это единственное чего нету? остальные данные приходят?

Добавлено через 3 минуты
Есть вот такая статья у майков: https://docs.microsoft.com/en-... orm-invoke
описывает какой тип какому соответствует, думаю будет полезна.
Вообще вылетает
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
16.10.2018, 11:10
код как сделали, и вылетает с какой ошибкой то + убери из своих структур unsafe
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
16.10.2018, 12:10  [ТС]
Цитата Сообщение от SeIZVeIZ Посмотреть сообщение
код как сделали, и вылетает с какой ошибкой то + убери из своих структур unsafe
Если убрать unsafe. то как объявить public fixed byte RCode[3]?

C++
1
char RCode[3];

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public unsafe struct auth_answer
        {
            public OpetationTypes TType { get; set; }
            public uint  Amount { get; set; }
            public fixed byte RCode[3];
            public fixed byte AMessage[16];
            public int CType { get; set; }
            public string check;            
        }
 
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public unsafe struct auth_answer5
        {
            public auth_answer auth_answ;
            public fixed byte RRN[MAX_REFNUM];
            public fixed byte AuthCode[MAX_AUTHCODE];
         }
а сам вызов

C#
1
   chequeSTR = Auth_answer.auth_answ.check
Добавлено через 13 минут
Проблема в общем следующая:
Есть рабочая программа. К ней нужно было подцепить Сберовские терминалы. Была библиотека, в которой уже была реализована работа с аналогичными терминалами от других поставщиков.
Подцепил все быстро под COM. Но после первой успешной транзакции в программе, программа вылетала System.ArithmeticException при клике на любом контроле.
Попробовал без COM напрямую через pilot_nt.dll. (пока только чек не удалось получить) ТО же самое. После первой успешной, любой клик на контроле и программа вылетает.

Печаль в том, что тестовое приложение с этой же библиотекой работает без вылетов в обоих реализациях.
Куда смотреть? МОЗГ взрывается. неделя бессоных ночей!
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
16.10.2018, 12:16
VicNic, у Вас обычный char в C# он такой же char, только массив иначе объявляется:
C#
1
char[] RCode
Добавлено через 1 минуту
p.s. я же дал Вам ссылку по мапингу типов, там можно это всё легко глянуть было

Добавлено через 1 минуту
по поводу Вашей проблемы тут уже надо смотреть целиком Ваш код, и код "любого контрола" что они делают, и смотреть что именно вызывает такую ошибку.
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
16.10.2018, 12:33  [ТС]
Цитата Сообщение от SeIZVeIZ Посмотреть сообщение
VicNic, у Вас обычный char в C# он такой же char, только массив иначе объявляется:
C#
1
char[] RCode
Добавлено через 1 минуту
p.s. я же дал Вам ссылку по мапингу типов, там можно это всё легко глянуть было

Добавлено через 1 минуту
по поводу Вашей проблемы тут уже надо смотреть целиком Ваш код, и код "любого контрола" что они делают, и смотреть что именно вызывает такую ошибку.
Не думаю, что нужно весь код лопатить. Вызов не изменился. Расширился функционал одной из сборок. Если в ней переключиться на работу с уже ранее подключенными терминалами - все ок. Как только натравливаешь н аСБер - ситуацию описал. Предполагаю, что что то все-таки в Сбере.
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
16.10.2018, 12:41
Цитата Сообщение от VicNic Посмотреть сообщение
Не думаю, что нужно весь код лопатить. Вызов не изменился. Расширился функционал одной из сборок. Если в ней переключиться на работу с уже ранее подключенными терминалами - все ок. Как только натравливаешь н аСБер - ситуацию описал. Предполагаю, что что то все-таки в Сбере.
я Вам даю ответы в рамках Вашего вопроса, где и как используется я уж не в курсе. смотрите кто Вам даёт эксепшен и как вызывается данный метод, в данном варианте отладчик Ваш самый лучший друг будет
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
16.10.2018, 12:47
А почему у вас
C++
1
char track2
а в C#
C#
1
string truck
А еще возможно нужно задать структурам Pack.

Цитата Сообщение от VicNic Посмотреть сообщение
Попробовал без COM напрямую через pilot_nt.dll. (пока только чек не удалось получить) ТО же самое. После первой успешной, любой клик на контроле и программа вылетает.
Кстати на github видел обертку над pilot_nt.dll на Delphi, так там они либу каждый раз загружают и после вызова выгружают (LoadLibrary/FreeLibrary).
0
1 / 2 / 0
Регистрация: 02.06.2018
Сообщений: 33
17.10.2018, 11:29
Зачем вообще переводить C++ на C# ? Существует канал доступа к программе на C++ в неуправляемой среде из программы на C#. Пишите основу программы на C# для управляемой среды и выполняйте код на C++ в неуправляемой среде. Все делается через этот канал доступа. Также приведен пример как все это делать, конкретно для подсчета суммы элементов матрицы.
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
17.10.2018, 12:31  [ТС]
Цитата Сообщение от B_S_V Посмотреть сообщение
Зачем вообще переводить C++ на C# ? Существует канал доступа к программе на C++ в неуправляемой среде из программы на C#. Пишите основу программы на C# для управляемой среды и выполняйте код на C++ в неуправляемой среде. Все делается через этот канал доступа. Также приведен пример как все это делать, конкретно для подсчета суммы элементов матрицы.
Первоначально вставил свой вопрос в темах для начинающих.
Кинули на эту задачу. Приходится "на лету" язык изучать. Поэтому прошу помощи чуть более поконкретнее.
На С++ это пример из документации для интеграторов.

Добавлено через 34 минуты
Сейчас все откатил на работу с COM.
Все чеки получаю. Тестовая форма работает идеально. После вызова из основного приложения, первая транзакция проходит успешно. Программа не вылетает. Но стоит на этой форме кликнуть на любой control - вылетает с System.ArithmeticException
Так как переключение на работу с другим терминалом не вызвает подобных вылетов, подозреваю что проблема в самом подключении и вызове через COM.
Подключал просто через добавление Ссылки.

Это подключение


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
      
    public static partial class SberCreditCardsService
    {
 
 
public static bool Sale(decimal amount)
        {
            try
            {
                Server wshShell2 = new Server();
                wshShell2.SParam("Amount", decimal.ToInt32(amount * 100));
                lastResponce = wshShell2.NFun((int)FunctionTypes.OP_PURCHASE);
                GetErroMSG(lastResponce);
                if (lastResponce == 0)
                {
                    //rRN = wshShell2.GParamString("RRN");
                    //aCode = wshShell2.GParamString("AuthCode");
                    //chequeSTR = wshShell2.GParamString("Cheque1251");
                    //rRN = GetSTRFromByteArr(Auth_answer.RRN, MAX_RRN);
 
                }
                return lastResponce == 0 ? true : false;
            }
            catch(Exception E)
            {
                Log.Error(E.ToString());
                return false;
            }
        }  
}
сам вызов из основной программы

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
            
.
try
            {
                if (payType == OrderSaleType.CreditCard)
                {
                   if (SberCreditCardsService.Sale(orderData.Total) == false)
                        throw new PayCardException();
                   else
                    {
                        //rrn = sber.GetRRN();
                        //acode = sber.GetACode();
                        Locator.GetService<PayCardService>().GetTrensactionCode(ref rrn, ref acode);                        
                    }
 
                }
                Locator.GetService<DBUtills>().ProcessOrder(po_id, orderData, rrn, payType, acode);
            }
            catch (PayCardException)
            {
                if ((string.IsNullOrEmpty(rrn) == false) && (payType == OrderSaleType.CreditCard))
                    Locator.GetService<PayCardService>().EmergencyCancelation(orderData.Total);
                throw;
            }
            catch (Exception e)
            {
                Log.Error(e.ToString());
                throw;
            }
0
1 / 2 / 0
Регистрация: 02.06.2018
Сообщений: 33
17.10.2018, 12:37
Это здесь

https://sites.google.com/site/... home/files

Скачайте Instruction.docs, далее - Глава 4. Методы взаимодействия с программными средствами на основе языка С.
На стр. 113 тот же пример для языка BVM.

Добавлено через 6 минут
Посмотрите пример, может, подойдет. Не уверен, что ваш случай, и тем не менее.
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
17.10.2018, 12:43
VicNic, покажите что происходит в коде любого control который вызывает ArithmeticException, и посмотрите стек вызова у ошибки, откуда "ноги" растут то?
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
17.10.2018, 13:19  [ТС]
0
1 / 2 / 0
Регистрация: 02.06.2018
Сообщений: 33
17.10.2018, 13:20
Интересная задачка. Я бы с чего начал: уж если достучался указателем до массива char в неуправляемой среде, попробовал бы поэлементно вытаскивать отдельные символы, пока не наткнусь на нулевой. А уж из массива символов собрать строку не проблема.
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
17.10.2018, 13:30
VicNic, видно конечно не очень, но по стеку виднеется вызов метода если не путаю Execute (плохо видно на таких скринах), судя по тому откуда начинается стэк у Вас WPF приложение, значит скорей всего этот метод стоит на биндинге, нужно смотреть что в них происходит, возможно передаются данные или идёт обращение к несуществующим параметрам у терминала. На текущий момент Вам нужно отлаживать Ваше ПО начиная с метода описанного выше, я не имея понятия что там и как вообще всё устроено могу только советовать. Вам нужно найти точку "входа" для этой функции, ставить точку остановки и поэтапно смотреть какие параметры и куда уходят.

Добавлено через 52 секунды
B_S_V, у меня такое чувство что вы робот и пишите просто набор слов чуть чуть подходящие под тему...
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
17.10.2018, 13:42  [ТС]
Не робооооооообот я.
Просто не знаю как к этому подступиться. Не хватает знаний и опыта.

Добавлено через 1 минуту
И так как, ответы приходят с опозданием, уже кучу вещей сам пробую. Поэтому такие "скачки" в потоке мысли.

Добавлено через 6 минут
Это код уже после вызова терминала СБера. Работа с терминалом закончилась. То есть остается окно с выбором мест. Отмечаю новые места (можно не отмечать), нажатие на любую кнопку, приводит к этому событию.

Добавлено через 52 секунды
ЕСли терминал СБер не вызывать, то все работает как часы. Так же все раюотает, еслы переключить вызов вместо терминала СБер на любой другой из поддерживаемых.
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
17.10.2018, 13:57
VicNic, про робота было не Вам

я понимаю что это уже после вызова, я и говорю Вам ставьте точку остановки на этом методе и смотрите что там вызывается, у меня нету Вашего проекта и нет возможности воспроизвести ошибку, чтобы в точности сказать что и как

Добавлено через 1 минуту
метод GO во ViewModel строка 798. Ставьте точку остановки и смотрите что именно вызывает там у Вас такой эксепшен

Добавлено через 5 минут
VicNic, идея конечно так себе но попробуйте работу с терминалом сделать отдельным потоком (для тестов). Есть вероятность что текущая работа просто нарушает целостность и ошибка уже как следствие идёт

Добавлено через 6 минут
P.S. а нет ли в той строке с ошибкой использования double.NaN?
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
17.10.2018, 14:32  [ТС]
2018-10-17 14:26:27,479 [9] ERROR TT.TicketKassa.App [(null)] - System.Windows.Markup.XamlParseException : "Задание свойства "System.Windows.FrameworkElement.Hei ght" вызвало исключение.": номер строки "13" и позиция в строке "9". ---> System.ArithmeticException: Переполнение или потеря точности в арифметической операции.
в System.Double.Equals(Object obj)
в System.Object.Equals(Object objA, Object objB)
в System.Windows.DependencyObject.UpdateEf fectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
в System.Windows.DependencyObject.SetValue Common(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
в System.Windows.Baml2006.WpfKnownMemberIn voker.SetValue(Object instance, Object value)
в MS.Internal.Xaml.Runtime.ClrObjectRuntim e.SetValue(XamlMember member, Object obj, Object value)
в MS.Internal.Xaml.Runtime.ClrObjectRuntim e.SetValue(Object inst, XamlMember property, Object value)
--- Конец трассировки внутреннего стека исключений ---
в System.Windows.Markup.WpfXamlLoader.Load (XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
в System.Windows.Markup.WpfXamlLoader.Load Baml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
в System.Windows.Markup.XamlReader.LoadBam l(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
в System.Windows.Application.LoadComponent (Object component, Uri resourceLocator)
в TT.TicketKassa.Controls.InputNumber.Init ializeComponent() в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Con trols\InputNumber.xaml:строка 1
в TT.TicketKassa.Controls.InputNumber.Show PayWindow(String message, OrderSaleType& orderSaleType) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Con trols\InputNumber.xaml.cs:строка 25
в TT.TicketKassa.Services.ProcessOrder.Pro cessOrderService(Boolean fast, Int32 showId, Int32 clientID, OrderData orderData, String seatsString, Int32 Count, Byte typeseatForUpdate) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Ser vices\ProcessOrder.cs:строка 46
в TT.TicketKassa.ViewModels.RepertoryViewM odel.Sale0(Boolean fast) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Vie wModels\RepertoryViewModel.cs:строка 887
в TT.TicketKassa.ViewModels.RepertoryViewM odel.Go(Boolean fast) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Vie wModels\RepertoryViewModel.cs:строка 797
в TT.TicketKassa.ViewModels.RepertoryViewM odel.Sale(Object obj) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Vie wModels\RepertoryViewModel.cs:строка 787
в AttachedCommandBehavior.ActionExecutionS trategy.Execute(Object parameter) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Vie ws\Commands\ExecutionStrategy.cs:строка 71
в (CommandBehaviorBinding , Object , RoutedEventArgs )
в System.Windows.RoutedEventHandlerInfo.In vokeHandler(Object target, RoutedEventArgs routedEventArgs)
в System.Windows.EventRoute.InvokeHandlers Impl(Object source, RoutedEventArgs args, Boolean reRaised)
в System.Windows.UIElement.RaiseEventImpl( DependencyObject sender, RoutedEventArgs args)
в System.Windows.UIElement.RaiseEvent(Rout edEventArgs e)
в System.Windows.Controls.Primitives.Butto nBase.OnClick()
в System.Windows.Controls.Button.OnClick()
в System.Windows.Controls.Primitives.Butto nBase.OnMouseLeftButtonUp(MouseButtonEve ntArgs e)
в System.Windows.UIElement.OnMouseLeftButt onUpThunk(Object sender, MouseButtonEventArgs e)
в System.Windows.Input.MouseButtonEventArg s.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
в System.Windows.RoutedEventArgs.InvokeHan dler(Delegate handler, Object target)
в System.Windows.RoutedEventHandlerInfo.In vokeHandler(Object target, RoutedEventArgs routedEventArgs)
в System.Windows.EventRoute.InvokeHandlers Impl(Object source, RoutedEventArgs args, Boolean reRaised)
в System.Windows.UIElement.ReRaiseEventAs( DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
в System.Windows.UIElement.OnMouseUpThunk( Object sender, MouseButtonEventArgs e)
в System.Windows.Input.MouseButtonEventArg s.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
в System.Windows.RoutedEventArgs.InvokeHan dler(Delegate handler, Object target)
в System.Windows.RoutedEventHandlerInfo.In vokeHandler(Object target, RoutedEventArgs routedEventArgs)
в System.Windows.EventRoute.InvokeHandlers Impl(Object source, RoutedEventArgs args, Boolean reRaised)
в System.Windows.UIElement.RaiseEventImpl( DependencyObject sender, RoutedEventArgs args)
в System.Windows.UIElement.RaiseTrustedEve nt(RoutedEventArgs args)
в System.Windows.UIElement.RaiseEvent(Rout edEventArgs args, Boolean trusted)
в System.Windows.Input.InputManager.Proces sStagingArea()
в System.Windows.Input.InputManager.Proces sInput(InputEventArgs input)
в System.Windows.Input.InputProviderSite.R eportInput(InputReport inputReport)
в System.Windows.Interop.HwndMouseInputPro vider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
в System.Windows.Interop.HwndMouseInputPro vider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в System.Windows.Interop.HwndSource.InputF ilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndSubclass.DispatcherCallback Operation(Object o)
в System.Windows.Threading.ExceptionWrappe r.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
в System.Windows.Threading.ExceptionWrappe r.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Добавлено через 2 минуты
Это при клиеке на кнопке "Продажа". При клике на другом контроле Exception тот же ну соответсвенно ссылки на код другие
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
17.10.2018, 14:32
Что у вас в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Con trols\InputNumber.xaml, номер строки "13" и позиция в строке "9"? Где-то там или в коже выставляется некорректное значение Height...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.10.2018, 14:32
Помогаю со студенческими работами здесь

Как обрабатывать исключения из неуправляемого кода?
Здравствуйте. В приложении используется сторонняя библиотека на c++, в которой периодически возникают ошибки. Ведут они себя не как...

Из неуправляемого кода стороннего приложения, передать в свое приложение массив байт
Опишу сначала суть задачи, 1. Требуется из неуправляемого кода стороннего приложения, передавать в мое приложение массив байт, с условием...

преобразование ref byte в byte[] или в IntPtr без использования неуправляемого кода
есть COM интерфейс с методом: virtual /* */ HRESULT STDMETHODCALLTYPE OnReceivePacket( /* */ long dwSize, ...

Подключение Python кода в С# проект
Есть ли какие-то способы интегрировать python код в c# проект?

Возможно ли вызвать функции неуправляемого консольного приложения в управляемом коде?
Всем привет! Ребят вопрос общего характера. Есть консольное приложение на C. Возможно ли вызвать функции этого приложения в управляемом...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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