Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2009, 01:20   #1
Romany4
Пользователь
 
Аватар для Romany4
 
Регистрация: 01.09.2009
Сообщений: 18
По умолчанию Как определить директорию %windir%?

Как, используя ShellExecute, запустить диспетчер задач, не зная пути до
system32?
К примеру, обычно это директория c:\windows\system32, а что если
у пользователя d:\winxp\system32?
Кто не любит свет, тот и живёт ночью
Romany4 вне форума Ответить с цитированием
Старый 01.09.2009, 01:35   #2
A_r_r_a_y
Форумчанин
 
Аватар для A_r_r_a_y
 
Регистрация: 01.03.2008
Сообщений: 165
По умолчанию

так выполните просто taskmgr
A_r_r_a_y вне форума Ответить с цитированием
Старый 01.09.2009, 01:41   #3
Romany4
Пользователь
 
Аватар для Romany4
 
Регистрация: 01.09.2009
Сообщений: 18
По умолчанию

Спасибо, думал без пути не запустится.
А если всё же использовать путь до файла?
Кто не любит свет, тот и живёт ночью
Romany4 вне форума Ответить с цитированием
Старый 01.09.2009, 01:55   #4
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,454
По умолчанию

То такая функция:
Код:
Function System32: string;
var
  T: Cardinal;
  Dir: array[0..255] of AnsiChar;
begin
 Result:= 'Unknown';
 GetSystemDirectory(Dir, T);
 Result:= Dir;
end;
uberchel вне форума Ответить с цитированием
Старый 01.09.2009, 01:59   #5
Romany4
Пользователь
 
Аватар для Romany4
 
Регистрация: 01.09.2009
Сообщений: 18
По умолчанию

uberchel, спасибо, что-то вроде этого я уже встречал, но не знаю как использовать переменную Dir в ShellExecute для записи полного пути до файла.
Сейчас это у меня выглядит так:
Код:
ShellExecute(Handle, nil, 'taskmgr.exe', nil, nil, SW_SHOW);
Я только изучаю программирование, поэтому пока почти ничего не знаю.

Ко мне часто обращаются с вопросом о "Запрещённом администратором Диспетчере задач". Раньше я давал утилиту типа твикера, где Диспетчер задач разблокировывается, путем изменения записи в реестре. Но в этом твикере много параметров, и чтобы не объяснять на какой вкладке какую галочку снять, я решил написать свою мелкую программу, которая вносит нужные записи в реестр, а затем сразу же запускает диспетчер задач.
Кто не любит свет, тот и живёт ночью
Romany4 вне форума Ответить с цитированием
Старый 01.09.2009, 02:03   #6
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,454
По умолчанию

Эта функция получения системной директории System32 и свойство у неё String(строковое)!

Код:
Function System32: string;
var
  T: Cardinal;
  Dir: array[0..255] of AnsiChar;
begin
 Result:= 'Uknown';
 GetSystemDirectory(Dir, T);
 Result:= Dir;
end;
Применение:
Код:
ShellExecute(Handle, 'open', Pchar(System32 + '\taskmgr.exe'), nil, nil, SW_SHOW);

Последний раз редактировалось uberchel; 01.09.2009 в 02:23.
uberchel вне форума Ответить с цитированием
Старый 01.09.2009, 02:12   #7
Romany4
Пользователь
 
Аватар для Romany4
 
Регистрация: 01.09.2009
Сообщений: 18
По умолчанию

uberchel, а так не запускается.
Кто не любит свет, тот и живёт ночью
Romany4 вне форума Ответить с цитированием
Старый 01.09.2009, 02:22   #8
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,454
По умолчанию

Цитата:
Сообщение от Romany4 Посмотреть сообщение
uberchel, а так не запускается.
А у тебя ОС какая? У меня все запускаться, вот пример, что функция работает:

Код:
procedure TForm1.Button1Click(Sender: TObject);
Function System32: string;
var
  T: Cardinal;
  Dir: array[0..255] of AnsiChar;
begin
 Result:= 'Unknown';
 GetSystemDirectory(Dir, T);
 Result:= Dir;
end;
begin
 Text:= System32;
end;
При нажатии на кнопку в названии форы будет путь к System32 !
uberchel вне форума Ответить с цитированием
Старый 01.09.2009, 02:32   #9
Romany4
Пользователь
 
Аватар для Romany4
 
Регистрация: 01.09.2009
Сообщений: 18
По умолчанию

uberchel, WINXP у меня. Вот код:

Код:
program Project2;

uses
  Registry, windows, shellapi;

{$R *.res}

var
reg: TRegistry;
Instance: HWnd;
Handle: HWnd;
//îïðåäåëåíèå system32 <-----
Function System32: string;
var
  T: Cardinal;
  Dir: array[0..255] of AnsiChar;
begin
 Result:= 'Unknown';
 GetSystemDirectory(Dir, T);
 Result:= Dir;
end;
//----->
begin
reg:= TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', true);
reg.WriteInteger('DisableTaskMgr', 0);
reg.CloseKey;
ShellExecute(Handle, 'open', Pchar(System32 + '\taskmgr.exe'), nil, nil, SW_SHOW);
reg.Free;

end.
Мож я не так что написал?
Кто не любит свет, тот и живёт ночью
Romany4 вне форума Ответить с цитированием
Старый 01.09.2009, 08:31   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Мож я не так что написал?
Function System32: string; отрабатывает нормательно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После копирования в другую директорию программа не работает Terikon Общие вопросы Delphi 8 31.03.2009 00:19
Как изменить директорию в FileListBox oduvan4ik Общие вопросы Delphi 1 01.03.2009 13:54
Среди 20 введёных чисел определить чётные, распечатать их, определить min Spade Помощь студентам 4 15.06.2008 18:39
Запаролить директорию NikLik Win Api 2 17.02.2008 10:46