Das wird ja von der NSPlugin-Architektur geregelt. Es gibt übrigens auch ein Framework, um mit Delphi Mozilla-Plugins zu bauen. Vielleicht sollte man das mal nach Lazarus portieren.NicoOD hat geschrieben:@all: Also der Vergleich mit dem Browser ist nur entstanden, da man ja z.B. eine Seite mit - sagen wir mal - 20 Frames erstellen kann, die wiederum z.B. jeweils einen Flash-Video eingebunden haben. Eine Instanz vom Flash-Player wird in jedem Frame einzeln gestartet, wobei sich der Player auch jeweils an die Frame-Maße (Auflösung) anpassen muß. Und da geht das ja auch...
Programm im Programm?
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Programm im Programm?
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Programm im Programm?
Das ist was anders. Der Browser bietet eine Schnittstelle an: Die Plugins. Du kannst für FireFox auch eigene Plugins schreiben. Sogar mit Lazarus. Habe da einige Links gefunden(weiß nicht ob ich sie noch habe). Tatsache ist jedoch: eine Programm unter Linux oder Windows die keine Schnittelle dafür anbietet wird das kaum oder nur sehr schwer machbar sein.@all: Also der Vergleich mit dem Browser ist nur entstanden, da man ja z.B. eine Seite mit - sagen wir mal - 20 Frames erstellen kann, die wiederum z.B. jeweils einen Flash-Video eingebunden haben. Eine Instanz vom Flash-Player wird in jedem Frame einzeln gestartet, wobei sich der Player auch jeweils an die Frame-Maße (Auflösung) anpassen muß. Und da geht das ja auch...
Eine Lösung wäre natürlich, wenn es API Funktionen dafür gibt. Aber ich frage mich: Wozu das ganze?
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Programm im Programm?
Auch wenn das u.U. mal wieder ziemlich Praxis-fremd ist: Die Sache mit dem Browser geht tatsächlich. Es muss dann lokal im Hintergrund ein Web-Server laufen und beide "Programme" müssen CGIs sein. Das "Äußere" ruft das "inneren" z.B. in einem iframe auf.
-Michael
-Michael

