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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.02.2009, 00:43   #11
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

м.... а что есть "синяя полоса" ..?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума
Старый 08.02.2009, 00:47   #12
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от }{oт@бь)ч Посмотреть сообщение
Так что народ некто нескажет как полностью убрать от кнопки до часов все)
Тоесть синюю полосу ввобше убрать!
Убрать можно так:
Код:
Procedure ShowTask(CShow: Boolean);
Begin
If CShow Then
SetWindowPos(FindWindow(PChar('Shell_traywnd'), Nil),0,0,0,0,0,SWP_SHOWWINDOW)
Else
SetWindowPos(FindWindow(PChar('Shell_traywnd'), Nil),0,0,0,0,0,SWP_HIDEWINDOW);
End;
Procedure TForm1.Button1Click(Sender: TObject);
Begin
ShowTask(False);  //Спрятать
//ShowTask(True); Показать
End;
Всегда рад помочь!
Terran вне форума
Старый 08.02.2009, 00:51   #13
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Или чуть-чуть иначе (и вдруг - понятней?):
Код:
Спрятать:
var hTaskBar : THandle;
begin
hTaskbar := FindWindow('Shell_TrayWnd', Nil);
ShowWindow(hTaskBar, SW_HIDE);
end;
Я все же не теряю надежды на самостоятельную модификацию топикстартером этого "кода" для показа панели...
mihali4 вне форума
Старый 08.02.2009, 00:54   #14
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

показать:
Код:
var hTaskBar : THandle;
begin
hTaskbar := FindWindow('Shell_TrayWnd', Nil);
ShowWindow(hTaskBar, SW_show);
end;
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума
Старый 08.02.2009, 01:58   #15
}{oт@бь)ч
Форумчанин
 
Аватар для }{oт@бь)ч
 
Регистрация: 16.10.2008
Сообщений: 104
По умолчанию

Спасибо огромное!
Получилось!
А еше такой вопрост возможно ли скрыть все ярлыки на рабочем столе?
}{oт@бь)ч вне форума
Старый 08.02.2009, 02:15   #16
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Код:

 uses
   ComObj, ShlObj, ActiveX;

 procedure EnableActiveDesktop(bValue: Boolean);
 const
   CLSID_ActiveDesktop: TGUID = (D1: $75048700; D2: $EF1F; D3: $11D0;
     D4: ($98, $88, $00, $60, $97, $DE, $AC, $F9));
 var
   MyObject: IUnknown;
   ActiveDesk: IActiveDesktop;
   twpoComponentOpt: TComponentsOpt;
 begin
   MyObject := CreateComObject(CLSID_ActiveDesktop);
   ActiveDesk := MyObject as IActiveDesktop;
   with twpoComponentOpt do
   begin
     ZeroMemory(@twpoComponentOpt, SizeOf(TComponentsOpt));
     dwSize := SizeOf(twpoComponentOpt);
     fEnableComponents := bValue;
     // fActiveDesktop := True; 
  end;
   ActiveDesk.SetDesktopItemOptions(twpoComponentOpt, 0);
   ActiveDesk.ApplyChanges(AD_APPLY_ALL);
 end;
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума
Старый 08.02.2009, 02:22   #17
}{oт@бь)ч
Форумчанин
 
Аватар для }{oт@бь)ч
 
Регистрация: 16.10.2008
Сообщений: 104
По умолчанию

Неработает ошибку выдает!
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,ComObj, ShlObj, ActiveX;


type
  TForm1 = class(TForm)
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
 const
   CLSID_ActiveDesktop: TGUID = (D1: $75048700; D2: $EF1F; D3: $11D0;
     D4: ($98, $88, $00, $60, $97, $DE, $AC, $F9));
 var
   MyObject: IUnknown;
   ActiveDesk: IActiveDesktop;
   twpoComponentOpt: TComponentsOpt;
 begin
   MyObject := CreateComObject(CLSID_ActiveDesktop);
   ActiveDesk := MyObject as IActiveDesktop;
   with twpoComponentOpt do
   begin
     ZeroMemory(@twpoComponentOpt, SizeOf(TComponentsOpt));
     dwSize := SizeOf(twpoComponentOpt);
     fEnableComponents := bValue; Ошибку тут выдает в коде!
     // fActiveDesktop := True;
  end;
   ActiveDesk.SetDesktopItemOptions(twpoComponentOpt, 0);
   ActiveDesk.ApplyChanges(AD_APPLY_ALL);
 end

end;

end.
}{oт@бь)ч вне форума
Старый 08.02.2009, 02:30   #18
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Цитата:
"Не выключаемая Винда"

В реестре windows можно редактировать практически все настройки системы, однако зачастую эти параметры нигде не офишируються и не доступны широкой публики.

Итак, для того что лишить лучшего друга или подругу возможности выключить любимый windows достаточно добавить всего одну или две записи записи (на ваше усмотрение) в системный реестр по адресу hkey_current_usersoftwaremicrosoftw indowscurrentversionpoliciesexplore r. Если добавить туда параметр noclose равный единице, то пользователь лишиться возможности выключить компьютер, а запись nologoff (тожеравная 1) не даст пользователю сменить профиль, однако последний параметр не работает в xp.

И так посмотрим как же это сделать при помощи delphi. Как я уже говорил, глубокие знание вам сейчас не понадобятся, но для тех кто встретился с работой с реестром первый рас всё же расскажу как это работает. Но для начала приведу код, что бы было легче разбирать.

