Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Смена пользователя в Windows


Автор: SlaUr 19.10.2006, 12:57
Вообщем мне нужно каждый раз при смене пользователя в Windows запускать свою программу , как определить что я зашел под другим пользователем?
пробовал засовывать программу в
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- не помогает


Автор: Snowy 19.10.2006, 13:03
А кем ты собрался следить, если твоя программа не запущена?
Если запущена, то WM_USERCHANGED.

Цитата(SlaUr @  19.10.2006,  12:57 Найти цитируемый пост)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run- не помогает
Не могет такого быть.
Может неправильно прописываешь?
Или не тому юзеру?

Автор: SlaUr 20.10.2006, 07:28
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
запускается один раз 
при повторном измененении пользователя - уже не запускается :-(

вообще -то мне нужно следующее :
при изменении пользователя ,менять разрешение экрана.
Может есть готовое решение?


Код

WM_USERCHANGED

не хочется чтобы программа постоянно работала ..



Автор: Akella 20.10.2006, 08:44
Цитата(SlaUr @  20.10.2006,  07:28 Найти цитируемый пост)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

определяется для конкретного пользователя, ты себе поставил программу в автозапуск, а вновьсозданному...

Я бы на твоём месте поставил программу в общий автозапук, он для того и предназначаен.

Автор: SlaUr 20.10.2006, 10:05
общий автозаапуск IMHO  выполняется один раз а мне нужно изменять разрешение  экрана при каждом переходе на пользователя ...



Автор: Nicholas_S 20.10.2006, 10:40
Пропиши в раздел "Автозагрузка" ("Startup").

Автор: SlaUr 20.10.2006, 18:35
Nicholas_S, в понедельник попробую ...

Автор: Sunvas 20.10.2006, 21:06
Цитата(SlaUr @  20.10.2006,  07:28 Найти цитируемый пост)
не хочется чтобы программа постоянно работала ..

Ну, а если пользователь в Пуск-Завершения сеанса ххх нажмет кнопку смена пользователя а не выход??
Если хочешь отследить именно смену пользователя а не запуск оболочки, то программа должна быть всегда запущена.

Автор: DarlkElfTen 21.10.2006, 16:39
Цитата

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run


кхм, прога прописывается только для одного юзера...юз локал машин и пусть прога смотрит елси произошла смена юзера..или вообсче на изменеие ника реагировать через промежутока времени smile 

Автор: SlaUr 23.10.2006, 13:29
Не могу поймать сообщение WM_USERCHANGED
Сделал простой тест и он не работает:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Registry;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
     procedure WMUserChanged(var a:TMessage); message WM_UserChanged;

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TfORM1.WMUserChanged(var a:TMessage);
begin
ShowMessage('Событие UserChanged');
end;


procedure TForm1.FormCreate(Sender: TObject);
VAR R:  TRegistry;
begin
IF PARAMSTR(1)='inst'  then
begin
r:=TRegistry.Create;
R.RootKey:=HKEY_LOCAL_MACHINE;
R.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True);
r.WriteString('MyScreens',Paramstr(0));
R.CloseKey;
Halt;
end;
end;

end.




Что делаю не так?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)