-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Programm im Programm?
Ich glaube das hat er meint. Aber kann man von Programm in Programm sprechen? Die Programme "Unterhalten" sich doch nur oder? Oder kann das zweite Programm auch im Ersten Programm angezeigt werden(Grafisch)?Es muss dann lokal im Hintergrund ein Web-Server laufen und beide "Programme" müssen CGIs sein. Das "Äußere" ruft das "inneren" z.B. in einem iframe auf.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6
- Registriert: Fr 8. Apr 2011, 08:38
- OS, Lazarus, FPC: WinXP Prof. / Win2k (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
Re: Programm im Programm?
Die Idee ist auch nicht schlecht...mschnell hat geschrieben:Auch wenn das u.U. mal wieder ziemlich Praxis-fremd ist: Die Sache mit dem Browser geht tatsächlich. Es muss dann lokal im Hintergrund ein Web-Server laufen und beide "Programme" müssen CGIs sein. Das "Äußere" ruft das "inneren" z.B. in einem iframe auf.

Nein, so habe ich das nicht ganz gemeint.pluto hat geschrieben:Ich glaube das hat er meint. Aber kann man von Programm in Programm sprechen? Die Programme "Unterhalten" sich doch nur oder? Oder kann das zweite Programm auch im Ersten Programm angezeigt werden(Grafisch)?
Also, hier mal ein Update:
Ich habe mit dem folgenden Befehl (Dank Google-Suche und dem Hinweis von Bora4d) mit Delphi unter WinXP den Windows-Rechner in mein TPanel ("CapPanel") eingefangen (vorrausgesetzt, der Rechner ist geöffnet und heißt auch "Rechner"):
Code: Alles auswählen
windows.SetParent(findwindow(nil,PCHar('Rechner')),MainForm.CapPanel.Handle);
Jetzt muß ich das ganze nur noch Lazarus und meinem WinCE 5.0 beibringen. Dann bin ich in dieser Sache ja auch schon zufrieden...

Da ich aber gerade 'ne Zahn-OP hinter mir habe, war mir gerade nicht wirklich so danach...
Aber, es wird weitergehen...
Vielen Dank erstmal für Eure Hilfestellungen!!
Gruß -
Nico ;o)
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Programm im Programm?
Nicht schlecht. Wusste gar nicht, dass sowas überhaupt so einfach Möglich ist.
Theoretisch sollte das auch so unter Linux gehen. Ich teste das mal eben.
Theoretisch sollte das auch so unter Linux gehen. Ich teste das mal eben.
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Programm im Programm?
Ich habe diesen Link gefunden:
http://edn.embarcadero.com/article/27395" onclick="window.open(this.href);return false;
und daraus habe ich diese Unit gebastelt:
Vielleicht möchte das ja jemand weiter verfolgen *G*... Kompiliert tut er das schon mal.
http://edn.embarcadero.com/article/27395" onclick="window.open(this.href);return false;
und daraus habe ich diese Unit gebastelt:
Code: Alles auswählen
unit unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
Buttons, LCLType, LCLProc, LCLIntf, gtk, xlib, gtk2, gdk, gpm, gtk2proc,x, libc;
type
{ TForm1 }
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
function XFetchName(Display: PDisplay; W: TWindow; WindowNameReturn: PPChar): TStatus; cdecl;
function XQueryTree(Display: PDisplay; W: TWindow; RootReturn: PWindow; ParentReturn: PWindow; _para5: PPWindow; NChildrenReturn: PCardinal): TStatus;
var
Form1: TForm1;
implementation
{ TForm1 }
{ FindWindow Function
Derived from an original C source by Brian Paul. Released
to public domain.
Kylix Translation: Matthias Thoma
Input: dpy - the X display
scr - the X screen number
start - where to start search, usually root window
name - the window name to search for
}
function FindWindow(Display: PDisplay; Screen: Integer; Start: TWindow; Name: PChar): TWindow;
type
AChildren = array[0..0] of TWindow;
PChildren = ^AChildren;
var
stat: TStatus;
n: Integer;
num: Cardinal;
w: TWindow;
root: TWindow;
parent: TWindow;
Children: PChildren;
Title: PChar;
begin
if (XFetchName(Display, Start, @Title) = 1) then
begin
if (strcmp(Name, Title )=0) then
begin
XFree(Title);
Result := Start;
Exit;
end;
XFree(Title);
end;
stat := XQueryTree(Display, start, @root, @parent, @children, @num);
if (stat = 1) then
begin
{ search each child window for a match: }
for n := num-1 downto 0 do
begin
if (XFetchName(Display, start, @title )=1) then
begin
if (strcmp(name, title)=0) then
begin
{ found it }
XFree(Title);
Result := Start;
Exit;
end;
XFree(Title);
end;
end;
{ search the descendents of each child for a match: }
for n := num-1 downto 0 do
begin
w := FindWindow(Display, Screen, Children^[n], Name);
if (w <> 0) then
begin
XFree(Children);
Result := w;
Exit;
end;
end;
if (children <> Nil) then
begin
XFree(Children);
end;
end;
Result := 0;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
// FindWindow(,XDefaultScreen(QtDisplay),XDefaultRootWindow(QtDisplay),'Kylix') <> 0;
end;
initialization
{$I unit1.lrs}
end.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 290
- Registriert: Mo 24. Dez 2007, 13:14
- OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
- CPU-Target: AMD64X2
Re: Programm im Programm?
Ich könnte den ganzen Code geben aber habe nicht mehr. Ich hatte letzten Sommer meine Partition mit der ARbeit von 15 Jahren überschrieben weil ich mal wieder beschies..... Linux ausprobieren wollte.NicoOD hat geschrieben: Also, das was Du da schreibst, Bora4d, klingt echt sehr interessant. Kannst Du mir da ein wenig unter die Arme greifen? Wenn man das fremde Programm (der Name ist beim Aufruf dann schon bekannt) in einem TPanel ablaufen lassen kann, wäre das DER Hit! So in der Art habe ich mir das auch vorgestellt...
Zuerst würde ich das dann auch in deiner Win32-Umgebung (WinXP) versuchen. Entweder mit Delphi, oder mit Lazarus.
Später kann man das ja immer noch versuchen auf WinCE zu übertragen.
Hast Du den Code davon noch? Ich möchte nicht alles abkupfern, nur mir Anregungen holen. Da geht das Lernen (bei mir) wesentlich schneller...
Ich hatte herumprobiert wie Tabbed-Windowoberfläche aussehen würde. Ich hatte den Bildschirm in 3 Bereiche geteilt rechts und unten kleine Bereich wo Hilfsprogramme plaziert werden oben Links große Bereich wo Hauptprogramme erscheinen. Nun zu deinem Problem ich sehe du hast es schon einiges gelöst. Vielleicht helfen dir diese Sachen weiter:
1. Alle geöffneten Fensterhandles bekommst du mit Windows.EnumWindows. Wenn ein Fenster als Vorgänger (Parent) DesktopWindow hat und bei GWL_ExStyle-Eigenschaft die Attribute WS_EX_TOOLWINDOW nicht hat dann ist es Hauptfenster.
2. Wenn du ein bestimmtes Programm einbetten willst dan Starte es mit TProcess und bette danach ein. Weil ansonsten bekommst du nicht mit ob das Programm beendet wird. Und mit Timer zu kontrollieren ob das Programm noch läuft ist kein gute Lösung. Hier sind Beispiele für TProcess:
http://wiki.lazarus.freepascal.org/Exec ... rograms/de
Aber viel bessere Lösung ist das was Windows Task Leiste auch verwendet WH_SHELL Hook. Damit wird dein Programm automatisch über neu erstelltes und zerstörtes (PRogramm beenden) oder Fokusänderung.... von Fenster benachrichtigt. Und du Bekommst nur Handle von Hauptfenster.
Leider funktioneren die DLLs die mit Delphi erstellt werden indem Fall nicht. In dem Theme ist Internet ist voll mit Fragen von frustierten Delphi-Programmierern.
Ich habe auch nach Tagen erfolglose DLL erstellung bei Torry ein fertiges dll-gefungen. Packe hier als Anhang. Quelltext liegt bei vielleicht gelingt es dir mit mit Freepascal funktionierende dll zu erstellen. Der Junge hat auch aus dem Grunde nur dll mit C-Programmiert als andere in Delphi.
Da liegt auch ein Bespielspielprogramm dort kannst du z.b. jedes neues FEnster in dein Panel einbetten und wieder entfernen achte auf HSHELL_WINDOWCREATED, HSHELL_WINDOWDESTROYED Messages.
Edit:
Ob ShellHooks mit WinCE funktionieren weiß ich nicht deshalb würde ich erst in WinCE-Api danach gucken. Wenn du in windows.pas von WinCE die Funktion ShellProc und Message WH_SHELL findest mußte es funktionieren. Ich habe nie WinCE verwendet außer einmal zu schauen ob Lazarus wirklich WinCE programme erstellen kann. Also ein Paar Buttons kompilieren ausführen fertig

