Menu "START" windows jeszcze raz

0

Nie wiem czemu ale nowy temat o menu start jaki wprowadziłem wczoraj nie istnieje juz na tym Forum... dziwne?

Więc raz jeszcze....

Musze mieć na ekranie tylko jedną aplikację i nic ponad to....
czyli:
blokuje Alt+Ctrl+Del
blokuje Alt+TAB
blokuje Alt+F4
blokuje CD-ROM i zapis na nośnikach USB
ukrywam ikony na pulpicie i menu kontekstowe

teraz pozostało tylko pozbycie się explorer.exe czyli "Menu start" ale nie wiem jak
oczywiście testowałem ShowWindow(FindWindow('Shell_TrayWnd',nil),SW_HIDE); ale to nie działa
owszem ukrywa menu start ale moi użytkownicy zaraz sobie z tym poradzili jak ?
na dwa sposoby wystarczy klawisz windows i z niewidocznego menu start
rozwija sie menu mało tego wielokrotne klikanie na miejscu gdzie powinien być przycisk start
czasami tez potrafi wywolac otwarcie tego menu. Tak więc SW_HIDE nic nie daje.......
Jako ciekawostkę podam ze absolutnie skutecznie robi to program "Process Explorer" Marka Russinovich'a
bo w nim po wybraniu opcji kill process "Explorer.exe" juz nie wstaje automatycznie.................
Standardowy TaskMenager tez skutecznie ubija explorer.exe
Jednak moja procedura nie działa ,może istnieje jakas metoda na zablokowanie i ukrycie menu "Start" windows
zamiast ubijania procesu "Explorer.exe"

Pytanie brzmi jak pozbyć się skutecznie belki menu "start" windows?

Pozdrawiam.

Testowana funkcja:

uses TLHelp32;

////////////////////////////////////////////////////////////////////////////////////////////////////////
// Uwaga wymagane: uses TLHelp32;
//Ta funkcja zabija kazdy process o podanej nazwie nazwa musi zawierac rozszezenie np: 'INTERNAT.EXE'
//Jezeli podana nazwa procesu zostanie odnaleziona i proces usunienty to na wyjsciu otrzymujemy =TRUE
//Uwaga: ta funkcja zamienia wszystkie nazwy procesow na nazwy z duzymi literami!!!
function ZabijProcess(Nazwa: string): Boolean;
var
Uchwyt,UchwytProcesu: tHandle;
Proces:tProcessEntry32;
begin
result:=false;
Uchwyt:=CreateToolHelp32SnapShot(TH32CS_SNAPALL,0);
Proces.dwSize:=SizeOf(Proces);
if Integer(Process32First(Uchwyt,Proces))<>0 then
repeat
if UpperCase(ExtractFileName(Proces.szExeFile)) = UpperCase(Nazwa) then
begin
UchwytProcesu:=OpenProcess(PROCESS_TERMINATE,bool(0),Proces.th32ProcessID);
if TerminateProcess(UchwytProcesu,0) then result:=true;
CloseHandle(UchwytProcesu);
end;
until Integer(Process32Next(Uchwyt,Proces))=0;
closehandle(Uchwyt);
end;
////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure TForm1.Button1Click(Sender: TObject);
begin
ZabijProcess('Explorer.exe');
end;

0

Musze mieć na ekranie tylko jedną aplikację i nic ponad to....
czyli:
blokuje Alt+Ctrl+Del
blokuje Alt+TAB
blokuje Alt+F4
blokuje CD-ROM i zapis na nośnikach USB
ukrywam ikony na pulpicie i menu kontekstowe

Nie tędy droga. Uruchamiaj swój program jako shell, przez odpowiednie ustawienie w rejestrze. Wtedy przy starcie systemu uruchomi się twój program zamiast pulpitu, menu start itd.
Poszukaj jak.

0

podmiana w kluczu
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon Shell

Explorer.exe niewiele mi daje bo chce aby program był odpalany opcjalnie czyli po odpaleniu
dopiero ma blokowac wszystkie funkcje

musi być jakieś rozwiązanie?

0

Poniżej masz przykład modułu, który zablokuje niektóre klawisze. Jak jeszcze jakieś to sobie dorób, a Ctrl+Alt+Delete nie idzie zablokować. Trzeba by było przez rejestr zablokować użycie Managera Zadań. Można znaleźć na google o tym więcej informacji.

unit lockhook;

interface

uses
  Windows, Messages;

const
  WH_KEYBOARD_LL = $000D;
  LLKHF_EXTENDED = $0001;
  LLKHF_INJECTED = $0010;
  LLKHF_ALTDOWN = $0020;
  LLKHF_UP = $0080;

type
  tagKBDLLHOOKSTRUCT = packed record
    vkCode : DWord;
    ScanCode : DWord;
    Flags : DWord;
    Time : DWord;
    dwExtraInfo : integer;
  end;
  KBDLLHOOKSTRUCT = tagKBDLLHOOKSTRUCT;
  PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;

var
  HKHook : HHook;
  
function LowLevelKeyboardProc(nCode : Integer; wParam : Integer; lParam : Integer) : Integer; stdcall; export;
procedure HookIt;
procedure UnHookIt;

implementation

procedure HookIt;
begin
  HKHook := SetWindowsHookEx(WH_KEYBOARD_LL, @LowLevelKeyboardProc, hInstance, 0);
end;

procedure UnHookIt;
begin
  UnHookWindowsHookEx(HKHook);
end;

function LowLevelKeyboardProc(nCode : Integer; wParam : Integer; lParam : Integer) : Integer; stdcall; export;
var
  Hook : PKBDLLHOOKSTRUCT;
  bControlKeyDown : boolean;
begin
  Hook := Pointer(lParam);
  case nCode of
    HC_ACTION :
      begin
        bControlKeyDown := ((GetAsyncKeyState(VK_CONTROL) shr ((Sizeof(SHORT) * 8) - 1)) <> 0);
      //Disable CTRL+ESC
        if (Hook^.vkCode = VK_ESCAPE) and (bControlKeyDown) then
        begin
          Result := 1;
        end
      //Disable ALT+TAB
        else if ((Hook^.flags and LLKHF_ALTDOWN) <> 0) and (Hook^.vkCode = VK_TAB) then
        begin
          Result := 1;
        end
      //Disable ALT+ESC
        else if ((Hook^.flags and LLKHF_ALTDOWN) <> 0) and (Hook^.vkCode = VK_ESCAPE) then
        begin
          Result := 1;
        end
      //Disable CTRL+ENTER
        else if (Hook^.vkCode = VK_RETURN) and (bControlKeyDown) then
        begin
          Result := 1;
        end
      //Disable Windows Key
        else if (Hook^.vkCode = VK_LWIN) or (Hook^.vkCode = VK_RWIN) then
        begin
          Result := 1;
        end
      //Disable All ALT Keys
        else if (Hook^.vkCode = VK_MENU) or (Hook^.vkCode = VK_LMENU) or (Hook^.vkCode = VK_RMENU) then
        begin
          Result := 1;
        end
        else
        begin
          Result := CallNextHookEx(HKHook, nCode, wParam, lParam);
        end;
      end;
  else
    begin
      Result := CallNextHookEx(HKHook, nCode, wParam, lParam);
    end;
  end;
end;

end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1