Entwickler-Ecke

Windows API - Prozess minimiert starten mit CreateProcess


mk2 - Mi 28.09.05 20:04
Titel: Prozess minimiert starten mit CreateProcess
Hallo,

ich möchte ein Programm mit CreateProcess starten und zwar minimiert. Wie das mit dem minimieren theoretisch geht, hab ich verstanden -glaub ich- , nur leider funktioniert's nicht., das programm startet zwar aber nicht minimiert. Naja, hier ist jedenfalls der Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
  
  //...
  FillChar(proc_infoVST, sizeof(TProcessInformation), 0);
  FillChar(startinfoVST, sizeof(TStartupInfo), 0);
  startinfoVST.cb := sizeof(TStartupInfo);
  startinfoVST.dwFlags := STARTF_USESHOWWINDOW;
  startinfoVST.wShowWindow:= SW_SHOWMINNOACTIVE;
  if CreateProcess(nil'c:\temp\lm-9\lm-9.exe'nil,
      nil, false, CREATE_DEFAULT_ERROR_MODE
      + NORMAL_PRIORITY_CLASS, nilnil, startinfoVST,
      proc_infoVST) then
  begin
  //...


wenn jemand den Fehler sieht, wäre ich sehr dankbar. Oh, btw. BS ist Win XP home und programmiert wird in Delphi 4, falls das wichtig ist.

Vielen Dank


uall@ogc - Mi 28.09.05 20:15

benutz mal SW_SHOWMINIMIZED und verknüpfungen am besten mir OR und nicht mit +


mk2 - Do 29.09.05 13:29

Danke, hab ich gemacht, hat aber nix geholfen. Andere Ideen?

LG mk2


uall@ogc - Do 29.09.05 14:11

vielleicht liegts hier dran


Quelltext
1:
For GUI processes, wShowWindow specifies the default value the first time ShowWindow is called. The nCmdShow parameter of ShowWindow is ignored. In subsequent calls to ShowWindow, the wShowWindow member is used if the nCmdShow parameter of ShowWindow is set to SW_SHOWDEFAULT.                    


kannst ja mal tetsen ob das mit ner konsolenanwendung funktioniert


Nico80 - Mi 09.08.06 14:20

Möchte das Thema nochmals aufgreifen.

Ich möchte eine andere Anwendung mit CreateProcess minimiert starten lassen.
Mit einem Programm wie notepad.exe funktioniert alles einwandfrei.
Aber wenn ich eine stinknormale Delphi-Anwendung (also nur ein Formular mit Standardeinstellungen - Delphi 2006) starte, funktioniert es nicht?!?!

Habe auch schon CreateProcess mit ShellExecute ersetzt, aber das Problem bleibt bestehen.

Schon mal Danke für die Hilfe.


OldGrumpy - Mi 09.08.06 15:20

Wenn das Programm sich selbst nen Modus setzt, dann hast Du (bzw. Dein Programm) an der Stelle halt nix mehr zu melden, denn der CreateProcess-Aufruf legt ja nur den Wert für den Programmstart fest. Wenn dann im Programm sowas wie Application.Restore() steht (oder was auch immer), isses Essig mit minimiert starten. Entweder dem Prozess dann halt alle naselang ne entsprechende Messsage schicken oder halt damit leben :)