В system windows forms nativewindow callback intptr hwnd int32 msg intptr wparam intptr lparam

boze2012

Сообщения: 2
Зарегистрирован: 16 авг 2012, 18:18

Ошибка при запуске программы.(JIT) отладка

Ошибка вылетает на Stimulsoft Reports.Ultimate 2011.3 и на 2012.1
При старте программы масштаб становится минимальным панель инструментов не видно, если нажать продолжить программа запустится, но не всегда работает корректно.

Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.Xml.XmlException: Отсутствует корневой элемент.
в System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res)
в System.Xml.XmlTextReaderImpl.ParseDocumentContent()
в System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
в System.Xml.XmlDocument.Load(XmlReader reader)
в System.Xml.XmlDocument.Load(String filename)
в Stimulsoft.Controls.Win.DotNetBar.DotNetBarManager.LoadLayout(String FileName)
в Stimulsoft.Report.Design.StiDesignerConfigService.Load()
в Stimulsoft.Report.Design.StiDesignerControl.LoadDesignerParam()
в Stimulsoft.Report.Design.StiDesignerControl.OnPaint(PaintEventArgs e)
в System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
в System.Windows.Forms.Control.WmPaint(Message& m)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************
mscorlib
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.544 (RTMLDR.030319-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
—————————————-
Designer
Версия сборки: 2012.1.1300.0
Версия Win32: 2012.1.1300.0
CodeBase: file:///C:/Program%20Files%20(x86)/Stimulsoft%20Reports.Ultimate%202012.1/Bin/Designer.exe
—————————————-
Stimulsoft.Report
Версия сборки: 2012.1.1300.0
Версия Win32: 2012.1.1300.0
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Stimulsoft.Report/2012.1.1300.0__ebe6666cba19647a/Stimulsoft.Report.dll
—————————————-
System
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.544 built by: RTMLDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
—————————————-
Stimulsoft.Base
Версия сборки: 2012.1.1300.0
Версия Win32: 2012.1.1300.0
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Stimulsoft.Base/2012.1.1300.0__ebe6666cba19647a/Stimulsoft.Base.dll
—————————————-
System.Windows.Forms
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.560 built by: RTMLDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System.Drawing
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.568 built by: RTMLDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-
Stimulsoft.Report.Design
Версия сборки: 2012.1.1300.0
Версия Win32: 2012.1.1300.0
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Stimulsoft.Report.Design/2012.1.1300.0__ebe6666cba19647a/Stimulsoft.Report.Design.dll
—————————————-
Stimulsoft.Controls.Win
Версия сборки: 2012.1.1300.0
Версия Win32: 2012.1.1300.0
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Stimulsoft.Controls.Win/2012.1.1300.0__ebe6666cba19647a/Stimulsoft.Controls.Win.dll
—————————————-
System.Xml
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.450 built by: RTMLDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
—————————————-
Accessibility
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
—————————————-
Stimulsoft.Report.Check
Версия сборки: 2012.1.1300.0
Версия Win32: 2012.1.1300.0
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Stimulsoft.Report.Check/2012.1.1300.0__ebe6666cba19647a/Stimulsoft.Report.Check.dll
—————————————-
Stimulsoft.Report.Helper
Версия сборки: 2012.1.1300.0
Версия Win32: 2012.1.1300.0
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Stimulsoft.Report.Helper/2012.1.1300.0__ebe6666cba19647a/Stimulsoft.Report.Helper.dll
—————————————-
Stimulsoft.Report.Win
Версия сборки: 2012.1.1300.0
Версия Win32: 2012.1.1300.0
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Stimulsoft.Report.Win/2012.1.1300.0__ebe6666cba19647a/Stimulsoft.Report.Win.dll
—————————————-
Stimulsoft.Report.Design.WebViewer
Версия сборки: 2012.1.1300.0
Версия Win32: 2012.1.1300.0
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Stimulsoft.Report.Design.WebViewer/2012.1.1300.0__ebe6666cba19647a/Stimulsoft.Report.Design.WebViewer.dll
—————————————-
Stimulsoft.Report.Design.SLViewer
Версия сборки: 2012.1.1300.0
Версия Win32: 2012.1.1300.0
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Stimulsoft.Report.Design.SLViewer/2012.1.1300.0__ebe6666cba19647a/Stimulsoft.Report.Design.SLViewer.dll
—————————————-
System.Windows.Forms.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
—————————————-
Stimulsoft.Controls
Версия сборки: 2012.1.1300.0
Версия Win32: 2012.1.1300.0
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Stimulsoft.Controls/2012.1.1300.0__ebe6666cba19647a/Stimulsoft.Controls.dll
—————————————-
System.Data
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.506 (RTMLDR.030319-5000)
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
—————————————-
System.Core
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.450 built by: RTMLDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
—————————————-
System.xml.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Xml.resources.dll
—————————————-
mscorlib.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.454 (RTMLDR.030319-4500)
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll
—————————————-

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

<configuration>
<system.windows.forms jitDebugging=»true» />
</configuration>

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.

————————————————

Версия AIDA64 v2.20.1800/ru
Тестовый модуль 2.7.398-x64
Домашняя страница http://www.aida64.com/
Тип отчёта Быстрый отчёт
Компьютер P8
Генератор boze
Операционная система Microsoft Windows 7 Enterprise 6.1.7601 (Win7 RTM)
Дата 2012-08-17
Время 10:12

———[ Операционная система ]—————————————————————————————-

Свойства операционной системы:
Название ОС Microsoft Windows 7 Enterprise
Язык ОС Русский (Россия)
Язык установщика ОС Русский (Россия)
Тип ядра ОС Multiprocessor Free (64-bit)
Версия ОС 6.1.7601 (Win7 RTM)
Пакет обновления ОС Service Pack 1
Дата установки ОС 06.02.2012
Основная папка ОС C:\Windows

Версии компонентов:
Common Controls 6.16
Windows Mail 6.1.7600.16385 (win7_rtm.090713-1255)
Windows Media Player 12.0.7600.16385 (win7_rtm.090713-1255)
Windows Messenger —
MSN Messenger —
Internet Information Services (IIS) 7.5
.NET Framework 4.0.30319.1 built by: RTMRel
Novell Client —
DirectX DirectX 11.0
OpenGL 6.1.7600.16385 (win7_rtm.090713-1255)
ASPI —

Функции операционной системы:
Отладочная версия Нет
Версия DBCS Нет
Контроллер домена Нет
Наличие безопасности Нет
Наличие сети Да
Удалённая сессия Нет
Безопасный режим Нет
Медленный процессор Нет
Терминальные службы Да

Ivan

Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Re: Ошибка при запуске программы.(JIT) отладка

Сообщение

Ivan »

Здравствуйте.

Похоже у вас проблемы при считывании файла настроек дизайнера.
Попробуйте удалить следующую папку:

Код: Выделить всё

C:\Users\__текущий_пользователь__\AppData\Local\Stimulsoft\

При следующем запуске дизайнера он должен пересоздать эту папку со стандартными настройками.

Спасибо.

boze2012

Сообщения: 2
Зарегистрирован: 16 авг 2012, 18:18

Михаил

Сообщения: 2
Зарегистрирован: 25 авг 2014, 15:15

Re: Ошибка при запуске программы.(JIT) отладка

Сообщение

Михаил »

Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.Xml.XmlException: Недопустимые данные на корневом уровне. Строка 1, позиция 1.
в System.Xml.XmlTextReaderImpl.Throw(Exception e)
в System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
в System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
в System.Xml.XmlTextReaderImpl.ParseDocumentContent()
в System.Xml.XmlTextReaderImpl.Read()
в KSharp.SettingsLocal.read()
в KSharp.Main.onLoad(Object sender, EventArgs e)
в System.Windows.Forms.Form.OnLoad(EventArgs e)
в System.Windows.Forms.Form.OnCreateControl()
в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
в System.Windows.Forms.Control.CreateControl()
в System.Windows.Forms.Control.WmShowWindow(Message& m)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
в System.Windows.Forms.ContainerControl.WndProc(Message& m)
в System.Windows.Forms.Form.WmShowWindow(Message& m)
в System.Windows.Forms.Form.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************
mscorlib
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5477 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
—————————————-
AcroRd32
Версия сборки: 10.1.2.45
Версия Win32: 10.1.2.45
CodeBase: file:///C:/Users/Михаил/AppData/Local/Adobe/Acrobat/Shared%20Services/AcroRd32.exe
—————————————-
System
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
—————————————-
System.Windows.Forms
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5468 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System.Drawing
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-
System.Xml
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5476 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
—————————————-
mscorlib.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5477 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
—————————————-
System.XML.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml.resources/2.0.0.0_ru_b77a5c561934e089/System.Xml.resources.dll
—————————————-
System.Windows.Forms.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
—————————————-

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

<configuration>
<system.windows.forms jitDebugging=»true» />
</configuration>

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.

Михаил

Сообщения: 2
Зарегистрирован: 25 авг 2014, 15:15

Re: Ошибка при запуске программы.(JIT) отладка

Сообщение

Михаил »

Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.Xml.XmlException: Недопустимые данные на корневом уровне. Строка 1, позиция 1.
в System.Xml.XmlTextReaderImpl.Throw(Exception e)
в System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
в System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
в System.Xml.XmlTextReaderImpl.ParseDocumentContent()
в System.Xml.XmlTextReaderImpl.Read()
в KSharp.SettingsLocal.read()
в KSharp.Main.onLoad(Object sender, EventArgs e)
в System.Windows.Forms.Form.OnLoad(EventArgs e)
в System.Windows.Forms.Form.OnCreateControl()
в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
в System.Windows.Forms.Control.CreateControl()
в System.Windows.Forms.Control.WmShowWindow(Message& m)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
в System.Windows.Forms.ContainerControl.WndProc(Message& m)
в System.Windows.Forms.Form.WmShowWindow(Message& m)
в System.Windows.Forms.Form.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************
mscorlib
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5477 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
—————————————-
AcroRd32
Версия сборки: 10.1.2.45
Версия Win32: 10.1.2.45
CodeBase: file:///C:/Users/Михаил/AppData/Local/Adobe/Acrobat/Shared%20Services/AcroRd32.exe
—————————————-
System
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
—————————————-
System.Windows.Forms
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5468 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System.Drawing
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-
System.Xml
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5476 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
—————————————-
mscorlib.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5477 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
—————————————-
System.XML.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml.resources/2.0.0.0_ru_b77a5c561934e089/System.Xml.resources.dll
—————————————-
System.Windows.Forms.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
—————————————-

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

<configuration>
<system.windows.forms jitDebugging=»true» />
</configuration>

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.

NikolaiPanin

Сообщения: 2
Зарегистрирован: 06 дек 2014, 16:43

Re: Ошибка при запуске программы.(JIT) отладка

Сообщение

NikolaiPanin »

Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.InvalidCastException: Приведение строки «303.9» к типу «Double» является недопустимым. —> System.FormatException: Входная строка имела неверный формат.
в Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat)
в Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)
— Конец трассировки внутреннего стека исключений —
в Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)
в Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value)
в PerformanceCalculatorTemplate1.Form1.btnCalc_Click(Object sender, EventArgs e)
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ButtonBase.WndProc(Message& m)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************
mscorlib
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18444 built by: FX451RTMGDR
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
—————————————-
TOPER B777
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/TOPER%20Calculator%20Tool/B777/TOPER%20B777.exe
—————————————-
Microsoft.VisualBasic
Версия сборки: 10.0.0.0
Версия Win32: 11.0.50938.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
—————————————-
System
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.34238 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
—————————————-
System.Core
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
—————————————-
System.Windows.Forms
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System.Drawing
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-
System.Runtime.Remoting
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.34245 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
—————————————-
System.Configuration
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
—————————————-
System.Xml
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.34234 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
—————————————-
System.Windows.Forms.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
—————————————-
mscorlib.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll
—————————————-
Accessibility
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
—————————————-
Microsoft.VisualBasic.resources
Версия сборки: 10.0.0.0
Версия Win32: 11.0.50938.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic.resources/v4.0_10.0.0.0_ru_b03f5f7f11d50a3a/Microsoft.VisualBasic.resources.dll
—————————————-

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

<configuration>
<system.windows.forms jitDebugging=»true» />
</configuration>

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.

NikolaiPanin

Сообщения: 2
Зарегистрирован: 06 дек 2014, 16:43

Re: Ошибка при запуске программы.(JIT) отладка

Сообщение

NikolaiPanin »

Когда запускаю приложение,то появляется такая ошибка,я даже не знаю в чем причина
Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.InvalidCastException: Приведение строки «311.3» к типу «Double» является недопустимым. —> System.FormatException: Входная строка имела неверный формат.
в Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat)
в Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)
— Конец трассировки внутреннего стека исключений —
в Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)
в Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value)
в PerformanceCalculatorTemplate1.Form1.btnCalc_Click(Object sender, EventArgs e)
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ButtonBase.WndProc(Message& m)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************
mscorlib
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18444 built by: FX451RTMGDR
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
—————————————-
TOPER B777
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/TOPER%20Calculator%20Tool/B777/TOPER%20B777.exe
—————————————-
Microsoft.VisualBasic
Версия сборки: 10.0.0.0
Версия Win32: 11.0.50938.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
—————————————-
System
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.34238 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
—————————————-
System.Core
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
—————————————-
System.Windows.Forms
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System.Drawing
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-
System.Runtime.Remoting
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.34245 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
—————————————-
System.Configuration
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
—————————————-
System.Xml
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.34234 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
—————————————-
System.Windows.Forms.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
—————————————-
mscorlib.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll
—————————————-
Accessibility
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
—————————————-
Microsoft.VisualBasic.resources
Версия сборки: 10.0.0.0
Версия Win32: 11.0.50938.18408 built by: FX451RTMGREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic.resources/v4.0_10.0.0.0_ru_b03f5f7f11d50a3a/Microsoft.VisualBasic.resources.dll
—————————————-

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

<configuration>
<system.windows.forms jitDebugging=»true» />
</configuration>

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.

    using System.Runtime.InteropServices;

    //….

    public class WaveNative

        {

            // consts

            public const int MMSYSERR_NOERROR = 0; // no error

            public const int MM_WOM_OPEN = 0x3BB;

            public const int MM_WOM_CLOSE = 0x3BC;

            public const int MM_WOM_DONE = 0x3BD;

            public const int MM_WIM_OPEN = 0x3BE;

            public const int MM_WIM_CLOSE = 0x3BF;

            public const int MM_WIM_DATA = 0x3C0;

            public const int CALLBACK_FUNCTION = 0x00030000;    // dwCallback is a FARPROC

            public const int TIME_MS = 0x0001;  // time in milliseconds

            public const int TIME_SAMPLES = 0x0002;  // number of wave samples

            public const int TIME_BYTES = 0x0004;  // current byte offset

            // callbacks

            public delegate void WaveDelegate(IntPtr hdrvr, int uMsg, int dwUser, ref WaveHdr wavhdr, int dwParam2);

            // structs

            [StructLayout(LayoutKind.Sequential)]

            public struct WaveHdr

            {

                public IntPtr lpData; // pointer to locked data buffer

                public int dwBufferLength; // length of data buffer

                public int dwBytesRecorded; // used for input only

                public IntPtr dwUser; // for client’s use

                public int dwFlags; // assorted flags (see defines)

                public int dwLoops; // loop control counter

                public IntPtr lpNext; // PWaveHdr, reserved for driver

                public int reserved; // reserved for driver

            }

            private const string mmdll = «winmm.dll»;

            // WaveIn calls

            [DllImport(mmdll)]

            public static extern int waveInGetNumDevs();

            [DllImport(mmdll)]

            public static extern int waveInAddBuffer(IntPtr hwi, ref WaveHdr pwh, int cbwh);

            [DllImport(mmdll)]

            public static extern int waveInClose(IntPtr hwi);

            [DllImport(mmdll)]

            public static extern int waveInOpen(out IntPtr phwi, int uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, IntPtr dwInstance, int dwFlags);

            [DllImport(mmdll)]

            public static extern int waveInPrepareHeader(IntPtr hWaveIn, ref WaveHdr lpWaveInHdr, int uSize);

            [DllImport(mmdll)]

            public static extern int waveInUnprepareHeader(IntPtr hWaveIn, ref WaveHdr lpWaveInHdr, int uSize);

            [DllImport(mmdll)]

            public static extern int waveInReset(IntPtr hwi);

            [DllImport(mmdll)]

            public static extern int waveInStart(IntPtr hwi);

            [DllImport(mmdll)]

            public static extern int waveInStop(IntPtr hwi);

        }

  1. Вызываем турботрекер
  2. Выбираем внешний источник
  3. Устанавливаем текущую задачу
  4. Запускаем учет времени
  5. Изменяем источник на локальный (пустой)
  6. Пытаемся остановить учет времени, ловим ошибку
