Newsgroup: it.comp.lang.delphi
Titolo: cambio di opzioni pannello di controllo da delphi .. quasi !

Salve al gruppo,
attraverso il seguente metodo
SystemParametersInfo(SPI_SETWHEELSCROLLLINES,rat_card,nil,SPIF_UPDATEINIFILE 
Or SPIF_SENDWININICHANGE);
cambio al volo il rating della rotellina del mouse, purtroppo la 
modifica non si riflette immediatamente sulle finestre giï¿œ aperte ma 
solo se queste vengono riaperte. Naturalmente la cosa non avviene dalle 
opzioni del mouse dal pannello di controllo che invece riflettono 
immediatamente le modifiche dopo aver fatto applica. In pratica non 
riesco a capire come emulare l'applica.
Suggerimenti ?
Dan

 Suggerimenti ?
La butto li: sicuro che sia "or" e non "and"?
A.

 La butto li: sicuro che sia "or" e non "and"?
Di solito nelle API la OR si usa algebricamente per sommare le varie 
opzioni, tipo checkbox, non ha funzioni di OR logico (o una o l'altra).
Magari mi sbaglio, ma non credo che si tratti di questo.
Ciao
-- 
Morde

 La butto li: sicuro che sia "or" e non "and"?
Se l'opzione A � 10000000 = 0x80 e l'opzione B � 01000000 = 0x40, l'and
tra i due restituisce 0, quindi n� A, n� B. Quel che si vuole fare,
invece, � specificare sia A che B, quindi ci vuole un or:
10000000 or
01000000 = 
11000000 = 0xC0
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Suggerimenti ?
Metti WM_SETTINGCHANGE al posto di "SPIF_UPDATEINIFILE Or 
SPIF_SENDWININICHANGE".
ACSH


 SPIF_SENDWININICHANGE".
Ho sbagliato a scrivere, ovviamente (sono piuttosto rincoglionito in
questi 
giorni)
Volevo scrivere: spedisci un messaggio WM_SETTINGCHANGE al sistema in modo 
che anche le finestre aperte si "accorgano" che � cambiata una
impostazione.
Ciao


 impostazione.
Ok grazie fatto e pare funzionare a dovere giusto per sicurezza estrema 
vorrei solo farti vedere come ho scritto il messaggio:
   rat_card := StrToInt64(rating);
   //Chiamo il metodo con riferimento al parametro dello scroll rate
 
SystemParametersInfo(SPI_SETWHEELSCROLLLINES,rat_card,nil,SPIF_UPDATEINIFILE 
Or SPIF_SENDWININICHANGE);
   //Comunico a tutte le finestre attive che l'opzione � cambiata.
   SendMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0, LongInt(lPar));
Noto comunque che esiste una certa differenza di velocit� tra l'applica 
della finestra del pannello di controllo e l'applica della mia 
applicazione. Parliamo di poco ma ad occhio nudo si nota.
Inoltre sospettando che la cosa possa freezzare l'app, ho fatto un po 
una ricerca ed � saltato fuori che il SendMessage inviando 
WM_SETTINGCHANGE se presente un driver Hp potrebbe freezzare l'app. La 
discussione � qui:
http://www.nntp.it/comp-lang-delphi/1810305-sendmessage-con-hp-laserjet-driver-congela-programma.html
e si consiglia di utilizzare
SendMessageTimeout
la chiamata diventa quindi
SendMessageTimeout( HWND_BROADCAST, WM_SETTINGCHANGE, 0,LongInt(lPar));
Mi confermate che l'invocazione � corretta ?

 Mi confermate che l'invocazione � corretta ?
Bh� ho scritto un po in fretta non facendo una prova mentre quella 
giusta dovrebbe essere questa dove Timeout � una costante di valore 1000 
e Risultato � un Cardinal:
   SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 
LongInt(lPar),SMTO_NORMAL,Timeout,Risultato);
Dani