2009-03-19 8 views
0

Wenn ich ein Handle zu einem Fenster habe, wie mache ich einen Screenshot von einem neuen Kind Fenster, wenn sie auftauchen? Momentan habe ich einen Code, der alle 0,1 Sekunden eines Windows-Formulars einen Screenshot erstellt. Wenn ich auf ein Dropdown-Listenfeld klicke, enthalten die folgenden Screenshots es nicht. Mit spy ++ kann ich sehen, dass ein neues untergeordnetes Fenster erstellt wurde, aber nicht sicher ist, wie ich sicherstellen kann, dass es in meinen Screenshots enthalten ist. Hat jemand Code, der untergeordnete Fenster enthalten könnte?Getting screenshot von Kind Fenster

Vielen Dank im Voraus,

Bob

+1

Mit welcher Technik erstellen Sie den Screenshot? Haben Sie versucht, form.DrawToBitmap zu verwenden? – stuartd

Antwort

1

Ja, der Drop-Down einer ComboBox ein spezielles Fenster, ein LISTBOX. .NET bietet keine integrierte Möglichkeit, das Handle dafür zu erhalten. Sie können SendMessage P aufrufen und die Nachricht CB_GETCOMBOBOXINFO senden. COMBOBOXINFO.hwndList enthält das Handle.

Beachten Sie, dass es andere Steuerelemente gibt, die sich auf diese Weise verhalten, beispielsweise DateTimePicker. Beachten Sie außerdem, dass sich das Fenster über die Grenzen Ihres Formulars hinaus erstrecken kann. Der Code in this thread sollte hilfreich sein, um das P/Invoke-Recht zu erhalten.