Message: Ссылка на объект не указывает на экземпляр объекта.
StackTrace:    в TurboConf.Service.TurboTask.TurboTaskForm.‮‏‏‬‪‭​‭‍‎‌​​‌‬‫‫‮​‪‍‫‪‮(Object , EventArgs )
   в System.Windows.Forms.Control.OnClick(EventArgs e)
   в System.Windows.Forms.Button.OnClick(EventArgs e)
   в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   в System.Windows.Forms.Control.WndProc(Message& m)
   в System.Windows.Forms.ButtonBase.WndProc(Message& m)
   в System.Windows.Forms.Button.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
ProductVersion: 5.16.8025.30611
UAC: True
CompatibilityMode: True
SystemInfo: Microsoft Windows NT 6.2.9200.0 x64
CPU: 4
TurboConf Settings: {
  "CompatibilityMode": false,
  "DontShowUacForm": false,
  "UseWindowsTheme": false,
  "UseWaitHack": true,
  "DelayMultipler": 10,
  "AllowEnterprise": false,
  "InsertCarriageReturns": false,
  "ClearMessageWindowBeforeCheck": true,
  "FormatAllText": true,
  "Windows8Mode": true,
  "ParametersWindowPosX": -1,
  "ParametersWindowPosY": -1,
  "PinMessageWindow": false,
  "AgreementShown": true,
  "InsertSpaces": true,
  "CheckForUpdates": true,
  "InspectParameters": true,
  "InspectVars": true,
  "InspectFunctions": true,
  "InspectAssignments": true,
  "InspectReturns": true,
  "GoToDefinition": true,
  "EditDataType": false,
  "ReplaceSystemMenu": false,
  "AddAlignSpaces": true,
  "RemoveExtraLineBreaks": true,
  "InsertIBNameBefore": true,
  "T9AutoShowAfterPeriod": true,
  "T9AllowSwitch": true,
  "SetForegroundWindowDelay": 50,
  "EmbeddedInspector": false,
  "AutoCompleteOnEnter": false,
  "TurboMenuOnCtrlRMB": false,
  "T9Enabled": true,
  "JumpToAutoSettings": true,
  "T9StyleVS": false,
  "BetaEnabled": false,
  "ShowStartForm": false,
  "UpgradeRequired": false,
  "ShowUpdateForm": true,
  "CloseSearchWindowAfterJump": true,
  "AlignCommas": true,
  "T9AlwaysShowOnCtrlSpace": false,
  "T9PasteTextOnEscape": true,
  "V8DataVersion": "8.3.5.1383",
  "CheckForDataUpdates": true,
  "ShiftT9Window": false,
  "ShowT9OnCtrlShiftSpace": false,
  "RemapDefaultParametersInfoOnCtrlP": true,
  "Plugins": "{\"OpenHelpForm\":{\"PluginName\":\"Помощь\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":49,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"OpenForumPage\":{\"PluginName\":\"Форум\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":0,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"ExtractMethod\":{\"PluginName\":\"Извлечь метод\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":77,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"ProcedureAndFuctions\":{\"PluginName\":\"Процедуры и функции модуля\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":75,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"Surround\":{\"PluginName\":\"Окружить\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":68,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"Rename\":{\"PluginName\":\"Переименовать\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":82,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"JumpToObject\":{\"PluginName\":\"Прыгнуть к объекту конфигурации\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":74,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":false,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"FindTemplate\":{\"PluginName\":\"Найти шаблон\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":66,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"CodeInspector\":{\"PluginName\":\"Инспектировать\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":73,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":false,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"ShowParameters\":{\"PluginName\":\"Информация о параметрах\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":80,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":false,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"FormatBlock\":{\"PluginName\":\"Выровнять блок текста\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":187,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"AlignCommas\":{\"PluginName\":\"Выровнять блок текста по запятым\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":188,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"CloseBrackets\":{\"PluginName\":\"Закрыть скобки\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":48,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"ShowInfoBaseName\":{\"PluginName\":\"Показать имя информационной базе в заголовке\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":123,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":false,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"TurboMenu\":{\"PluginName\":\"ТурбоМеню\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":192,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":false,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"OpenStore\":{\"PluginName\":\"Открыть сайт TurboConf.ru\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":0,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"TurboConf\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null},\"Netlenka\":{\"PluginName\":\"Защитить модуль\",\"HotKey\":null,\"Ctrl\":true,\"KeyCode\":85,\"Enabled\":true,\"IsCorePlugin\":true,\"AllowEnterprise\":true,\"Developer\":\"Netlenka1c.ru\",\"AppId\":\"\",\"Id\":\"\",\"FileName\":null}}",
  "MultiClipboardEnabled": true,
  "OpenHistory": "",
  "OpenFilesHook": false,
  "OpenFileConfirmation": false,
  "LastOpenPath": "",
  "T9IncludeStrings": true,
  "NetlenkaFormatResult": false,
  "NetlenkaEncryptStrings": true,
  "NetlenkaByteCode": false,
  "NetlenkaControlFlow": false,
  "AutoTitleEnabled": false,
  "CheckForBetaVersions": true,
  "SaveWindowsHistory": true,
  "MaxWindowsHistorySize": 100,
  "MaxJumpToHistorySize": 100,
  "OneTrackerEnabled": false,
  "OneTrackerIdleTime": 10,
  "OneTrackerSaveInterval": 30,
  "OneTrackerAddIBSuffix": true,
  "OneTrackerSaveToFolder": 0,
  "DebugMode": false,
  "ToDoEnabled": true,
  "AutoContextMenu": true,
  "JumpToIncludeMatches": true,
  "PinHintWindow": false,
  "HintWindowPosX": -16498,
  "HintWindowPosY": -16228,
  "ShowStartWizard": false,
  "TurboIconEnabled": true,
  "JumpToAllObjects": true,
  "TurboMenuEnabled": true,
  "AutoContextMenuDelay": 50,
  "JumpToPasteSelectedText": true,
  "ShowVersionChangesPage": true,
  "AutoContextMenuEnterpiseMode": false,
  "T9AlwaysAssists": false,
  "T9AssistEnabled": true,
  "T9AllowFields": true,
  "AutoFilterSyntaxHelper": false,
  "CheckForPreviewVersions": true,
  "ScriptsSettings": "",
  "WebClientWidth": 0,
  "WebClientHeight": 0,
  "WebClientLeft": -1,
  "WebClientTop": -1,
  "T9AssistSmartFieldsEnabled": true,
  "T9AssistGetMenuItems": false,
  "T9HybridModeEnabled": true,
  "AutoSaveEnabled": false,
  "LogLevel": "Warning",
  "AllEventSubsFormWidth": 0,
  "AllEventSubsFormHeight": 0,
  "PinAllEventSubsForm": false,
  "LiveTemplatesEnabled": true,
  "QuotesSurroundEnabled": true,
  "BracketsSurroundEnabled": true,
  "LiveSpellCheck": true,
  "InspectSpellCheck": true,
  "SettingsFormWidth": 800,
  "SettingsFormHeight": 660,
  "AllowInsInEditMode": true,
  "WndPanelFormWidth": 400,
  "WndPanelFormHeight": 667,
  "PinWndPanelForm": false,
  "AutoAddSemicolon": true,
  "AutoCloseBrackets": true,
  "AutoQuestionExpression": true,
  "TurboSearchEnabled": true,
  "TrimLinesOnFormat": true,
  "FastCodeSearchBsp": true,
  "FastCodeMaxResultsCount": 50,
  "SwitchLayoutMode_LShift": "",
  "SwitchLayoutMode_RShift": "",
  "SwitchLayoutMode": "Отключено",
  "TurboSearchFormWidth": 1024,
  "TurboSearchFormHeight": 787,
  "PinTurboSearchForm": true,
  "TSTextBoost": 0.5,
  "TSTitleBoost": 2.0,
  "TSKeywordsBoost": 2.0,
  "NotDPIAware": false,
  "ShowMouseLangIndicator": false,
  "MouseLangIndicatorTimeout": 1500,
  "TurboBookmarks_OpenFolders": true,
  "ToDoExtFiles": true,
  "AutoTemplates": true,
  "TurboBookmarks_FoldersHistory": false,
  "ShowKeyboardLangIndicator": true,
  "EdtEnabled": true,
  "IBFormatString": "{IB} {PATH}",
  "TurboTask_MyTasks": false,
  "TurboTask_OpenTasks": true,
  "TurboTask_PinForm": true,
  "OneTrackerGlobalMode": true,
  "MinVersion1C": "",
  "TurboTask_ShowTaskTime": true,
  "SettingsKey": "",
  "IsSynchronized": true
}
Details: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
   в TurboConf.Service.TurboTask.TurboTaskForm.‮‏‏‬‪‭​‭‍‎‌​​‌‬‫‫‮​‪‍‫‪‮(Object , EventArgs )
   в System.Windows.Forms.Control.OnClick(EventArgs e)
   в System.Windows.Forms.Button.OnClick(EventArgs e)
   в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   в System.Windows.Forms.Control.WndProc(Message& m)
   в System.Windows.Forms.ButtonBase.WndProc(Message& m)
   в System.Windows.Forms.Button.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

