delphi - 从模态对话框中神秘地执行主窗体事件处理程序-以及其他错误

标签 delphi crash modal-dialog

将Delphi 2009应用程序从Windows 2003 / Citrix环境迁移到64位Windows 2008 R2环境(用户现在使用RDP代替Citrix)后,现在出现运行时错误,指示“无法创建可见的窗口模式”

用户打开模式表格。然后以某种方式触发以主形式分配给菜单项的事件处理程序。根据调用堆栈,用户似乎可以通过按其快捷方式来调用菜单项。

madExcept堆栈跟踪如下所示:

main thread ($2dc):
004ffa88 +06c Ladelist.exe Forms            TCustomForm.ShowModal
0052f4ff +0bb Ladelist.exe DB               TDataSet.SetActive
008fc9a1 +089 Ladelist.exe u_ladeli 928 +16 TForm1.EditLoadingList
008fadec +070 Ladelist.exe u_ladeli 504  +5 TForm1.OpenLoadingListClick <- second
004d6e27 +0a7 Ladelist.exe Menus            TMenuItem.Click
004d857f +0ef Ladelist.exe Menus            DoClick
004d866b +087 Ladelist.exe Menus            TMenu.IsShortCut
005001c1 +04d Ladelist.exe Forms            TCustomForm.IsShortCut
004e8dc0 +068 Ladelist.exe Controls         TWinControl.IsMenuKey
004e8f89 +011 Ladelist.exe Controls         TWinControl.CNSysKeyDown
004e247e +2d2 Ladelist.exe Controls         TControl.WndProc
004e6983 +513 Ladelist.exe Controls         TWinControl.WndProc
004fb5e8 +594 Ladelist.exe Forms            TCustomForm.WndProc
004e20a4 +024 Ladelist.exe Controls         TControl.Perform
004856e0 +014 Ladelist.exe Classes          StdWndProc
004e609c +02c Ladelist.exe Controls         TWinControl.MainWndProc
004856e0 +014 Ladelist.exe Classes          StdWndProc
775b00e3 +02b ntdll.dll                     KiUserCallbackDispatcher
008fc9a1 +089 Ladelist.exe u_ladeli 928 +16 TForm1.EditLoadingList
008fadec +070 Ladelist.exe u_ladeli 504  +5 TForm1.OpenLoadingListClick <- first
004d6e27 +0a7 Ladelist.exe Menus            TMenuItem.Click
004d857f +0ef Ladelist.exe Menus            DoClick
004d866b +087 Ladelist.exe Menus            TMenu.IsShortCut
005001c1 +04d Ladelist.exe Forms            TCustomForm.IsShortCut
004e8dc0 +068 Ladelist.exe Controls         TWinControl.IsMenuKey
004e8e0d +01d Ladelist.exe Controls         TWinControl.CNKeyDown
004e247e +2d2 Ladelist.exe Controls         TControl.WndProc
004e6983 +513 Ladelist.exe Controls         TWinControl.WndProc
004fb5e8 +594 Ladelist.exe Forms            TCustomForm.WndProc
004e20a4 +024 Ladelist.exe Controls         TControl.Perform
004e609c +02c Ladelist.exe Controls         TWinControl.MainWndProc
004856e0 +014 Ladelist.exe Classes          StdWndProc
775b00e3 +02b ntdll.dll                     KiUserCallbackDispatcher
753c3675 +010 kernel32.dll                  BaseThreadInitThunk

第二个例子:
main thread ($4c94):
004ffa88 +06c Ladelist.exe Forms                    TCustomForm.ShowModal
0052f4ff +0bb Ladelist.exe DB                       TDataSet.SetActive
008fc9a1 +089 Ladelist.exe u_ladeli         928 +16 TForm1.EditLoadingList
008fbacd +085 Ladelist.exe u_ladeli         765 +11 TForm1.SearchShipmentClick
004d6e27 +0a7 Ladelist.exe Menus                    TMenuItem.Click
004d857f +0ef Ladelist.exe Menus                    DoClick
004d866b +087 Ladelist.exe Menus                    TMenu.IsShortCut
005001c1 +04d Ladelist.exe Forms                    TCustomForm.IsShortCut
004e8dc0 +068 Ladelist.exe Controls                 TWinControl.IsMenuKey
004e8f89 +011 Ladelist.exe Controls                 TWinControl.CNSysKeyDown
004e247e +2d2 Ladelist.exe Controls                 TControl.WndProc
004e6983 +513 Ladelist.exe Controls                 TWinControl.WndProc
004fb5e8 +594 Ladelist.exe Forms                    TCustomForm.WndProc
004e20a4 +024 Ladelist.exe Controls                 TControl.Perform
004856e0 +014 Ladelist.exe Classes                  StdWndProc
004e609c +02c Ladelist.exe Controls                 TWinControl.MainWndProc
004856e0 +014 Ladelist.exe Classes                  StdWndProc
772b00e3 +02b ntdll.dll                             KiUserCallbackDispatcher
008fc9a1 +089 Ladelist.exe u_ladeli         928 +16 TForm1.EditLoadingList
008fadec +070 Ladelist.exe u_ladeli         504  +5 TForm1.OpenLoadingListClick
004d6e27 +0a7 Ladelist.exe Menus                    TMenuItem.Click
004d857f +0ef Ladelist.exe Menus                    DoClick
004d866b +087 Ladelist.exe Menus                    TMenu.IsShortCut
005001c1 +04d Ladelist.exe Forms                    TCustomForm.IsShortCut
004e8dc0 +068 Ladelist.exe Controls                 TWinControl.IsMenuKey
004e8e0d +01d Ladelist.exe Controls                 TWinControl.CNKeyDown
0067ead1 +03d Ladelist.exe cxControls               TcxControl.CNKeyDown
007b2351 +019 Ladelist.exe cxGridCustomView         TcxGridSite.CNKeyDown
004e247e +2d2 Ladelist.exe Controls                 TControl.WndProc
004e885c +01c Ladelist.exe Controls                 TWinControl.WMNCHitTest
004e247e +2d2 Ladelist.exe Controls                 TControl.WndProc
004e6983 +513 Ladelist.exe Controls                 TWinControl.WndProc
0067ef6c +11c Ladelist.exe cxControls               TcxControl.WndProc
007b2b1f +01b Ladelist.exe cxGridCustomView         TcxGridSite.WndProc
004e609c +02c Ladelist.exe Controls                 TWinControl.MainWndProc
004856e0 +014 Ladelist.exe Classes                  StdWndProc
772b00e3 +02b ntdll.dll                             KiUserCallbackDispatcher
76973675 +010 kernel32.dll                          BaseThreadInitThunk