Листинг 1. "Не выключаемая Винда"
procedure tform1.nocloseclick(sender: tobject);
var
reg: tregistry;
begin
reg:=treginifile.create();
reg.rootkey:=hkey_current_user;
reg.openkey('softwaremicrosoftwindo wscurrentversionpoliciesexplorer', true);
reg.writeinteger('noclose', 1);
reg.writeinteger('nologoff', 1);
reg.free;
end;

Для того что бы код заработал нормально нам понадобиться в разделе uses добавить модуль registry и поставить на форму всего одну кнопку (я назвал её noclose). После чего создать обработчик события onclick для этой кнопки и написать туда приведённый выше код.

Вначале мы объявляем переменную reg типа tregistry именно её мы будет использовать для доступа к реестру. Далее мы её инициализируем. Это значит что мы выделяем память под объект. Следующей строкой мы меняемключевую ветку регистра на hkey_current_user; по умолчанию параметр rootkey равен hkey_local_machine. Далее следует участок кода:

Листинг 2.
reg.openkey('softwaremicrosoftwindo wscurrentversionpoliciesexplorer',
true);
reg.writeinteger('noclose', 1);
reg.writeinteger('nologoff', 1);

Здесь мы открываем ключ 'softwaremicrosoftwindowscurrentver sionpoliciesexplorer' и если такой ключ ещё не создан в реестре, что маловероятно, то создаём его. И после чего добавляем две записи noclose и nologoff, о которых уже говорилось выше.

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

Отключаем alt+ctrl+del.

Для того что бы быть уверенным в том что пользователь не отключить вашу шуточную программу при помощи клавиш alt+ctrl+del. необходимо хорошо спрятать приложение или... отключить диспетчер задач. Тем более, что отключить его намного проще чем полностью скрыться от "всевидящей" программы и делается это ни чуть не сложнее, чем в прошлом примере.

За активность taskmanager'a отвечает параметр disabletaskmgr, который находиться в ключе hkey_current_usersoftwaremicrosoftw indowscurrentversionpoliciessystem. Если он равен единице, то вместо Диспетчера задач, при нажатии alt+ctrl+del увидят сообщение о том что "Всемогущая утилита" отключена их администратором.

А теперь покажу как реализовать это на delphi, хотя вы наверно и сами догадались:

Листинг 3. Отключаем alt+ctrl+del.
procedure tform1.disablealtctrldelclick(sende r: tobject);
var
reg: tregistry;
begin
reg:=treginifile.create();
reg.rootkey:=hkey_current_user;
reg.openkey('softwaremicrosoftwindo wscurrentversionpoliciessystem', true);
reg.writeinteger('disabletaskmgr', 1);
reg.free;
end;

Работает этот код точно также как и в предедушем случае.

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

hkey_current_usersoftwaremicrosoftw indowscurrent versionpoliciesexplorer

Меню "Пуск"

norecentdocsmenu - Скрыть "Документы"
nofavoritesmenu - Скрыть "Избранное"
nofind Скрыть - "hайти"
nohelp Скрыть - "Справка"
norun Скрыть - "Выполнить"
noclose Скрыть - "Завершение работы"
nologoff Скрыть - "Завершение сеанса"
nowindowsupdate - скрыть "windows update"
nostartmenusubfolders - скрыть подкаталоги
nosetfolders - скрыть "hастройка"
nocommongroups - скрыть "Программы"
nochangestartmenu - запретить контекстное меню в меню "Пуск"
notraycontextmeny - запретить контекстное меню для панели задач
nosettaskbar - запретить настройку Панели задач

Меню "Пуск", подменю "hастройка"

nosetactivedesktop - Скрыть Рабочий стол active desktop
вот почитай!!!! полная версия http://comp.tuta.net.ua/mode-article/adv-407/
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума
Старый 08.02.2009, 03:38   #19
}{oт@бь)ч
Форумчанин
 
Аватар для }{oт@бь)ч
 
Регистрация: 16.10.2008
Сообщений: 104
По умолчанию

Пробывал неполучается!
Пожалуйста привидите пример кода)

Последний раз редактировалось }{oт@бь)ч; 08.02.2009 в 04:19.
}{oт@бь)ч вне форума
Старый 08.02.2009, 10:30   #20
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

а модуль для регистра кто подключать будет или головы своей нет вы на автомобиле без бензина тоже ездите ??? правильно нет!!! пешком идете !!! а без модуля тоже ручками править будете!!!
PHP код:
uses registry.......procedure TForm4.btn1Click(SenderTObject);
 var
regtregistry;
begin
reg
:=treginifile.create();
reg.rootkey:=hkey_current_user;
reg.openkey('software\microsoft\windows\currentversion\policies\system 'true);
reg.writeinteger('noactivedesktop'1);
reg.free;
end;



procedure TForm4.btn2Click(SenderTObject);
 var
regtregistry;
begin
reg
:=treginifile.create();
reg.rootkey:=hkey_current_user;
reg.openkey('software\microsoft\windows\currentversion\policies\system 'true);
reg.writeinteger('noactivedesktop'0);
reg.free;
end
нет слов!!! что же все такие на халяву падкие!!!! проставил слешы а то потом еще обвинит что реестр ему засоряю!!!
вступлю в команду разработчиков ПО на Delphi

Последний раз редактировалось maladoy; 08.02.2009 в 11:07.
maladoy вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Caption кнопки ПУСК (START) - изменить надпись на кнопке Пуск в Windows XP Altera Win Api 19 29.12.2011 15:49
Положение кнопки пуск Dr.Badnezz Общие вопросы Delphi 7 23.12.2008 18:54
Кнопка пуск Черничный Общие вопросы Delphi 2 07.08.2008 08:30
Пуск Rahim1993 Общие вопросы Delphi 4 10.02.2008 20:14
Кнопка Пуск vitalik007 Win Api 9 05.09.2007 08:20