Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 01.11.2019, 00:43   #1
falsebegin
Пользователь
 
Регистрация: 23.11.2016
Сообщений: 99
По умолчанию Включение или отключение компонентов Windows

драстуйте можно ли отключить компонентов Windows через delphi?

пример хочу отключить Платформа гаджетов Windows по нажатию button1 https://yadi.sk/i/PAwzyxRC63N77A дайте коды если есть такое и на других компонентов ?
falsebegin вне форума Ответить с цитированием
Старый 01.11.2019, 04:40   #2
beegl
Программ Аналитик
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,383
По умолчанию

Цитата:
Сообщение от falsebegin Посмотреть сообщение
хочу отключить
надо знать, где это в реестре, .. например, отключить CTRL+ALT+DELETE Win XP используя реестр

Код:
procedure DisableTaskMgr(bTF: Boolean);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;

  reg.OpenKey('Software', True);
  reg.OpenKey('Microsoft', True);
  reg.OpenKey('Windows', True);
  reg.OpenKey('CurrentVersion', True);
  reg.OpenKey('Policies', True);
  reg.OpenKey('System', True);

  if bTF = True then
  begin
    reg.WriteString('DisableTaskMgr', '1');
  end
  else if bTF = False then
  begin
    reg.DeleteValue('DisableTaskMgr');
  end;
  reg.CloseKey;
end;
// Example Call:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  DisableTaskMgr(True);
end;
beegl на форуме Ответить с цитированием
Старый 01.11.2019, 05:04   #3
falsebegin
Пользователь
 
Регистрация: 23.11.2016
Сообщений: 99
По умолчанию

ну хоть через реестр
falsebegin вне форума Ответить с цитированием
Старый 01.11.2019, 11:45   #4
beegl
Программ Аналитик
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,383
По умолчанию

Это может быть сделано и с помощью функции FindWindow.

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
blah: hwnd;
begin
blah := FindWindow('NotePad', nil);
SendMessage(blah, WM_SETTEXT, 0, LongInt(PChar('Hello')));
end;
вот так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  hOldCaption : string;
  ParentWnd, ChildWnd : HWND;
begin
   hOldCaption := 'Test Exe';

   ParentWnd := FindWindow(nil, PChar(hOldCaption));
   if(ParentWnd = 0) then
   begin
      ShowMessage('No windows found!'); exit;
   end;
   ChildWnd:=FindWindowEx(ParentWnd, 0,'TButton', nil);
   if ChildWnd <> 0 then
      SendMessage(ChildWnd, BM_CLICK, 0, 0)
   else
      ShowMessage('No child window found!');
end;

Последний раз редактировалось beegl; 01.11.2019 в 13:47. Причина: add code
beegl на форуме Ответить с цитированием
Старый 01.11.2019, 13:45   #5
beegl
Программ Аналитик
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,383
По умолчанию

Цитата:
Сообщение от falsebegin Посмотреть сообщение
через реестр
Код:
uses Registry, ShellApi, TlHelp32;

function StopProcess(ExeFileName: string) : Integer;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result:=0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
      Result:=Integer(TerminateProcess( OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
     ContinueLoop:=Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

//Show all Gadgets
procedure TForm1.Button1Click(Sender: TObject);
var Reg: TRegistry;
begin
  Reg:=TRegistry.Create;
  Reg.RootKey:=HKEY_CURRENT_USER;
  if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Sidebar\Settings', True) then
    begin
      Reg.WriteBool('ShowGadgets', True);
      Reg.CloseKey;
    end;
  Reg.Free;
ShellExecute(self.Handle, 'Open', 'sidebar.exe', nil, nil, SW_SHOWNORMAL);
end;

//Close down One by one Gadget
procedure TForm1.Button2Click(Sender: TObject);
var h: THandle;
    Reg: TRegistry;
begin
  Reg:=TRegistry.Create;
  Reg.RootKey:=HKEY_CURRENT_USER;
  if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Sidebar\Settings', True) then
    begin
      Reg.WriteBool('ShowGadgets', False);
      Reg.CloseKey;
    end;
  Reg.Free;
h:=FindWindow('BasicWindow', nil);
SendMessage(h, WM_CLOSE, 0, 0);
end;

// Close all Gadgets at once
procedure TForm1.Button3Click(Sender: TObject);
var   Reg: TRegistry;
begin
  Reg:=TRegistry.Create;
  Reg.RootKey:=HKEY_CURRENT_USER;
  if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Sidebar\Settings', True) then
    begin
      Reg.WriteBool('ShowGadgets', False);
      Reg.CloseKey;
    end;
  Reg.Free;
  StopProcess('sidebar.exe');
end;
beegl на форуме Ответить с цитированием
Старый 01.11.2019, 23:57   #6
falsebegin
Пользователь
 
Регистрация: 23.11.2016
Сообщений: 99
По умолчанию

хмм добавил код реестра вроде все компилируется но когда нажимаю кнопку ничего не происходит гаджет не проподает

Последний раз редактировалось falsebegin; 02.11.2019 в 00:23.
falsebegin вне форума Ответить с цитированием
Старый 02.11.2019, 07:17   #7
beegl
Программ Аналитик
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,383
По умолчанию

не могу протестировать, у меня Windows XP SP3

P.S. я особо не знающий, мне там ответили

Последний раз редактировалось beegl; 02.11.2019 в 08:57. Причина: add link
beegl на форуме Ответить с цитированием
Старый 02.11.2019, 07:38   #8
falsebegin
Пользователь
 
Регистрация: 23.11.2016
Сообщений: 99
По умолчанию

windows 7 64 бит Версия DElphi XE7
falsebegin вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Включение/отключение сетевой карточки Loshara Windows 6 15.09.2017 15:10
корректное включение и отключение вебкамеры AnryKZKZ Мультимедиа в Delphi 14 15.04.2014 20:57
SetLayeredWindowAttributes включение\отключение. Alex Cones Общие вопросы Delphi 5 31.01.2011 14:45
Включение\отключение каналов SanekIrk Мультимедиа в Delphi 1 19.10.2009 17:10
отключение / включение реакции на мышь. DeKot Общие вопросы Delphi 2 29.10.2008 18:22