zufällig ist mir beim Testen was krasses aufgefallen und zwar habe ich diesen Code so angepasst, dass der Code dafür sorgt, dass sich Windows komplett aufhängt. Der Mauscursor lässt sich nicht mehr bewegen und der Task-Manager kann auch nicht mehr aufgerufen werden. Einzige Lösung ist ein Hardware-Reset.
Achtung: Den folgenden Code bitte nur in einer VM testen:
Code: Alles auswählen
EnableExplicit
Define Handle
RunProgram("notepad.exe")
Delay(100)
Handle = FindWindow_("Notepad", 0)
If Handle
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered, Handle)
If ContainerGadget(1, 0, 0, WindowWidth(0), WindowHeight(0), 0)
SetParent_(Handle, GadgetID(1))
CloseGadgetList()
EndIf
SetActiveWindow(0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
EndIf
Mir ist klar, dass es sinnfrei ist, eine externe Anwendung als ParentWindow festzulegen und gleichzeitig mit SetParent_() in sein eigenes Fenster einzubinden, aber was ich nicht verstehe ist, warum man mit so einem einfachen Code schafft, Windows zum Absturz zu bringen, so dass Windows überhaupt nicht mehr reagieren kann.
Das sollte eigentlich nicht sein und sowas darf nicht passieren. Getestet unter Windows 10 und 7.