Entwickler-Ecke
Windows API - Externe Anwendung in Panel 'einfangen'
grilly - So 15.04.07 21:37
Titel: Externe Anwendung in Panel 'einfangen'
Hallo
Ich arbeite zur zeit an einem Program das wie eine Art Windowsersatz für mich darstellen soll.
Wenn ich zb. Notepad starte möchte ich, dass sich der frame in einem panel oä. öffnet und auch dort drin bleibt.
Danke für alle konstruktiven Antworten!
Moderiert von
Christian S.: Topic aus Sonstiges (Delphi) verschoben am So 15.04.2007 um 21:37
Karlson - So 15.04.07 21:49
Delphi-Quelltext
1: 2: 3: 4: 5:
| var hw : hwnd; begin Hw:=FindWindow(nil,'Unbenannt - Editor'); if hw<>0 then Windows.SetParent(hw, Handle); end; |
Geht aber nur mit Forms, nicht mit Panels:
MDI ANWENDUNG
CHILDWINDOW
matze - So 15.04.07 22:16
Doch na klar geht das auch mit Panels.
Delphi-Quelltext
1: 2: 3: 4: 5:
| var hw : hwnd; begin Hw:=FindWindow(nil,'Unbenannt - Editor'); if hw<>0 then Windows.SetParent(hw, panel1.Handle); end; |
Karlson - So 15.04.07 22:28
Probier das mal aus...auf meinem Computer geht das nicht.
edit: Geht doch, mein problem beim testen war das die Grösse des Panels wohl nciht wesentlich kleiner sein darf als die Grösse des Fensters.
grilly - Mo 16.04.07 06:35
Wow, Danke für die schnellen antworten!
Ich hab das ganze jetzt mal so gelöst:
Delphi-Quelltext
1: 2: 3: 4: 5:
| shellexecute(1,'open','"C:\Programme\Mozilla Firefox\firefox.exe"','','',SW_show); sleep(100); panel1.SetFocus; Hw:=FindWindow(nil,'Mozilla Firefox'); if hw<>0 then Windows.SetParent(hw, panel1.Handle); |
Weiß jemand vllt noch zufällig wie ich die Titelleiste von dieser externen Anwendung wegmache?
Habe folgendes bei den Schweizern gefunden, kriege das aber nicht auch externe Anwendungen umgeschieben.^
http://www.swissdelphicenter.ch/de/showcode.php?id=11Moderiert von
matze: Code- durch Delphi-Tags ersetzt
Karlson - Mi 18.04.07 00:43
Du solltest dazu die Delphi-Hilfe oder das MSDN durchforsten. Und zwar nach den Begriffen
SETWINDOWLONG und
GETWINDOWLONG. Das ganze ist nicht so einfach allerdings. Und du wirst auch mehr als diese beiden Begriffe benötigen, allerdings stellt SetWindowlong den Einstieg ein. Von da an wirst genügeng Querverweise bekommen.
Schau dir den Code aus dem SDC an und versuche zu verstehen was er macht. Das kannst du dann portieren.
Die Variable Handle gegen die des zu skinnenden Fensters auszutauschen reicht nicht! Denn z.B. die Grössenveränderung in der vorletzten Zeile kannst du ja nur über einen API Befehl machen.
grilly - Mi 18.04.07 17:03
Danke ich werds probiern.
Wenn jemanden interssiert hier mal ein pic (schon a bissl älter und qualitätsverlust wegen .jpg):
Moderiert von
Tino: Screenshot von imageshack als Anhang eingefügt.
Taktaky - Do 20.09.07 11:16
Mit dem Code kann man das fremde Programm in Panel einbinden, bleibt jedoch beweglich!
wie kann man es fixieren und sein Titelleiste ausblenden?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!