Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#8

Re: lpEnvironment-Parameter bei CreateProcessWithLogonW

  Alt 1. Aug 2005, 11:07
Wo liegt denn dein Problem? Entweder du benutzt AnsiString oder du benutzt WideString. Bei WideString mußt du CREATE_UNICODE_ENVIRONMENT bei den Flags setzen.

Dann setzt du deine Variablen zB so wie du willst:
Delphi-Quellcode:
var s : WideString;
// ^--- kann auch AnsiString sein, der Code bleibt gleich!
// Bis auf CREATE_UNICODE_ENVIRONMENT natürlich ;)
begin
  s := 'PATH=C:\Programme';
  s := s + #0; // Aktuelle Variable abschließen
  // Nächste Variable
  s := s + 'BLA=BLUBB';
  s := s + #0; // Aktuelle Variable abschließen
  // Zuguterletzt den Block abschließen ...
  s := s + #0;
end;
Wichtig, am Ende muß immer 2mal #0 stehen!!!

Hoppala, das wichtigste vergessen: Danach übergibst du auf diesen String einen Pointer (genauergesagt auf das erste Zeichen!)lpEnvironment := Pointer(@s[1]); vermutlich geht auchlpEnvironment := @s[1]; (also ohne Pointer-Typecast)

Noch'n Nachtrag: Wenn du eine Kopie eines anderen Environment Blocks machen willst, benutzt du, wie oben schon gesagt, MSDN-Library durchsuchenCreateEnvironmentBlock()!

EDIT4: Sorry, hatte einen Bug, natürlich werden die nächsten Variablen an den String angehangen
  Mit Zitat antworten Zitat