dirt

2 / 2 / 0

Регистрация: 14.08.2013

Сообщений: 19

30.10.2013, 01:11. Показов 3640. Ответов 16

Метки нет (Все метки)


Доброго времечка!
Подскажите пожалуйста про функцию API CM_Enumerate_Classes. Функция перечисляет классы устройств в системе.
Вопрос на самом деле глобальный, но просто на примере этой функции. Документации для vb.net по API что-то совсем мало, в основном для C++ и Delphi, вот мучаюсь…

Вот смотрите как эта функция описана в MSDN:

C++
1
2
3
4
5
6
7
CMAPI
CONFIGRET
WINAPI CM_Enumerate_Classes(
  _In_   ULONG ulClassIndex,
  _Out_  LPGUID ClassGuid,
  _In_   ULONG ulFlags
);

Меня интересует глобальный вопрос — куда эта функция складывает полученные значения и как их, допустим, вывести в listbox? Если я пытаюсь вывести просто те значения, которые она выдает — получается фигня какая-то:

VB.NET
1
2
3
4
5
6
7
8
Dim myGuid As Guid
           Dim a1 As String = ""
           Dim i As Integer = 0
           Do Until a1 = "CR_NO_SUCH_VALUE" Or i = 1000
              a1 = CM_Enumerate_Classes(i, myGuid, 0).ToString
              Me.ListBox1.Items.Add(CM_Enumerate_Classes(i, myGuid, 0).ToString)
              i = i + 1
           Loop

Выдает всего два класса, при этом повторяя их независимо от изменения индекса. Я даже не уверен, реальные ли это GUIDы классов или только лишь абракадабра, похожая на них.
Вот как я ее объявляю:

VB.NET
1
2
3
4
    <DllImport("cfgmgr32.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> _
    Private Shared Function CM_Enumerate_Classes(<[In]()> ByVal ulClassIndex As ULong, _
                                                 <Out(), [Optional]()> ByVal ClassGuid As Guid, _
                                                 <[In](), [Optional]()> ByVal ulFlags As ULong) As Guid

Мне кажется, я делаю что-то шиворот навыворот, но не могу взять в толк, что.
PS Там два параметра указаны как опциональные, а должны быть обязательные, но это просто эксперимент.



0



IT_Exp

Эксперт

34794 / 4073 / 2104

Регистрация: 17.06.2006

Сообщений: 32,602

Блог

30.10.2013, 01:11

Ответы с готовыми решениями:

Функции Setup API, ошибка при выводе списка устройств
Вывожу данные о системной информации ПК, список устройств в файл, но компилятор указывает на невозможность использовать данные функции.

Вызов API функции
Нужно вызвать функцию GetUserNameA… но MASM выдает ошибку: undefined symbol : GetUserNameA

вот код:

.586 ; Для процесора…

Вызов функции API
Возник такой вопрос, почему когда я пишу
mov eax,
mov X,eax
mov eax,
mov Y,eax
mov eax,
mov X1,eax
mov eax,
mov Y1,eax …

16

NickoTin

Почетный модератор

8724 / 3676 / 404

Регистрация: 14.06.2010

Сообщений: 4,513

Записей в блоге: 9

30.10.2013, 02:22

VB.NET
1
2
3
4
<DllImport("cfgmgr32.dll", SetLastError:=True)> _
    Private Shared Function CM_Enumerate_Classes(ByVal ulClassIndex As UInt32, _
                                                 <Out()> ByRef ClassGuid As Guid, _
                                                 ByVal ulFlags As UInt32) As Uint32



0



2 / 2 / 0

Регистрация: 14.08.2013

Сообщений: 19

30.10.2013, 10:18

 [ТС]

Спасибо, немного прояснилось. Натупил я немного с тем, что пытался от функции получить текстовую строку.
Теперь понятно, как интерпретировать результаты, которые она выдавала. По идее, там все правильно было.
А как теперь узнать те GUIDы классов, которые перечисляла эта функция? У нее есть выходной параметр, а как его использовать — ума не приложу…



0



NickoTin

Почетный модератор

8724 / 3676 / 404

Регистрация: 14.06.2010

Сообщений: 4,513

Записей в блоге: 9

30.10.2013, 16:00

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        Const CR_NO_SUCH_VALUE As UInt32 = &H25
        Const CR_INVALID_DATA As UInt32 = &H1F
 
        Dim guid As Guid
        Dim retVal As UInt32
        Dim index As UInt32 = 0
 
        Do While True
            retVal = CM_Enumerate_Classes(index, guid, 0)
 
            If retVal = CR_NO_SUCH_VALUE Then
                Exit Do
            End If
 
            If (retVal = CR_INVALID_DATA) Then
                Debug.WriteLine("Index: " & index & " - Invalid class data. See remarks section on MSDN")
                index += 1
                Continue Do
            End If
 
            Debug.WriteLine("Index: " & index & " - " & guid.ToString())
            index += 1
        Loop



1



2 / 2 / 0

Регистрация: 14.08.2013

Сообщений: 19

30.10.2013, 20:35

 [ТС]

Как же все нереально просто… Спасибо, дружище!



0



dirt

2 / 2 / 0

Регистрация: 14.08.2013

Сообщений: 19

31.10.2013, 22:45

 [ТС]

Эх, недалеко я уехал
Теперь прошу помощи по функции SetupDiGetClassDevs.

C++
1
2
3
4
5
6
HDEVINFO SetupDiGetClassDevs(
  _In_opt_  const GUID *ClassGuid,
  _In_opt_  PCTSTR Enumerator,
  _In_opt_  HWND hwndParent,
  _In_      DWORD Flags
);

Никак не могу понять, какой тип значения она возвращает. По этому HDEVINFO ничего не смог найти. Вот объявление:

VB.NET
1
2
3
4
5
    <DllImport("setupapi.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> _
    Private Shared Function SetupDiGetClassDevs(ByVal ClassGuid As Guid, _
                                                ByVal Enumerator As String, _
                                                ByVal hwndParent As String, _
                                                ByVal Flags As Integer) As UInt32

Вот вызов:

VB.NET
1
2
3
4
5
        Dim retVal2 As UInt32
        Dim a1 As String = "884b96c3-56ef-11d1-bc8c-00a0c91405dd"
        Dim myGUID As Guid = TypeDescriptor.GetConverter(myGUID).ConvertFrom(a1)
        retVal2 = SetupDiGetClassDevs(myGUID, 0, 0, DIGCF_PRESENT Or DIGCF_DEVICEINTERFACE)
        Console.WriteLine("retVal2: " & retVal2.ToString & ", LastError: " & GetLastError().ToString)

Возвращается вот такое:
retVal2: 4294967295, LastError: 1004
Вот расшифровка этой ошибки:
ERROR_INVALID_FLAGS
1004 (0x3EC)
Invalid flags

Флаги пробовал по-всякому менять, ничего не меняется. Что это за тип (структура или что-либо еще) HDEVINFO?



0



NickoTin

Почетный модератор

8724 / 3676 / 404

Регистрация: 14.06.2010

Сообщений: 4,513

Записей в блоге: 9

31.10.2013, 23:27

VB.NET
1
2
3
4
5
6
7
8
9
    ' ByVal Flags As UInt32 - можно и Integer конечно (т.к. оба типа занимаю 4 байта в памяти),
    ' но со флагами обычно используют unsigned значения, т.е. которые беззнаковые.
    ' Считайте что это привычка и правила хорошего тона
 
    <DllImport("setupapi.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> _
    Private Shared Function SetupDiGetClassDevs(ByRef ClassGuid As Guid, _
                                                ByVal Enumerator As String, _
                                                ByVal hwndParent As IntPtr, _
                                                ByVal Flags As UInt32) As IntPtr
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        Dim INVALID_HANDLE_VALUE As IntPtr = -1
        Const DIGCF_PRESENT As UInt32 = &H2
        Const DIGCF_DEVICEINTERFACE As UInt32 = &H10
        Dim retValue As IntPtr
        Dim guid As Guid = New Guid("YOUR_GUID")
 
        retValue = SetupDiGetClassDevs(guid, Nothing, IntPtr.Zero, DIGCF_DEVICEINTERFACE Or DIGCF_PRESENT)
 
        If (INVALID_HANDLE_VALUE = retValue) Then
            Debug.WriteLine("Invalid handle: " + Marshal.GetLastWin32Error())
            Return
        End If
 
        ' success - retValue is a correct handle

Прочитайте про ссылочные и значимые типы (если с этим плохо) и про передачу значений по ссылке и по значению для VB.NET (ByVal, ByRef) тогда думаю станет легче преобразовывать функции.

Все типы которые присутствуют в MSDN описаны в SDK (поставляется вместе с Visual Studio), но на C/C++.



2



dirt

2 / 2 / 0

Регистрация: 14.08.2013

Сообщений: 19

12.11.2013, 22:00

 [ТС]

Опять привет. Теперь я застрял на SetupDiGetDeviceInterfaceDetail и нижайше прошу помощи опять.
Насколько я успел понять, ее обычно вызывают два раза, т.к. размер буфера заранее неизвестен.
Я успешно вызвал ее первый раз, а со вторым вызовом возник затык.
Вот ее объявление:

VB.NET
1
2
3
4
5
6
7
    <DllImport("setupapi.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Public Shared Function SetupDiGetDeviceInterfaceDetail(ByVal hDevInfo As IntPtr, _
                                                           ByRef deviceInterfaceData As SP_DEVICE_INTERFACE_DATA, _
                                                           ByVal mustPassIntPtrZero As IntPtr, _
                                                           ByVal mustPassZero As Int32, _
                                                           ByRef RequiredSize As Int32, _
                                                           ByVal mustPassIntPtrZero2 As IntPtr) As Boolean

Вот код:

VB.NET
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Dim DeviceInterfaceData As SP_DEVICE_INTERFACE_DATA
        Dim DeviceInterfaceDetailData As IntPtr
        Dim DeviceInterfaceDetailData1 As SP_DEVICE_INTERFACE_DETAIL_DATA
        Dim DeviceInfoSet As IntPtr
        Dim DeviceInfoData As SP_DEVINFO_DATA
        Dim RequiredSize As Integer = 0
        Dim HidGuid As New System.Guid("884b96c3-56ef-11d1-bc8c-00a0c91405dd")
        Dim success As Boolean
        Dim INVALID_HANDLE_VALUE As IntPtr = -1
 
        Dim LastError As Integer
 
        DeviceInterfaceData.cbSize = Marshal.SizeOf(DeviceInterfaceData)
        DeviceInfoData.cbSize = Marshal.SizeOf(DeviceInfoData)
 
        DeviceInfoSet = SetupDiGetClassDevs(HidGuid, 0, IntPtr.Zero, DIGCF_PRESENT + DIGCF_DEVICEINTERFACE) 'получаем хендл на список устройств
        LastError = GetLastError()
        Console.WriteLine("SetupDiGetClassDevs: " & DeviceInfoSet.ToString & ", Last error: " & LastError.ToString)
        If (DeviceInfoSet = INVALID_HANDLE_VALUE) Then
            Console.WriteLine("SetupDiGetClassDevs: Invalid handle, error: " & LastError.ToString)
            Return
        End If
 
        'Перечисляем устройства в хендле:
        Do While True
            success = SetupDiEnumDeviceInterfaces(DeviceInfoSet, Nothing, HidGuid, index, DeviceInterfaceData)
            LastError = GetLastError()
            If success = False Then
                Console.WriteLine("SetupDiEnumDeviceInterfaces: False, error: " & LastError.ToString & ", index: " & index.ToString)
                Exit Do
            End If
            If success = True Then
                Console.WriteLine("SetupDiEnumDeviceInterfaces: True, error: " & LastError.ToString & ", index: " & index.ToString)
                success = SetupDiGetDeviceInterfaceDetail(DeviceInfoSet, DeviceInterfaceData, IntPtr.Zero, RequiredSize, RequiredSize, IntPtr.Zero) '1st call
                LastError = GetLastError()
                'Success is false. GetLastError() shows 122, and RequiredSize gets set to 142
                Console.WriteLine("SetupDiGetDeviceInterfaceDetail, 1st call: Last error:" & LastError.ToString & ", RequiredSize: " & RequiredSize.ToString & ", index: " & index.ToString)
                DeviceInterfaceDetailData = Marshal.AllocHGlobal(RequiredSize)
 
                success = SetupDiGetDeviceInterfaceDetail(DeviceInfoSet, DeviceInterfaceData, DeviceInterfaceDetailData, RequiredSize, RequiredSize, IntPtr.Zero) '2nd call
                LastError = GetLastError()
                Console.WriteLine("SetupDiGetDeviceInterfaceDetail, 2nd call: Last error: " & LastError.ToString & ", RequiredSize: " & RequiredSize.ToString & ", index: " & index.ToString)
                DeviceInterfaceDetailData1 = Marshal.PtrToStructure(DeviceInterfaceDetailData, GetType(SP_DEVICE_INTERFACE_DETAIL_DATA))
                Console.WriteLine("Device path: " & DeviceInterfaceDetailData1.DevicePath.ToString)
                Console.WriteLine()
            End If
            index += 1
        Loop
        SetupDiDestroyDeviceInfoList(DeviceInfoSet)

Первый вызов функции SetupDiGetDeviceInterfaceDetail возвращает ошибку 122, но насколько я понял, так и должно быть. Второй вызов возвращает 1784.
В поле DevicePath структуры SP_DEVICE_INTERFACE_DETAIL_DATA после выполнения появляется всякая ересь.
Насчет вот этого:

VB.NET
1
DeviceInterfaceDetailData = Marshal.AllocHGlobal(RequiredSize)

и вот этого:

VB.NET
1
DeviceInterfaceDetailData1 = Marshal.PtrToStructure(DeviceInterfaceDetailData, GetType(SP_DEVICE_INTERFACE_DETAIL_DATA))

— это я нашел здесь.
Что неправильно во втором вызове функции SetupDiGetDeviceInterfaceDetail, подскажите пожалуйста ?



0



dirt

2 / 2 / 0

Регистрация: 14.08.2013

Сообщений: 19

14.11.2013, 02:52

 [ТС]

Хм, я разобрался сам. Но одна неприятность все же осталась. При закрытии приложения выскакивает исключение «попытка чтения или записи в защищенную память». Причем первые несколько запусков эту ошибку не выдавали. Подскажите, куда можно копать?
Вот рабочий код.

Кликните здесь для просмотра всего текста

VB.NET
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Dim index As UInt32 = 0
        Dim DeviceInterfaceData As SP_DEVICE_INTERFACE_DATA
        Dim DeviceInterfaceDetailDataSize As UInt32
        Dim DeviceInterfaceDetailDataPointer As IntPtr
        Dim DeviceInterfaceDetailData As SP_DEVICE_INTERFACE_DETAIL_DATA = Nothing
        Dim DeviceInfoSet As IntPtr
        Dim RequiredSize As Integer = 0
        Dim HidGuid As New System.Guid("884b96c3-56ef-11d1-bc8c-00a0c91405dd")
        Dim success As Boolean
        Dim INVALID_HANDLE_VALUE As IntPtr = -1
 
        Dim LastError As Integer
 
        DeviceInterfaceData.cbSize = Marshal.SizeOf(DeviceInterfaceData)
        DeviceInterfaceDetailData.cbSize = Marshal.SystemDefaultCharSize + Marshal.SizeOf(IntPtr.Zero)
 
        'Перечисляем устройства:
        DeviceInfoSet = SetupDiGetClassDevs(HidGuid, 0, IntPtr.Zero, DIGCF_PRESENT + DIGCF_DEVICEINTERFACE) 'получаем хендл на список устройств
        LastError = GetLastError()
        Console.WriteLine("SetupDiGetClassDevs: " & DeviceInfoSet.ToString & ", Last error: " & LastError.ToString)
        If (DeviceInfoSet = INVALID_HANDLE_VALUE) Then
            Console.WriteLine("SetupDiGetClassDevs: Invalid handle, error: " & LastError.ToString)
            Return
        End If
 
        'Перечисляем устройства в хендле:
        Do While True
            success = SetupDiEnumDeviceInterfaces(DeviceInfoSet, Nothing, HidGuid, index, DeviceInterfaceData)
            LastError = GetLastError()
            If success = False Then
                Console.WriteLine("SetupDiEnumDeviceInterfaces: False, error: " & LastError.ToString & ", index: " & index.ToString)
                Exit Do
            End If
            If success = True Then
                Console.WriteLine("SetupDiEnumDeviceInterfaces: True, error: " & LastError.ToString & ", index: " & index.ToString)
                success = SetupDiGetDeviceInterfaceDetail(DeviceInfoSet, DeviceInterfaceData, IntPtr.Zero, 0, RequiredSize, IntPtr.Zero) '1st call
                LastError = GetLastError()
                Console.WriteLine("SetupDiGetDeviceInterfaceDetail, 1st call: Last error:" & LastError.ToString & ", RequiredSize: " & RequiredSize.ToString & ", index: " & index.ToString)
                DeviceInterfaceDetailDataPointer = Marshal.AllocHGlobal(RequiredSize)
                DeviceInterfaceDetailDataSize = RequiredSize
                Marshal.StructureToPtr(DeviceInterfaceDetailData, DeviceInterfaceDetailDataPointer, False) ' Copy the contents of the structure, to an unmanaged memory space
                success = SetupDiGetDeviceInterfaceDetail(DeviceInfoSet, DeviceInterfaceData, DeviceInterfaceDetailDataPointer, DeviceInterfaceDetailDataSize, RequiredSize, IntPtr.Zero) '2nd call
                LastError = GetLastError()
                Console.WriteLine("SetupDiGetDeviceInterfaceDetail, 2nd call: Last error: " & LastError.ToString & ", RequiredSize: " & RequiredSize.ToString & ", index: " & index.ToString)
                DeviceInterfaceDetailData = Marshal.PtrToStructure(DeviceInterfaceDetailDataPointer, GetType(SP_DEVICE_INTERFACE_DETAIL_DATA))
                Console.WriteLine("Device path: " & DeviceInterfaceDetailData.DevicePath.ToString)
                Console.WriteLine()
            End If
            index += 1
        Loop
        SetupDiDestroyDeviceInfoList(DeviceInfoSet)

Еще конечно нужно сюда выложить сведения об исключении, простите что больно много букв…

Кликните здесь для просмотра всего текста

VB.NET
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
System.AccessViolationException не обработано
  Message="Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена."
  Source="Keyboard DevIOControl"
  StackTrace:
       в Keyboard_DevIOControl.Form1.Dispose(Boolean disposing)
       в System.ComponentModel.Component.Dispose()
       в System.Windows.Forms.Form.WmClose(Message& m)
       в System.Windows.Forms.Form.WndProc(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       в System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       в System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
       в System.Windows.Forms.Form.DefWndProc(Message& m)
       в System.Windows.Forms.Control.WndProc(Message& m)
       в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       в System.Windows.Forms.ContainerControl.WndProc(Message& m)
       в System.Windows.Forms.Form.WmSysCommand(Message& m)
       в System.Windows.Forms.Form.WndProc(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       в System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       в System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
       в System.Windows.Forms.Form.DefWndProc(Message& m)
       в System.Windows.Forms.Control.WndProc(Message& m)
       в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       в System.Windows.Forms.ContainerControl.WndProc(Message& m)
       в System.Windows.Forms.Form.WmNcButtonDown(Message& m)
       в System.Windows.Forms.Form.WndProc(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       в System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       в System.Windows.Forms.Application.Run(ApplicationContext context)
       в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       в Keyboard_DevIOControl.My.MyApplication.Main(String[] Args) в 17d14f5c-a337-4978-8281-53493378c1071.vb:строка 81
       в System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       в System.Threading.ThreadHelper.ThreadStart()
  InnerException:



0



Почетный модератор

8724 / 3676 / 404

Регистрация: 14.06.2010

Сообщений: 4,513

Записей в блоге: 9

15.11.2013, 15:54

dirt, завтра постараюсь ответить кодом. Скорее всего проблема с объявлениями или некорректным использованием функций.



0



dirt

2 / 2 / 0

Регистрация: 14.08.2013

Сообщений: 19

15.11.2013, 18:52

 [ТС]

NickoTin, спасибо, что возитесь со мной, но я опять разобрался сам. Нужно было добавить в конце операцию освобождения памяти.

VB.NET
1
System.Runtime.InteropServices.Marshal.FreeHGlobal(DeviceInterfaceDetailDataPointer)

В связи с чем у меня назрел другой вопрос. А после каких собственно действий ее надо освобождать?
Например, у меня в коде есть Marshal.PtrToStructure, нужно ли после нее использовать Marshal.DestroyStructure? Это немного не по теме, но может и после вызова API функций есть что-то, что нужно за ними подчищать?



0



NickoTin

Почетный модератор

8724 / 3676 / 404

Регистрация: 14.06.2010

Сообщений: 4,513

Записей в блоге: 9

16.11.2013, 19:24

dirt, от того что Вы не освобождаете память (FreeHGlobal) ошибка о чтении/записи в память вылетать не будет. Это просто удачное стечение обстоятельств.

Сообщение от dirt

А после каких собственно действий ее надо освобождать?

Зависит от того как Вы работаете с памятью, а вообще количество освобождений должно быть равно количеству вызовов для выделения памяти. Можно один раз выделить большой участок и работать постоянно с ним, и в конце всех операций освободить, а можно постоянно выделять-освобождать.

С динамическими структурами я привык работать без явного использования структур, а напрямую обращаясь к памяти, например так, код более лаконичный:

VB.NET
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
    <DllImport("setupapi.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> _
    Private Shared Function SetupDiGetClassDevs(ByRef ClassGuid As Guid, _
                                                ByVal Enumerator As String, _
                                                ByVal hwndParent As IntPtr, _
                                                ByVal Flags As UInt32) As IntPtr
 
    End Function
 
    <DllImport("setupapi.dll", SetLastError:=True)> _
    Private Shared Function SetupDiEnumDeviceInterfaces(ByVal DeviceInfoSet As IntPtr, _
                                                        ByVal DeviceInfoData As IntPtr, _
                                                        ByRef InterfaceClassGuid As Guid, _
                                                        ByVal MemberIndex As UInt32, _
                                                        ByRef DeviceInterfaceData As SP_DEVICE_INTERFACE_DATA) As Boolean
 
    End Function
 
    <DllImport("setupapi.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> _
    Private Shared Function SetupDiGetDeviceInterfaceDetail(ByVal DeviceInfoSet As IntPtr, _
                                                            ByRef DeviceInterfaceData As SP_DEVICE_INTERFACE_DATA, _
                                                            ByVal DeviceInterfaceDetailData As IntPtr, _
                                                            ByVal DeviceInterfaceDetailDataSize As Int32, _
                                                            ByRef RequiredSize As Int32, _
                                                            ByVal DeviceInfoData As IntPtr) As Boolean
 
    End Function
 
    <DllImport("setupapi.dll", SetLastError:=True)> _
    Private Shared Function SetupDiDestroyDeviceInfoList(ByVal DeviceInfoSet As IntPtr) As Boolean
 
    End Function
VB.NET
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
        Dim DeviceInterfaceData As SP_DEVICE_INTERFACE_DATA
        Dim DeviceInfoSet As IntPtr
        Dim HidGuid = New System.Guid("884b96c3-56ef-11d1-bc8c-00a0c91405dd")
        Dim INVALID_HANDLE_VALUE As IntPtr = -1
 
        Dim index As UInt32
 
        DeviceInfoSet = SetupDiGetClassDevs(HidGuid, Nothing, IntPtr.Zero, DIGCF_PRESENT Or DIGCF_DEVICEINTERFACE) 'получаем хендл на список устройств
 
        If (DeviceInfoSet = INVALID_HANDLE_VALUE) Then
            Debug.WriteLine("SetupDiGetClassDevs: Invalid handle, error: " & Marshal.GetLastWin32Error())
            Return
        End If
 
        DeviceInterfaceData.cbSize = Marshal.SizeOf(DeviceInterfaceData)
 
        'Перечисляем устройства в хендле:
        Do While True
            Dim success As Boolean
 
            success = SetupDiEnumDeviceInterfaces(DeviceInfoSet, IntPtr.Zero, HidGuid, index, DeviceInterfaceData)
 
            If success = False Then
                Debug.WriteLine("SetupDiEnumDeviceInterfaces: False, error: " & Marshal.GetLastWin32Error() & ", index: " & index)
                Exit Do
            End If
 
            Dim RequiredSize As Integer = 0
            Dim ptr = IntPtr.Zero
 
            SetupDiGetDeviceInterfaceDetail(DeviceInfoSet, DeviceInterfaceData, ptr, RequiredSize, RequiredSize, IntPtr.Zero) '1st call
 
            If (Marshal.GetLastWin32Error() <> ERROR_INSUFFICIENT_BUFFER) Then
                Debug.WriteLine("1st call of SetupDiGetDeviceInterfaceDetail: False, error: " & Marshal.GetLastWin32Error() & ", index: " & index)
                index += 1
                Continue Do
            End If
 
            ptr = Marshal.AllocHGlobal(RequiredSize) ' Выделяем память
            ' SP_DEVICE_INTERFACE_DETAIL_DATA::cbSize
            ' x86 = 6
            ' x64 = 8
            If (IntPtr.Size = 4) Then Marshal.WriteInt32(ptr, 6) Else Marshal.WriteInt32(ptr, 8)
            success = SetupDiGetDeviceInterfaceDetail(DeviceInfoSet, DeviceInterfaceData, ptr, RequiredSize, RequiredSize, IntPtr.Zero) '2nd call
 
            If (success = False) Then
                Debug.WriteLine("2nd call of SetupDiGetDeviceInterfaceDetail: False, error: " & Marshal.GetLastWin32Error() & ", index: " & index)
                Marshal.FreeHGlobal(ptr)
                index += 1
                Continue Do
            End If
 
            ' DevicePath
            Dim devicePath = Marshal.PtrToStringUni(New IntPtr(CType(ptr, Long) + 4), (RequiredSize - 4) / 2) ' 2 - sizeof(unicode char)
 
            Marshal.FreeHGlobal(ptr)
 
            index += 1
        Loop
        SetupDiDestroyDeviceInfoList(DeviceInfoSet)



1



dirt

2 / 2 / 0

Регистрация: 14.08.2013

Сообщений: 19

21.11.2013, 22:06

 [ТС]

Фух… Собирался несколько дней назад написать, но стыдно стало. NickoTin, благодаря вам моя жизнь уже не станет прежней, теперь я читаю (точнее перечитываю по десятому разу) всякие статьи и к своему удивлению начинаю понимать слова, которые в них написаны. Однако ж, побороть очередное препятствие я так и не сумел. Столько заморочек с этими APIшными функциями… Я в основном МК программлю-паяю, а для PC все на уровне хелловорлда, ну VBAшные макросы и SQL не в счет…
Собственно, к чему я затевал все это — да лампочками на клавиатуре помигать.
В связи с чем весь этот диалог — прелюдия к функциям CreateFile и DeviceIOControl, это будет завершительная часть марлезонского балета.
CreateFile, кажись, у меня работает, а DeviceIOControl не хочет. Выдает все время False, хотя при этом пару раз зажегся все-таки светодиод, правда не тот, что я хотел, да и как-то случайно это произошло.

Вот объявления:

Кликните здесь для просмотра всего текста

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    <DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> _
    Private Shared Function CreateFile(ByVal lpFileName As String, _
                                       ByVal dwDesiredAccess As UInt32, _
                                       ByVal dwShareMode As UInt32, _
                                       <[In](), [Optional]()> ByVal lpSecurityAttributes As IntPtr, _
                                       ByVal dwCreationDisposition As UInt32, _
                                       ByVal dwFlagsAndAttributes As UInt32, _
                                       <[In](), [Optional]()> ByVal hTemplateFile As IntPtr) As IntPtr
 
    <DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> _
    Private Shared Function DeviceIoControl(ByVal hDevice As IntPtr, _
                                            ByVal dwIoControlCode As UInt32, _
                                            <[In](), [Optional]()> ByVal lpInBuffer As KEYBOARD_INDICATOR_PARAMETERS, _
                                            ByVal nInBufferSize As UInt32, _
                                            <[Out](), [Optional]()> ByVal lpOutBuffer As IntPtr, _
                                            ByVal nOutBufferSize As UInt32, _
                                            <[Out](), [Optional]()> ByVal lpBytesReturned As UInt32, _
                                            <[Optional]()> ByVal lpOverlapped As IntPtr) As Boolean

Вот вызовы:

Кликните здесь для просмотра всего текста

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        KeyboardPointer = CreateFile(KeyboardPath, GENERIC_WRITE, FILE_SHARE_READ + FILE_SHARE_WRITE + FILE_SHARE_DELETE, IntPtr.Zero, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero)
        Debug.WriteLine("KeyboardPointer: " & KeyboardPointer.ToString)
 
        Dim IOCTL_KEYBOARD_SET_INDICATORS As UInt32 = &H8
        'IOCTL_KEYBOARD_SET_INDICATORS = CTL_CODE(FILE_DEVICE_KEYBOARD, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) 'вот здесь непонятно, как надо правильно?
        Debug.WriteLine("IOCTL_KEYBOARD_SET_INDICATORS: " & IOCTL_KEYBOARD_SET_INDICATORS.ToString)
 
        Dim KeyboardIndicators As KEYBOARD_INDICATOR_PARAMETERS
        KeyboardIndicators.UnitId = 0
        KeyboardIndicators.LedFlags = KEYBOARD_SCROLL_LOCK_ON
 
        Dim junk As UInt32 = 0
        success = DeviceIoControl(KeyboardPointer, IOCTL_KEYBOARD_SET_INDICATORS, KeyboardIndicators, Marshal.SizeOf(KeyboardIndicators), IntPtr.Zero, 0, junk, IntPtr.Zero)
        Debug.WriteLine("DeviceIoControl: " & success.ToString)
 
        success = CloseHandle(KeyboardPointer) 'а это надо вообще?
        Debug.WriteLine("CloseHandle: " & success.ToString)

Несколько дней бьюсь. Что ей не нравится?
Я видел несколько реализаций этой, вобщем-то, нетривиальной задачи, но не с клавиатурой или не на Basic.
Еще у меня есть уже написанный (точно так же — матом, потом и кровью) алгоритм с использованием keybd_event, но мне не нравится, как он работает, поэтому пробую через DeviceIOControl.



0



NickoTin

Почетный модератор

8724 / 3676 / 404

Регистрация: 14.06.2010

Сообщений: 4,513

Записей в блоге: 9

22.11.2013, 03:12

Вот тема: Как можно управлять лампочками (светодиодами) Num, Caps, Scroll
Там в конце есть код на C, где-то в середине на C# (не совсем некорректный).

Код который на C могу переписать, но только на C#. Там уже сами попробуете перевести на VB.NET (есть конвертеры), что не будет работать помогу. VB.NET для меня это муки

Добавлено через 2 минуты

Сообщение от dirt

<[In](), [Optional]()> ByVal lpInBuffer As KEYBOARD_INDICATOR_PARAMETERS, _

Сообщение от dirt

<[Out](), [Optional]()> ByVal lpBytesReturned As UInt32, _

Почему ByVal ?

Добавлено через 3 минуты

Сообщение от dirt

вот здесь непонятно, как надо правильно?

C#
1
const uint IOCTL_KEYBOARD_SET_INDICATORS = 0xB0008;

https://www.cyberforum.ru/post1226318.html (пост #8)

Сообщение от dirt

а это надо вообще?

Обязательно. Всё что открываете — закрывайте.



1



dirt

2 / 2 / 0

Регистрация: 14.08.2013

Сообщений: 19

26.11.2013, 21:52

 [ТС]

const uint IOCTL_KEYBOARD_SET_INDICATORS = 0xB0008;
Как можно управлять лампочками (светодиодами) Num, Caps, Scroll (пост #8)

Да, я это читал, и только сейчас заметил, что параметр IOCTL_KEYBOARD_SET_INDICATORS = 0xB0008 (ну т.е. &HB0008 для vb.net), а у меня было просто 8.

Кликните здесь для просмотра всего текста

Кстати, строка

VB.NET
1
IOCTL_KEYBOARD_SET_INDICATORS = CTL_CODE(FILE_DEVICE_KEYBOARD, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)

выдает то же самое значение (HB0008, или 720904 в десятичной СС).

Ну что же, попробовал с этим числом, и теперь светик зажигается, но сразу после этого на строке вызова DeviceIOControl выскакивает ошибка «попытка записи в защищенную память»
О чем может это говорить? Или просто забить и сделать вот так:

VB.NET
1
2
3
4
5
6
        Try
            success = DeviceIoControl(KeyboardPointer, IOCTL_KEYBOARD_SET_INDICATORS, KeyboardIndicators, Marshal.SizeOf(KeyboardIndicators), IntPtr.Zero, 0, 0, IntPtr.Zero)
            Debug.WriteLine("DeviceIoControl: " & success.ToString)
        Catch ex As Exception
            Debug.WriteLine(ex.Message.ToString & " Да и пофиг.")
        End Try

Но не кошерно же так…

Добавлено через 59 минут
Я не перестаю удивлять самого себя! Я разобрался опять сам. Хотя, вообще-то, я добился этого простым брутфорсингом, не понимая, что я делаю… Вобщем DeviceIOControl надо объявлять так:

VB.NET
1
2
3
4
5
6
7
8
9
    <DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> _
    Private Shared Function DeviceIoControl(ByVal hDevice As IntPtr, _
                                            ByVal dwIoControlCode As UInt32, _
                                            <[In](), [Optional]()> ByRef lpInBuffer As KEYBOARD_INDICATOR_PARAMETERS, _
                                            ByVal nInBufferSize As UInt32, _
                                            <[Out](), [Optional]()> ByRef lpOutBuffer As IntPtr, _
                                            ByVal nOutBufferSize As UInt32, _
                                            <[Out](), [Optional]()> ByRef lpBytesReturned As UInt32, _
                                            <[Optional]()> ByVal lpOverlapped As IntPtr) As Boolean

Были тонкости с ByVal и ByRef.



0



Почетный модератор

8724 / 3676 / 404

Регистрация: 14.06.2010

Сообщений: 4,513

Записей в блоге: 9

26.11.2013, 22:05

dirt, не надо читать ответы между строк:

Сообщение от NickoTin

Сообщение от dirt

<[In](), [Optional]()> ByVal lpInBuffer As KEYBOARD_INDICATOR_PARAMETERS, _

Сообщение от dirt

<[Out](), [Optional]()> ByVal lpBytesReturned As UInt32, _

Почему ByVal ?

Добавлено через 1 минуту

Сообщение от dirt

<[Out](), [Optional]()> ByRef lpOutBuffer As IntPtr, _

Опять же, почему здесь вдруг стало ByRef?



0



2 / 2 / 0

Регистрация: 14.08.2013

Сообщений: 19

26.11.2013, 22:16

 [ТС]

<[Out](), [Optional]()> ByRef lpOutBuffer As IntPtr, _
Опять же, почему здесь вдруг стало ByRef?

Хм, а ведь точно. Это я на радостях видимо не заметил. К ночи уже в глазах рябит от экспериментов с ByVal и ByRef, но главное хоть добился результата! Типы переменных вроде научился преобразовывать, а с прямой или ссылочной передачей параметра пока сложности. Спасибо вам огромнейшее, NickoTin!



0



Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Ошибка 0xc000035a при установке windows 10
  • Забивается память на диске с windows 10
  • Очистка диска windows 10 не удаляет обновления
  • Настройка docker desktop на windows
  • Mac address changer for windows