Edit2:
Vielleicht kennst du es auch aber bei Schweizer gibts gute tipps:
http://www.swissdelphicenter.ch/de/system.php
http://www.delphi-treff.de/tipps/system/


Torry.net ist momentan down deshalb hast du die Biblothek hier:
- Dateianhänge
-
wm_Shell_hook.rar
- Shellhook.dll, Source+Examples von torry.net
(Freeware) - (57.29 KiB) 93-mal heruntergeladen
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Programm im Programm?
Geht vielen soBora4d hat geschrieben:Ich hatte letzten Sommer meine Partition mit der ARbeit von 15 Jahren überschrieben weil ich mal wieder beschies..... Linux ausprobieren wollte.

Weil viele denken, die Festplatten im Computer heißen wirklich C:, D: und E:
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Programm im Programm?
Wenn man kein Backup hat darf man sich nicht wundern.
Zu Hause habe ich einen Linux-Server, auf dem alle Daten der Familie gespeichert werden. Stromvberbrauch gering Hardware ca. € 200: Software € 0. Dazu kommen natürlich Kabel und Switche.
Der macht automatisch in der Nacht ein Komplett-Backup auf eine USB-Platte (Software. Dirvish, € 0, Funbktionalität: genial, Bedienung (nach Installation): super einfach: Für jeden Tag gibt es ein Directory mit der kompletten Datei-Struktur, das auch man auf einem Windows-Rechner lesen kann).
Seit ein paar Wochen habe ich die USB-Backup-Platte mit einem alten "Slug" (Debian-Linux auf kleiner ARM-Hardware, Stromverbrauch und Kosten fast Null) in den Keller verlagert für den Fall, dass die Hütte abbrennt.
Linux macht's möglich.
-Michael
Zu Hause habe ich einen Linux-Server, auf dem alle Daten der Familie gespeichert werden. Stromvberbrauch gering Hardware ca. € 200: Software € 0. Dazu kommen natürlich Kabel und Switche.
Der macht automatisch in der Nacht ein Komplett-Backup auf eine USB-Platte (Software. Dirvish, € 0, Funbktionalität: genial, Bedienung (nach Installation): super einfach: Für jeden Tag gibt es ein Directory mit der kompletten Datei-Struktur, das auch man auf einem Windows-Rechner lesen kann).
Seit ein paar Wochen habe ich die USB-Backup-Platte mit einem alten "Slug" (Debian-Linux auf kleiner ARM-Hardware, Stromverbrauch und Kosten fast Null) in den Keller verlagert für den Fall, dass die Hütte abbrennt.
Linux macht's möglich.
-Michael
-
- Beiträge: 290
- Registriert: Mo 24. Dez 2007, 13:14
- OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
- CPU-Target: AMD64X2
Re: Programm im Programm?
Forbidden
You don't have permission to access /posting.php on this server.
..
Wird der Server von Linux betrieben
)
Das oben zeigt er wenn ich mein Original beitrag angebe.
Ich kenne mich schon mit Linux-system aus hatte Lustigen-Beitrag geschreiben aber das oben zeigt es an.
You don't have permission to access /posting.php on this server.
..
Wird der Server von Linux betrieben

Das oben zeigt er wenn ich mein Original beitrag angebe.
Ich kenne mich schon mit Linux-system aus hatte Lustigen-Beitrag geschreiben aber das oben zeigt es an.
-
- Beiträge: 290
- Registriert: Mo 24. Dez 2007, 13:14
- OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
- CPU-Target: AMD64X2
Re: Programm im Programm?
Pinguin-User benutzen für jeden Zweck ein eigenen PC mit speziellen Distro, Erfahrene Windof-User benutzen für alles ein PC mit ein BS ohne Datensicherung und VIrenscanner und es passiert 17 Jahre nichts schlimmes, es sei denn sie installieren NochEinDistroMitBesserenLogoWeilAlteLogoSchlechtAussah.mschnell hat geschrieben:Wenn man kein Backup hat darf man sich nicht wundern.
Zu Hause habe ich einen Linux-Server, auf dem alle Daten der Familie gespeichert werden. Stromvberbrauch gering Hardware ca. € 200: Software € 0. Dazu kommen natürlich Kabel und Switche.
Der macht automatisch in der Nacht ein Komplett-Backup auf eine USB-Platte (Software. Dirvish, € 0, Funbktionalität: genial, Bedienung (nach Installation): super einfach: Für jeden Tag gibt es ein Directory mit der kompletten Datei-Struktur, das auch man auf einem Windows-Rechner lesen kann).
Seit ein paar Wochen habe ich die USB-Backup-Platte mit einem alten "Slug" (Debian-Linux auf kleiner ARM-Hardware, Stromverbrauch und Kosten fast Null) in den Keller verlagert für den Fall, dass die Hütte abbrennt.
Linux macht's möglich.
-Michael

-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Programm im Programm?
Sowas gibt es?Erfahrene Windof-User benutzen für alles ein PC
Letzten in der Zeitung habe ich von einem Fall gelesen: Dort war auf einem PC über 3000 verschiedene Viren drauf. *G*. Der PC wurde ohne Sicherheits Software betrieben.
Unter Linux brauche ich zum Glück sowas nicht...
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 290
- Registriert: Mo 24. Dez 2007, 13:14
- OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
- CPU-Target: AMD64X2
Re: Programm im Programm?
Wurde schonmal Armenhaus oder Suppenkeller überfallen?pluto hat geschrieben:Sowas gibt es?Erfahrene Windof-User benutzen für alles ein PC
Letzten in der Zeitung habe ich von einem Fall gelesen: Dort war auf einem PC über 3000 verschiedene Viren drauf. *G*. Der PC wurde ohne Sicherheits Software betrieben.
Unter Linux brauche ich zum Glück sowas nicht...

So das war mein letzter Beitrag dazu wir wolllen ja das Thema nicht zumüllen.