Autor Beitrag
Sy-
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 177



BeitragVerfasst: Fr 20.06.03 15:24 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 177



BeitragVerfasst: Fr 20.06.03 17:25 
so hab ichs:
ausblenden volle Höhe 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 177



BeitragVerfasst: Sa 21.06.03 11:49 
würde es auch einfach gehen, dass er in einem fram das prog startet?
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 177



BeitragVerfasst: 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