Newsgroup: it.comp.lang.visual-basic
Titolo: Costringere as usare il mio prog.

Io ho l'esigenza di inserire un programma fatto in Vb5 in esecuzione
automatica che richieda una password. So gią dell'esistenza della password
di Win ma non la voglio usare, e sono anche in grado di far partire lo
stesso tipo di programma in autoexec prima del caricamento di windows,
usando il C++ (non visuale naturalmente).
Ma c'č un modo per costringere l'utente a finire di usare la mia
applicazione senza dargli la possibilitą di fare null'altro ? In sostanza
non fare il multi-task (non so se ho scritto bene) ? Vi prego di darmi una
mano grazie ..... Anderle Giacomo
ande...@tin.it
Bye !!!

l'unica cosa che mi viene al momento è...... nascondi barra di Windows,
massimizza la finestra del MDI e togli il control Box per la stessa. In
pratica l'utente non avrebbe la possibilità di passare ad un'altra
applicazione perchè la barra di stato di windows è nascosta e la form non si
può ridimensionare o spostare.
Boh. prova così
ciao Davide

 
ande...@tin.it
Semplice nel system.ini nella sezione boot cambi la riga shell=explorer.exe
in shell=NomeDelTuoProgramma.exe
(Tutto questo in win95 e credo 98....non so sotto nt...)
Saluti

...


...


io non lo sapevo che con i tasti CTRL ESC attivavi la barra del menù...
magari lo sanno in pochissimi (Quini non dirlo :-))) e poi mi viene in mente
, ma forse ci hai già provato, a prevedere a livello di routine la pressione
dei suddetti tasti e quindi ad escludere l'attivazione della barra.
bye

Bye !!!
Il problema di fondo nel discorso sta nel fatto che Win (nonostante
tutti i difetti che può avere) è un sistema comunque multitasking.
Nei sistemi di concezione + vecchia (ad es. AmigaDOS) esisteva una
funzione di sistema che bloccava il multitasking, ma ora bloccare il
multitasking vorrebbe dire bloccare sostanzialmente tutto il SO.
La soluzione proposta da Davide è (a mio avviso) la migliore attuabile
e non penso si possa fare di meglio.
Per impedire l'uso della combinazione CTRL-ESC per far apparire il
menu di avvio dovresti installare un hook di sistema che intercetta
gli eventi della tastiera PRIMA della shell (che è quella gestisce il
menu di avvio) ed eliminare tale evento dalla coda (credo si possa
fare, ma in VB non ho mai provato).
Ciao
Marco Frazzoli

...


Scusate, tra le tante prove che ho fatto ho dato main con troppi rem.
Sub Main()
'nasconde desktop
x = FindWindow("progman", 0&)
y = ShowWindow(x, SW_HIDE)
'nasconde taskbar
'x = FindWindow("Shell_TrayWnd", 0&)
'y = ShowWindow(x, SW_HIDE)
z = FindWindowEx(x, 0, "Button", nil)
'questo dovrebbe nascondere solo il tasto start
y = ShowWindow(z, SW_HIDE)
'questo chiude il tasto start
y = SendMessage(z, WM_CLOSE, 0, 0)
End Sub
In poche parole se togliete rem dopo 'nasconde taskbar' funziona
correttamente (la taskbar non viene piů visualizzata), mentre per il tasto
start non funziona.
Ero riuscito a nascondere il tasto start non ricordo piů con che API, perň
il problema ctrl-esc restava.
Mi chiedo: dato che molte API sono dichiarabili in piů di un modo, non č che
sto sbagliando semplicemente la dichiarazione?


Prova a rendere la finestra della tua applicazione "System Modal", in questo
modo funzionera' come finestra modale, ma a livello dell'intero sistema (non
e' possibile dare il focus a nessun altra finestra).
Non so se e' possibile (lo era in Windows 3.1), ma potrebbe funzionare.
--
Roal Zanazzi
z...@iol.it

Bye !!!

 sign brevis.

si anche questa è una soluzione. Capita spesso che Explorer generi un errore
e terminando il task Windows 95 gira lo stesso. Bravo
bye


---------
Ciao!
Ragazzi, penso di aver risolto il problema. Se per caso avete usato il mio
programma WinLock (giunto, tra l'altro, alla versione 3.02), vi sarete resi
conto che esso disattiva le combinazioni di tasti CTRL+ALT+CANC e ALT+TAB.
Ma la cosa più interessante è un'altra. Disattivando tali combinazioni e
nascondendo la Taskbar, la combinazione CTRL+ESC e il tasto Avvio delle
tastiere per Windows 95 vengono automaticamente disabilitati. Qui di seguito
vi riporto dichiarazioni e codice (provare per credere):
'Da incollare nella sezione dichiarazioni di un form...
Private Const SPI_SCREENSAVERRUNNING As Long = 97&
Private Declare Function SystemParametersInfo Lib "User32.dll" Alias
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long,
lpvParam As Any, ByVal fuWinIni As Long) As Long
Private Const SW_HIDE As Long = 0
Private Const SW_SHOW As Long = 5
Private Declare Function FindWindow Lib "User32.dll" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "User32.dll" (ByVal hwnd As Long,
ByVal nCmdShow As Long) As Long
Private Sub AllowKeys(bParam As Boolean)
    Dim lRetVal As Long, bOld As Boolean
    bParam = Not bParam
    lRetVal = SystemParametersInfo(SPI_SCREENSAVERRUNNING, bParam, bOld, 0&)
End Sub
Private Sub ShowTaskBar(Visible As Boolean)
    Dim tbarhWnd As Long
    tbarhWnd = FindWindow("Shell_TrayWnd", "")
    If Visible = True Then
        ShowWindow tbarhWnd, SW_SHOW
    Else
        ShowWindow tbarhWnd, SW_HIDE
    End If
End Sub
Ora, per nascondere la barra e inibire l'uso di CTRL+ESC e del tasto Avvio,
si utilizzano queste istruzioni:
    AllowKeys (False)
    ShowTaskBar (False)
Viceversa, per riattivare le combinazioni di tasti e per visualizzare la
barra, si usa questo codice:
    AllowKeys (True)
    ShowTaskBar (True)
Già che ci sono, consiglio a Giacomo, per il suo programma di protezione, di
guardare sul mio sito gli esempi relativi alle API che nascondono le icone
del desktop e limitano il movimento del cursore alla sola finestra del
programma.
Spero di essere stato di aiuto.
Alla prossima
Marco Minerva
http://www.armaditaggia.com/marco
http://www.geocities.com/SiliconValley/Foothills/7260/