Entwickler-Ecke

Windows API - Fenster nebeneinander?


Sy- - Fr 20.06.03 15:24
Titel: Fenster nebeneinander?
Das soll jetzt ein kleines prog sein, dass über ShellExecute 2x IE öffnet
bis dahin überhaupt kein prob
nur die fenster sollen nebeneinander angezeigt werden, wie wenn man mit rechtsklick auf die taskleiste geht und auf "nebeneinander" klickt

Die angaben bei ShellExecute wie breite usw ignoriert IE,
also sollte es eine Windows-API sein

Kann da jemand helfen?


Tino - Fr 20.06.03 16:57

Hallo!

Du solltest den IE mit CreateProcess starten. Durch bekommst du das Handle der Anwendung/Fenster. Mit diesem Handle kannst du dann die Fensterposition und -größe setzen. Beispiele sollte es hier im Forum geben.

Gruß
Tino


Sy- - Fr 20.06.03 17:25

so hab ichs:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
function RunProcess(FileName: string): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb          := SizeOf(StartupInfo);
  StartupInfo.dwFlags     := STARTF_USEPOSITION and STARTF_USESHOWWINDOW and STARTF_USESIZE;
  startupinfo.dwX:=0;
  startupinfo.dwY:=0;
  StartupInfo.wShowWindow := SW_SHOWDEFAULT;
  startupinfo.dwXSize:=150;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED;

  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RunProcess('C:\Programme\Internet Explorer\IExplore.exe');
halt;
end;


Doch er übernimmt die größe nicht. IE startet mit der selben größe wie mit der beendet wurde :roll:

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


Sy- - Sa 21.06.03 11:49

würde es auch einfach gehen, dass er in einem fram das prog startet?


Tino - Sa 21.06.03 12:01

Sy- hat folgendes geschrieben:
Doch er übernimmt die größe nicht
IE startet mit der selben größe wie mit der beendet wurde :roll:

Das Problem ist das der IE nach dem Starten seine Größe und Position selbst wieder die Werte vom letzten Start setzt.

Du musst also nach dem Start mit CreateProcess die Fensterposition und -größe setzen.

Gruß
Tino


Sy- - Sa 21.06.03 12:10

wie sieht da der quelltext aus ein externen fenster zu verändern?

Am besten wäre es wenn ich IE einfach 2x in einem fenster reinbekommen würde