AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Fenster von fremden Programm in eigener Form anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster von fremden Programm in eigener Form anzeigen

Ein Thema von DevilsCamp · begonnen am 20. Jul 2009 · letzter Beitrag vom 21. Jul 2009
Antwort Antwort
DevilsCamp
(Gast)

n/a Beiträge
 
#1

Fenster von fremden Programm in eigener Form anzeigen

  Alt 20. Jul 2009, 21:21
Eventuell ist der Titel nicht 100% so, wie ich es meine. Daher nochmal eine Erklärung:
Ich habe ein Programm zum Verwalten meiner PuTTY-Sessions (inkl. ClusterSSH-Funktion). Der Nachteil: Alle offenen PuTTY-Fenster sind eigenständig.

Ich weiß, dass es die Möglichkeit gibt, diese Fenster auch innerhalb meines eigenen Programms anzeigen zu lassen (so als MDI-Anwendung und Tabs usw). Beispiel habe ich hier im Forum gefunden und auch der PuTTY-Connection-Manager kann das.

Nun meine Frage: Wie muss ich den PuTTY-Prozess starten, so dass das Fenster nicht den Desktop als Parent hat, sondern z.B. eine TForm? CreateProcess scheint mir das keine Möglichkeit zu haben den Parent anzugeben und ShellExecute funktioniert leider nicht.

Danke im Voraus,
Marc
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Fenster von fremden Programm in eigener Form anzeigen

  Alt 20. Jul 2009, 22:12
Moin Marc,

wenn Du CreateProcess (oder ShellExecuteEx) verwendest, bekommst Du Daten über den gestarteten Prozess zurück, u.a. auch die die ThreadID des Hauptthreads.
Damit könntest Du dann EnumThreadWindows aufrufen, um an das Fenster zu kommen.
(nur als Idee, ob das funktioniert weiss ich nicht).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#3

Re: Fenster von fremden Programm in eigener Form anzeigen

  Alt 20. Jul 2009, 22:42
Das ist nicht, was ich möchte (das habe ich ja bereits). Ich möchte, dass mit ShellExecute(Ex) oder CreateProcess kein neues Fenster erstellt wird, sondern direkt auf meiner TForm, TPanel, o.ä. angezeigt wird.

Stell dir das Programm dann vor wie Firefox. Ich habe Tabs nur dass nicht Web-Seiten darin angezeigt werden, sondern PuTTY-Instanzen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Fenster von fremden Programm in eigener Form anzeigen

  Alt 20. Jul 2009, 22:47
Du brauchst aber doch die Fensterhandles. Mit Windows.SetParent könntest Du die dann z.B. in einem Pagecontrol bzw. dessen Tabsheets "einfangen" (ungetestete Behauptung).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#5

Re: Fenster von fremden Programm in eigener Form anzeigen

  Alt 20. Jul 2009, 22:52
Zitat von DeddyH:
Du brauchst aber doch die Fensterhandles. Mit Windows.SetParent könntest Du die dann z.B. in einem Pagecontrol bzw. dessen Tabsheets "einfangen" (ungetestete Behauptung).
so würde ich das auch machen. Anderer versuch ist, die Fenster auszublenden und dann Bildkopien anzuzeigen. Das funktioniert auf jeden fall, man kann aber NIX eingeben.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#6

Re: Fenster von fremden Programm in eigener Form anzeigen

  Alt 20. Jul 2009, 23:24
Zitat von rollstuhlfahrer:
Zitat von DeddyH:
Du brauchst aber doch die Fensterhandles. Mit Windows.SetParent könntest Du die dann z.B. in einem Pagecontrol bzw. dessen Tabsheets "einfangen" (ungetestete Behauptung).
so würde ich das auch machen. Anderer versuch ist, die Fenster auszublenden und dann Bildkopien anzuzeigen. Das funktioniert auf jeden fall, man kann aber NIX eingeben.

Bernhard
Danke, das funktioniert. Jetzt muss ich nur noch herausfinden, wie ich das PuTTY-Fenster zu einem Border-losen Fenster mache. Dazu suche ich aber erstmal in Forum/Google/andere Seiten.

Grüße,
Marc
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Fenster von fremden Programm in eigener Form anzeigen

  Alt 21. Jul 2009, 20:43
Moin Marc,

Zitat von DevilsCamp:
Jetzt muss ich nur noch herausfinden, wie ich das PuTTY-Fenster zu einem Border-losen Fenster mache.
schau Dir mal MSDN-Library durchsuchenSetWindowLong (bzw. MSDN-Library durchsuchenSetWindowLongPtr) und MSDN-Library durchsuchenSetWindowPlacement an.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz