Einzelnen Beitrag anzeigen

Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#2

Re: mehrere Anwendungen in einem Fenster anzeigen.

  Alt 20. Jan 2010, 16:28
Du könntest die Handles suchen, und den Fenstern ein neues Parent zuweisen:
Delphi-Quellcode:
var
  Word, Excel: hWnd;
  Thread, WordThread, ExcelThread: Handle;
begin
  // Fenster suchen
  Word := FindWindow(nil,'Fenstertext');
  Excel := FindWindow(nil,'Fenstertext');
  // Parent setzen
  SetParent(Word, Form1.Handle);
  SetParent(Excel, Form1.Handle);
  // Threads suchen
  Thread := GetCurrentThreadID;
  WordThread := GetWindowThreadProcessId(Word,nil);
  ExcelThread := GetWindowThreadProcessId(Excel,nil);
  // Input verknüpfen
  AttachThreadInput(Thread,WordThread,true);
  AttachThreadInput(Thread,ExcelThread,true);
  // Fenster verschieben / Größe setzen
  MoveWindow(Word,0,0,500,500);
  MoveWindow(Excel,500,0,500,500);
  // Child-Style setzen
  SetWindowLong(Word,GWL_STYLE,GetWindowLong(Word,GWL_STYLE) or WS_CHILD);
  SetWindowLong(Excel,GWL_STYLE,GetWindowLong(Excel,GWL_STYLE) or WS_CHILD);
end;
[EDIT]
Falls du auch die Titelleisten weg haben willst:
SetWindowLong(Word,GWL_STYLE,GetWindowLong(Word,GWL_STYLE) and not (WS_CAPTION or WS_BORDER or WS_SIZEBOX));
  Mit Zitat antworten Zitat