0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20

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

15.10.2018, 19:56. Показов 5259. Ответов 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
6525 / 4101 / 1606
Регистрация: 09.05.2015
Сообщений: 9,564
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
6525 / 4101 / 1606
Регистрация: 09.05.2015
Сообщений: 9,564
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru