AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SetEnvironmentVariable global?

Ein Thema von FriFra · begonnen am 13. Feb 2007 · letzter Beitrag vom 14. Feb 2007
Antwort Antwort
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#1

SetEnvironmentVariable global?

  Alt 13. Feb 2007, 12:19
Gibt es eine Möglichkeit eine globale Systemvariable zu setzen?
SetEnvironmentVariable funktioniert ja leider nur für den aktuellen Prozess und ist daher für mich unbrauchbar.
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: SetEnvironmentVariable global?

  Alt 13. Feb 2007, 12:38
Hallo,

wahrscheinlich gibt es eine "bessere" Lösung für dein Problem, aber weil du deinen Lösungsansatz bereits gewählt hast und ich dein Problem nicht erkenne: klick

Freundliche Grüße
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: SetEnvironmentVariable global?

  Alt 13. Feb 2007, 19:45
Moin FriFra,

könntest Du bitte mal ein wenig präzisieren, wie die Zusammenhänge zwischen den beteiligten Prozessen sind.
Der Weg über HWND_BROADCAST und WM_WININICHANGE wie er auf der von marabu verlinkten Site gezeigt wird funktioniert nur dann, wenn die Anwendung, die die Message erhält, diese auch verarbeitet, was, IMHO, kaum eine tut.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: SetEnvironmentVariable global?

  Alt 13. Feb 2007, 20:17
Hallo Chris,

nur Programme, die das auch wirklich wollen, werten zur Laufzeit die Nachricht WM_SETTINGCHANGE (!) aus. Ich habe lange überlegt, wozu der OP das brauchen könnte. Als IPC Ersatzlösung lässt sich der Ansatz nicht wirklich positionieren. Was bleibt dann noch? Ein Utility, welches den windows-eigenen Dialog für Umgebungsvariablen nachbildet? Eher auch nicht. Vermutlich ist die Idee das Aufsetzen einer globalen Variable, damit ein später gestartetes Programm diese im eigenen environment block findet und auswerten kann. Dazu ist der Klimmzug nicht nötig, da man statt ShellExecute() auch CreateProcess() einsetzen und dort das Environment massgeschneidert bereit stellen könnte. Bin auch gespannt auf die Antwort auf deine Frage.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#5

Re: SetEnvironmentVariable global?

  Alt 13. Feb 2007, 20:29
Ein ähnliches Problem hat ich auch mal: http://www.delphipraxis.net/internal...t.php?t=101833

Vielleicht hilft es dir, mfg, Björn
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: SetEnvironmentVariable global?

  Alt 13. Feb 2007, 20:31
Moin Marabu,

ich habe da eher den Verdacht, dass es darum geht, das ein in der Konsole gestartetes Programm eine Umgebungsvariable setzten soll, die dann, nach dessen Ende, verarbeitet wird.
Aber lassen wir uns mal überraschen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#7

Re: SetEnvironmentVariable global?

  Alt 13. Feb 2007, 23:32
Ja, so ungefähr ... Ein Programm soll eine Umgebungsvariable setzen und diese soll dann für alle nachfolgend gestarteten Anwendungen auslesbar sein. Für irgendwelche Klimmzüge mit der Registry habe ich keine Möglichkeit, da diese Variable von einem Account mit eingeschränkten Rechten gesetzt werden soll.
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: SetEnvironmentVariable global?

  Alt 14. Feb 2007, 06:18
Guten Morgen,

Zitat von FriFra:
... Ein Programm soll eine Umgebungsvariable setzen und diese soll dann für alle nachfolgend gestarteten Anwendungen auslesbar sein. ...
der Standardweg unter Windows wäre dann das aufsetzen eines speziellen Environment:

Delphi-Quellcode:
procedure TDemoForm.FormCreate(Sender: TObject);
var
  cmd, shell: string;
begin
  SetEnvironmentVariable('DPTEST', 'FRIFRA');
  shell := GetEnvironmentVariable('COMSPEC');
  cmd := '/K SET DPTEST';
  ShellExecute(0, '', PAnsiChar(shell), PAnsiChar(cmd), '', SW_SHOW);
  Release;
end;
Alle Programme, die jetzt gestartet werden, finden die Variable DPTEST.

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz