Newsgroup: it.comp.lang.delphi
Titolo: [d5][d6] disattivare una periferica da codice

Ciao a tutti, nessuno di voi ha mai disattivato una periferica da codice 
delphi?
dovrei fare un applicazione che abilita mouse e tastiera solo quanto mi 
arriva un certo input all'interno di un db e la disattiva quando viene 
premuto un certo comando... come si pu� eseguire la funzione che fa windows 
da gestione periferiche su xp (abilita o disabilita)?
Simone 

 dovrei fare un applicazione che abilita mouse e tastiera solo quanto mi 
hai cercato "delphi disable keyboard" oppure "device" in google?
il primo risultato mi dï¿œ questo:
http://delphi.about.com/cs/adptips2000/a/bltip1200_5.htm
-- 
Morde

 ha scritto nel messaggio 
news:4a1ada09$0$18933$4faf...@reader2.news.tin.it...

Pi� che disattivare tastiera e mouse io intercetterei gli eventi e li 
attiveri solo se...
La disattivazione e la riattivazione sono funzionalit� lente, e con winzozz
non si sa mai....
Ciao
C. 

grazie per la risposta, ora provo... il problema � che il mouse in realt� � 
un touchscreen USB
Simone

grazie per l'info, avevo cercato male... ho appena provato e funziona... mi 
son accorto perï¿œ che il mio problema ï¿œ:
ho 2 monitor touchscreen su un pc (collegati via usb) dovrei disattivare uno 
o l'altro a seconda della mia applicazione, come posso fare solo per 
disattivare A o B? questi vengono visti come seriali virtuali
Simone 

 disattivare A o B? questi vengono visti come seriali virtuali
escludendo la tua app e il fatto che sono usb...
1) Tu riesci da pannello di controllo in modo "standard" a attivare o
disattivare questi monitor??
2) dalla confezione dei monitor non è uscito niente che somigli ad un
software per gestire queste cose, magari con qualche esempio scritto
in c/c++?
A.

1) Tu riesci da pannello di controllo in modo "standard" a attivare o
disattivare questi monitor??
beh da pannello gestione periferiche facendo attiva / disattiva periferica 
posso bloccare il touch sul monitor1 o il monitor 2
2) dalla confezione dei monitor non � uscito niente che somigli ad un
software per gestire queste cose, magari con qualche esempio scritto
in c/c++?
hehe magari... son prodotti fatti in cina quindi non esiste molto (nemmeno 
email)... ho solo visto che l'applicazione ha un settaggio tipo [x] 
disabilita monitor 1 / 2 per� non ho trovato nessuna chiave nel registro e/o 
file ini che somigliassero all'applicazione 

 file ini che somigliassero all'applicazione
col file ini o i settaggi possiamo al max dire
"ooooooooooooooooooooooooooooooooooooo!"
Quello che servirebbe è un "qualcosa" che ti permetta di pilotare i
due cosi...magari un COM..
Ma se vai solo via driver e hai solo quello la vedo nera.
A.

il problema in realt� � che il touch funziona, per� io devo disattivarlo via 
drivers, uno sviluppatore Visual C mi ha scritto che con le api si pu� fare, 
per� sinceramente non saprei che api ci sia per eseguire disattiva dei 
device, pu� essere che si faccia da registro?
Simo 

 device, puï¿œ essere che si faccia da registro?
http://www.google.it/search?hl=it&q=delphi+remove+usb+drive
-- 
Morde

giï¿œ provata... questo ï¿œ un device usb che viene visto come touch mouse #1 e 
touch mouse #2
Simone 

 touch mouse #2
Cosa hai giï¿œ provato ? Quello ï¿œ un link ad una query a google..
Ad ogni modo: su Jedi hanno wrappato le API per gestire la usb, cerca 
il demo *scapi* in questa pagina: 
http://jedi-apilib.sourceforge.net/
A questo punto non puoi non risolvere.
Ciao
-- 
Morde

 A questo punto non puoi non risolvere.
Ti metto anche questo:
http://tinyurl.com/rdrj4a
-- 
Morde

trovato
http://stackoverflow.com/questions/252185/-net-how-do-i-disable-a-system-device

 
http://stackoverflow.com/questions/252185/-net-how-do-i-disable-a-system-device
Chiedevi come disattivarla da delphi, non da c#.
A volte un'omissione fa perdere tempo per nulla, la prossima volta sii 
piu' preciso per favore.
-- 
Morde

si era da delphi infatti... perï¿œ non trovando nulla, ho cercato altro... ma 
in ogni caso non so come avere quell'api su delphi
Simo 

 in ogni caso non so come avere quell'api su delphi
mi spiace per te, ma credo che non ci capiamo: il codice in c# che hai 
trovato ma che non ha senso perchï¿œ non lo puoi usare con delphi.. non 
fa uso diretto di API win32 ma di funzioni di una libreria .net : sono 
due cose diverse.
Io ti ho postato piu' link di pagine con codice delphi, e vorrei che tu 
mi facessi vedere come l'hai provato, postando il codice che hai usato: 
ï¿œ cosï¿œ che ci si spiega sul ng.. non continuando a fare tentativi 
finchï¿œ uno non indovina quello che tu vorresti.
Se insisti con Jedi, sicuramente da questa cosa ne esci.
Ciao
-- 
Morde

 in ogni caso non so come avere quell'api su delphi
il modo c'è, simone.
Le soluzioni non cadono dal cielo: ci tocca sbatterci.
Ma finche uno non va 2 mm oltre il prp naso non arriva da nessuna
parte.
Hai scaricato quella cosa scritta in c#, si  o no?
Se l'hai scaricata, l' hai letta o no?
Se l'hai letta, cosa hai trovato di interessante la dentro?
Puoi postare qua le parti di quella unit che secondo te possono essere
importanti?
A.

avete perfettamente ragione, per� putroppo sto facendo dell'altro e nei 
ritagli sto cercando di prendere info... l'unica cosa interessante che ho 
trovato � che esiste un api che enumera l'elenco di tutti i dispositivi di 
gestione periferiche e un altra che setta true o false il loro 
funzionamento... il problema � che su delphi non � disponibile tale api e 
servir� agganciarsi a qualche dll ( qui ovviamente non so come procedere)... 
per quanto riguarda gli altri link postati da Morde, li ho gi� usati in 
passato per rimuovere periferiche usb, per� nel mio caso non vanno bene in 
quanto � troppo lenta la procedura rispetto a disattivarla da periferiche
Simo 

 il problema è che su delphi non è disponibile tale api e
mi spieghi il xche di questa cosa che dici?
A

> il problema � che su delphi non � disponibile tale api e
<mi spieghi il xche di questa cosa che dici?
beh vedendo l'articolo del C# e cercando su msdn di microsoft ho visto che 
ci sono api che permettono l'enumerazione dei dispositivi e anche 
l'attivazione/disattivazione del driver, per risolvere il mio problema 
basterebbe quello... per� non so come dichiarare un api del genere
Simone

Qua sotto c'è un estratto di quella cosa scritta in c#:
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr RegisterDeviceNotification(IntPtr
hRecipient, DEV_BROADCAST_DEVICEINTERFACE NotificationFilter, UInt32
Flags);
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern uint UnregisterDeviceNotification(IntPtr
hHandle);
        [DllImport("setupapi.dll", SetLastError = true)]
        public static extern IntPtr SetupDiGetClassDevs(ref Guid
gClass, UInt32 iEnumerator, IntPtr hParent, UInt32 nFlags);
        [DllImport("setupapi.dll", SetLastError = true)]
        public static extern int SetupDiDestroyDeviceInfoList(IntPtr
lpInfoSet);
        [DllImport("setupapi.dll", SetLastError = true)]
        public static extern bool SetupDiEnumDeviceInfo(IntPtr
lpInfoSet, UInt32 dwIndex, SP_DEVINFO_DATA devInfoData);
        [DllImport("setupapi.dll", SetLastError = true)]
        public static extern bool SetupDiGetDeviceRegistryProperty
(IntPtr lpInfoSet, SP_DEVINFO_DATA DeviceInfoData, UInt32 Property,
UInt32 PropertyRegDataType, StringBuilder PropertyBuffer, UInt32
PropertyBufferSize, IntPtr RequiredSize);
        [DllImport("setupapi.dll", SetLastError = true, CharSet =
CharSet.Auto)]
        public static extern bool SetupDiSetClassInstallParams(IntPtr
DeviceInfoSet, IntPtr DeviceInfoData, IntPtr ClassInstallParams, int
ClassInstallParamsSize);
        [DllImport("setupapi.dll", CharSet = CharSet.Auto)]
        public static extern Boolean SetupDiCallClassInstaller(UInt32
InstallFunction,IntPtr DeviceInfoSet, IntPtr DeviceInfoData);
Cosa vedi, Simone? spiega....
A.

mmm
la dichiarazione delle funzioni??? avevo il prosciutto sugli occhi :(

> la dichiarazione delle funzioni??? avevo il prosciutto sugli occhi :(
spiega, simone, spiega.....
A.

non ti seguo...
da quello che ho visto sono dichiarazioni delle funzioni scritte in C# 
giusto? 

le *dichiarazioni* sono scritte in c#
ma le api sono di windows e come tali LE CHIAMI DA DOVE VUOI, DELPHI
COMPRESO.
Mo il tuo passo successivo quale dovrebbe essere?
A.

beh provare a creare un header delle dichiarazioni da delphi e poi provare 
ad usarle
Simo 

 ad usarle
...xche invece non vedere se su qualche post anche di ng in inglese
gli header li trovi gia pronti?
e dopo, xche non vedere se qualcuno ha gia usato queste api?
A.

 e dopo, xche non vedere se qualcuno ha gia usato queste api?
Quelli del progetti JEDi le hanno gi� convertite
http://jedi-apilib.sourceforge.net/
in particolare 
* scapi (Setup & Config Manager API)
These are the APIs to deal with device installation and uninstallation and 
other related issues.
ACSH
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

...che dire... a parte questa figura di m.... (probabilmente perch� son 
cotto)...
Grazie