Newsgroup: it.comp.lang.delphi
Titolo: Finestre dimensioni

salve a tutti,
   come posso creare una form che diventi grande come lo schermo,
coprendo tutto il desktop e che non sia ne spostabile ne chiudibile, ne
tantomeno possa essere aperto il menu di windows premento gli appositi
tastini...Grazie a tutti
   ap

 ha scritto nel messaggio:

Stai realizzando un blindatore?
Ecco un piccolo esempio ... piazza un Timer (interval 300..400) due edit un
button (speed)  e 3 label.
Imposta il borderstyle a Dialog (metti a false tutti i bottoni della
BorderIcons) ... questo programma si riavvia ad ogni partenza di Windows!
(funziona su Win9x)
---
var
  Form1: TForm1;
  HookHandle : THandle;
implementation
{$R *.DFM}
Function KeyboardHook(Codice:Integer; Tasto:Wparam; Stato:Lparam):Integer;
Stdcall;
Begin
 If not ((Codice=HC_Action) and (GetAsyncKeyState(VK_Menu)<0) and
(GetAsyncKeyState(VK_F4)<0)) then
 Result:=CallNextHookEx(HookHandle,Codice,Tasto,stato);
end;
procedure TForm1.FormCreate(Sender: TObject);
var old : integer;
    Registro : TRegistry;
begin
HookHandle:=SetWindowsHookEx(WH_Keyboard,@KeyboardHook,GetCurrentThreadID,0)
;
SystemParametersInfo(Spi_ScreenSaverRunning,1,@old,0);
Registro:=TRegistry.Create;
   try
     Registro.RootKey:=HKEY_LOCAL_MACHINE;
Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',False);
     if not Registro.ValueExists('SPM') then
       Registro.WriteString('SPM',(Application.ExeName));
   finally
    Registro.Free;
   end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,swp_nosize or swp_nomove and
swp_NoSendChanging and swp_noreposition);
if (GetForegroundWindow <> Form1.Handle) then
   SetForegroundWindow(Form1.handle);
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var Old : Integer;
begin
if (Uppercase(Edit1.text)='PWD') and (Uppercase(Edit2.text)='CIAO') then
begin
      UnHookWindowsHookEx(HookHandle);
      SystemParametersInfo(Spi_ScreenSaverRunning,0,@old,0);
      Form1.close;
    end
    else
      Label3.Caption := 'Password Errata';
end;
procedure TForm1.FormShow(Sender: TObject);
begin
  With Form1 do begin
     Top := 1;
     Left := 1;
     Height := Screen.Height;
     Width := Screen.Width;
  end;
  SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,swp_nosize or swp_nomove
and swp_NoSendChanging and swp_noreposition);
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
  Label3.caption:='';
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
  Label3.caption:='';
end;
end.
---
Ciao! :)
--
- Carlo -
c.b...@libero.it



Ti posso chiedere a cosa ti serve creare un'applicazione-chiosco ?
Dato che ritengo questo genere di applicazioni molto fragili dal punto
di vista della sicurezza e anche poco affidabili (per i vari
trucchetti messi in gioco per realizzarle) mi diresti qual e' il
problema di partenza ?

 tastini...
questa e' una parola, la soluzione non e' unica e dipende dal sistema
operativo; bisognerebbe anche bloccare il task manager e via dicendo, non e'
semplice.
Ciao, Sandro

> borderstyle:=bsnone
chiaramente devi aggiungere anche windowstyle:=wsmaximized. La finestra
occupera' tutta la superficie dello schermo, taskbar compresa.
Ciao, Sandro

Ecco un piccolo esempio ... piazza un Timer (interval 300..400) due edit un
[...]
Mi associo ad Andrea. Non ho letto il tread dall'inizio.
A cosa serve???
Control Esc o Tab all'avvio in maniera che non carichi la roba in piu
esecuzione automatica e cestino (stesso dicasi se lo fai partire da
chiave di registro dentro al regedit) Se riesci a metterlo su ancora
prima però, forse funziona.
Non capisco tutte le chiamate che hai fatto, quindo forse mi hai già
prevenuto pero... ctrl-alt-canc Termina applicazione Posso killarti ho
mi hai trappolato la combinazione magica. 
Ops! forse ho capito. Mostra con tastiera sotto chiave e solo il mouse
a disposizione. Si, cosi riesci a evitare che ti facciano del danno.
non vedo come fregarlo se non battendo il timer interval 300..400
in velocità.

 in velocità.
Ci sono moltissimi modi per fregare applicazioni di questo tipo ... da una
stupidata che potrebbe consistere nel riavviare il sistema in modalità
provvisoria (esiste, tuttavia, una applicazione che blocca i vari tasti Fxx
al riavvio del sistema) a quella di creare un CD che all'autorun carichi
un'applicazione che killa la mia (TerminateProcess + CloseHandle e QUALSIASI
applicazione va KO).
Infatti il mio è solo un "esempio" illustrativo, di certo non vuole essere
una applicazione da inserire in qualche chiosco a rischio.
Saluti


una applicazione da inserire in qualche chiosco a rischio.
anche se forse è sembato, non intendevo criticare, ma solo chiedere
che tipo di persone doveva scoraggiare.
se presumiamo un accesso all'hardware allora non credo che nulla possa
prevenire il togliere la pila per resettare un eventuale password del
bios, partenza da floppy di boot e via.
Bye

 bios, partenza da floppy di boot e via.
Su questo non c'è dubbio.


girare per il resto del sistema.
In questi casi non serve una blindatura.
Serve avere una interfaccia di utilizzo che escluda "fisicamente" le
possibilita' di aggirare l'applicazione.
Il terminale della videoteca non ti consente di andare sul menu' di
Windows (sebbene e' possibile che l'applicazione che c'e' sotto sia
una normale applicazione di un normale sistema Windows) perche' i
tasti che l'utente ha "fisicamente" a disposizione sono tali da
consentirgli solo uno stretto numero di operazioni, controllate da
programma.

 programma.
Si, quello che dici è vero nel caso della videoteca, ma non sempre.
Ad esempio all'interno della biblioteca che frequento è presente un
terminale vero e proprio (con tanto di periferiche collegate) sul quale gira
una applicazione che ti deve informare sui libri ma che ti "blocca" dal
resto del sistema. Forse il mio esempio sul terminale delle ferrovie non era
validissimo!
Cmq penso che ci siamo capiti
