Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#1

Mysteriöser Hauptmenübefehl-Aufruf aus modalem Dialog reproduzierbar (Win 2008 Bug)

  Alt 16. Mär 2011, 08:40
Hallo,

Dieser Stack Trace ist überraschend, denn er ist progammseitig nur möglich, wenn es gelingt aus einem modalen Dialog heraus einen Menüpunkt aufzurufen, der sich im Menü des dahinter liegenden (also inaktiven) Hauptformulars befindet.

Meine Frage ist, wie kann man diesen Fall gezielt reproduzieren? Da er relativ selten im Echteinsatz auftritt, und mir im manuellen Test (im Produktivsystem) mir noch nicht begegnet ist, überlege ich nun wie diesen Aufruf eines Menüpunktes nachbauen kann. Wenn ich auf den modalen Dialog einen Button setze, der eine passende Windows Message an den Menüpunkt sendet, würde der Menübefehl dann ausgeführt?

Die Fehlermeldung ist: Aus einem sichtbaren Fenster kann kein modales gemacht werden

Code:
main thread ($4c94):
004ffa88 +06c Ladelist.exe Forms                   TCustomForm.ShowModal      <--- Fehler
0052f4ff +0bb Ladelist.exe DB                      TDataSet.SetActive
008fc9a1 +089 Ladelist.exe u_ladeli        928 +16 TForm1.EditLoadingList     <--- gleicher modaler Dialog
008fbacd +085 Ladelist.exe u_ladeli        765 +11 TForm1.SearchShipmentClick <--- Klick auf Menüpunkt im dahinter liegenden Hauptformular der Anwendung
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      <-- öffnet modalen Dialog
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
Michael Justin

Geändert von mjustin (17. Mär 2011 um 05:33 Uhr) Grund: Bug reproduzierbar
  Mit Zitat antworten Zitat