Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Блокировка, Прога для блокировки запуска 
:(
    Опции темы
Lepricon
Дата 25.6.2003, 03:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 5.1.2003

Репутация: нет
Всего: нет



Привет Всем!!!
Столкнулся с такой проблемой...
Надо запретить запуск определённой прораммы, вернее запускать её под паролем...
Есть список программ, необходимо, чтобы при запуске хотя бы одной выскакивало окошко с запросом пароля, и без пароля прорамма не запускалась...
Причём это всё должно работать как под win98 так и под win2000...
Подскажите как это реализовать...
Проблема в том как отслеживать сам факт запуска программы...
и если программа написана как сервис, как её правильно установить, чтоб запускалась автоматически при загрузке... и для win2000 с системными привилегиями...
Если есть готовые решения, подскажите где можно найти...
PM MAIL   Вверх
<Spawn>
Дата 25.6.2003, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Наверна нужно юзать хук с WH_CBT или WH_SHELL.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Mikel
Дата 25.6.2003, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: 1
Всего: 2



WH_CBT лучше- там просто результат поставишь в 1 и прога не будет запущена. В wParam там сидит hWnd главного окна.


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Lepricon
Дата 26.6.2003, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 5.1.2003

Репутация: нет
Всего: нет



А можно поподробнее пожалуйста...

PM MAIL   Вверх
Mikel
Дата 26.6.2003, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: 1
Всего: 2



Вот писал когда-то
Библиотека:
Код
library CBT;

uses
 SysUtils,
 Windows;

const
 MMFName:PChar='HookData';


type
 PGlobalDLLData=^TGlobalDLLData;
 TGlobalDLLData=packed record
   SysHook:HWND;
   MyAppWnd:HWND;
 end;

var
 GlobalData:PGlobalDLLData;
 MMFHandle:THandle;

function CBTProc(code:integer;wParam:wParam;lParam:lParam):longint;stdcall;
Var B:Array [0..8191]of Char;
   WndClass,WndName,
   DisClasses,DisNames:String;
   h:hWnd;
   n:integer;
begin
 n:=0;
 if code < 0 then
 begin
   Result:=CallNextHookEx(GlobalData^.SysHook,Code,wParam,lParam);
   Exit;
 end;

 if (code=HCBT_ACTIVATE)
    or(code=HCBT_CREATEWND)
    or(code=HCBT_DESTROYWND)
    or(code=HCBT_MINMAX)
    or(code=HCBT_MOVESIZE)
    or(code=HCBT_SETFOCUS)
    or(code=HCBT_SYSCOMMAND)
    then begin
           ZeroMemory(@B,SizeOf(B));
           GetClassName(wParam,@b,8191);
           WndClass:=StrPas(@b);
           ZeroMemory(@B,SizeOf(B));
           GetWindowText(wParam,@b,8191);
           WndName:=StrPas(@b);

           if (WndClass=#32770)
              or(WndClass='Notepad')
              or(WndClass='IEFrame')
              then n:=1
              else n:=0;
         end;


 CallNextHookEx(GlobalData^.SysHook,Code,wParam,lParam);
 Result:= n;
end;

procedure hook(switch:Boolean;hMainProg:HWND) export; stdcall;
begin
 if switch=true then
 begin
   GlobalData^.SysHook := SetWindowsHookEx(WH_CBT, @CBTProc, HInstance, 0);
   GlobalData^.MyAppWnd:= hMainProg;
 end
 else
   begin
   UnhookWindowsHookEx(GlobalData^.SysHook);
   end;
end;

procedure OpenGlobalData;
begin
 MMFHandle:= CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE,0,SizeOf(TGlobalDLLData),MMFName);
 GlobalData:= MapViewOfFile(MMFHandle,FILE_MAP_ALL_ACCESS,0,0,SizeOf(TGlobalDLLData));
 if GlobalData=nil then
   begin
     CloseHandle(MMFHandle);
     Exit;
   end;

end;

procedure CloseGlobalData;
begin
 UnmapViewOfFile(GlobalData);
 CloseHandle(MMFHandle);
end;

procedure DLLEntryPoint(dwReason: DWord); stdcall;
begin
 case dwReason of
   DLL_PROCESS_ATTACH: OpenGlobalData;
   DLL_PROCESS_DETACH: CloseGlobalData;
 end;
end;

exports hook;

begin
 DLLProc:= @DLLEntryPoint;
 DLLEntryPoint(DLL_PROCESS_ATTACH);
end.


И прога
Код
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   Timer1: TTimer;
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure Timer1Timer(Sender: TObject);
   procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 hDLL: THandle;

implementation

{$R *.DFM}
procedure Init;
var
 Hook: procedure (switch:Boolean;hMainProg:HWND) stdcall;
begin
 @hook:= nil;
 hDLL:=LoadLibrary(PChar('CBT.dll'));
 if hDLL > HINSTANCE_ERROR then
   begin
     @hook:=GetProcAddress(Hdll, 'hook');
     hook(true, Form1.Handle);
   end
 else
 begin
   ShowMessage('Хрен тебе!');
   Exit;
 end;

end;

procedure Destroyhook;
var
 Hook: procedure (switch:Boolean;hMainProg:HWND) stdcall;
begin
 @hook:= nil;
 if hDLL > HINSTANCE_ERROR then
   begin
     @hook:=GetProcAddress(Hdll,'hook');
     hook(false, Form1.Handle);
     if FreeLibrary(hDLL)
        then sleep(100)
        else begin
               ShowMessage('Хрен тебе!');
               Exit;
             end;
   end;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
freelibrary(hDLL);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=FALSE;
Init;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
DestroyHook;
end;

end.


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


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.