更新:

现在已安装Windows Server 2008 R2 Service Pack 1。但是,同样的奇怪错误也会发生。我们还经常出现以下错误:
exception class   : EAccessViolation
exception message : Zugriffsverletzung bei Adresse 5E9E19ED in Modul 'audiodev.dll'. Schreiben von Adresse 5E9E19ED.

thread $3068:
5e9e19ed +00 audiodev.dll
0045146d +0d PDFView.exe  madExcept CallThreadProcSafe
00451b77 +37 PDFView.exe  madExcept UserWorkItemExceptFrame
75543398 +10 kernel32.dll           BaseThreadInitThunk


exception class   : EAccessViolation
exception message : Zugriffsverletzung bei Adresse 74DC1E3D in Modul 'wkscli.dll'. Schreiben von Adresse 74DC1E3D.

thread $1eb8:
74dc1e3d +000 wkscli.dll
758e0165 +160 RPCRT4.dll             NdrClientCall2
74dc2dce +032 wkscli.dll             NetWkstaGetInfo
6a142162 +007 ntlanman.dll           NPOpenEnum
6a1a2f9a +094 MPR.dll                WNetOpenEnumW
0045146d +00d PDFView.exe  madExcept CallThreadProcSafe
00451b77 +037 PDFView.exe  madExcept UserWorkItemExceptFrame
77193398 +010 kernel32.dll           BaseThreadInitThunk


exception message : Zugriffsverletzung bei Adresse 70841F8E in Modul 'olmapi32.dll'. Schreiben von Adresse 70841F8E.

main thread ($5978):
70841f8e +000 ???
005cade0 +654 PDFView.exe  JclMapi      65 +0 TJclEmail.InternalSendOrSave
005cb140 +004 PDFView.exe  JclMapi      65 +0 TJclEmail.Send



异常类:EAccessViolation
异常消息:Modul'wpdshext.dll'中的Zugriffsverletzung be Adresse 565014FD。 Schreiben von Adresse 565014FD。

3960美元线程:
565014fd +00 wpdshext.dll
76efc511 + 4c SHLWAPI.dll QI搜索
0045146d + 0d PDFView.exe madExcept CallThreadProcSafe
00451b77 +37 PDFView.exe madExcept UserWorkItemExceptFrame
77193398 +10 kernel32.dll BaseThreadInitThunk

看起来这些与该应用程序中Acrobat(X版)ActiveX控件的使用有关,因此我将朝这个方向进行研究。但是,上面原始问题报告中的错误出现在不使用Acrobat的应用程序中。

最佳答案

哦!!我只是在Windows 2008上遇到了这个问题。它发现这是Windows问题,世界各地的其他用户都对此进行了报道。 Microsoft已发布了一些修复程序,但没有一个能按预期工作。最终,Microsoft发布了SP1,现在它可以发挥作用了。

因此,请安装Windows 2008 R2 SP1
Windows 2008 R2 bug fixes

关于delphi - 从模态对话框中神秘地执行主窗体事件处理程序-以及其他错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5242938/

相关文章:

javascript - 如何用类关闭 jquery 对话框?

C# 窗体 : Multiple top level windows and ShowDialog()

android - Delphi Firemonkey 移动版中的自定义备忘录或文本选择?

delphi - TObjectList E2003 未声明的标识符 TObjectList<>

c++ - 将 CByteArray 复制到字节数组会导致访问冲突

android - Timepicker 似乎在使用 Android 版本 6.0.1 的三星设备上使我的应用程序崩溃

jquery - 隐藏在模式弹出窗口后面的日期选择器和其他弹出窗口

delphi - Chau Chee Yang 的 dbExpress 和 XE2 Enterprise dbExpress for Firebird 的兼容性如何?

firebase - Firestore 身份验证用户

android - 从我的 android 应用程序读取 android 设备日志