Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
Lo chassis in Ceraluminium è il cuore di questo notebook in edizione 2026, un modello pensato per garantire produttività con le tipiche applicazioni di produttività personale e capace di offrire un'autonomia di funzionamento lontano dalla presa di corrente da riferimento. Potenza, facilità di trasporto e costruzione robusta tutto in un notebook compatto.
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-01-2006, 13:15   #1
bouncey2k
Member
 
Iscritto dal: Jan 2006
Messaggi: 271
[c++] modificare l'ora

Ciao a tutti! Vorrei sapere come è possibile modificare l'ora che compare nella barra di windows, sostituendovi per esempio una scritta. So che questi dati vengono modificati in (ditemi se sbaglio) HKEY_CURRET_USER > Control Panel > International nei file
- s1159
- s2359
- sTimeFormat
- TimeFormat

grazie. ciao.
bouncey2k è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2006, 13:48   #2
bouncey2k
Member
 
Iscritto dal: Jan 2006
Messaggi: 271
up...
bouncey2k è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2006, 14:32   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Ciao, che io sappia, nella chiave che hai detto, il valore s1159 indica il testo da aggiungere per l'ora "AM", il valore s2359 indica il testo da aggiungere per l'ora "PM" e il valore sTimeFormat indica appunto il formato completo dell'ora.
Puoi senz'altro modificare questi valori, mettendo ad esempio in sTimeFormat la stringa "Ciao" per avere questa stringa al posto dell'orologio.
Ma tieni presente che questa è una impostazione globale per l'utente e quindi va ad influire anche su tutte le altre applicazioni che usano le funzioni di formattazione dell'ora!!! Quindi sei avvisato ...
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 12:43   #4
bouncey2k
Member
 
Iscritto dal: Jan 2006
Messaggi: 271
Quote:
Originariamente inviato da andbin
Ciao, che io sappia, nella chiave che hai detto, il valore s1159 indica il testo da aggiungere per l'ora "AM", il valore s2359 indica il testo da aggiungere per l'ora "PM" e il valore sTimeFormat indica appunto il formato completo dell'ora.
Puoi senz'altro modificare questi valori, mettendo ad esempio in sTimeFormat la stringa "Ciao" per avere questa stringa al posto dell'orologio.
Ma tieni presente che questa è una impostazione globale per l'utente e quindi va ad influire anche su tutte le altre applicazioni che usano le funzioni di formattazione dell'ora!!! Quindi sei avvisato ...
ho capito.. al livello pratico (in c++) come posso fare? qualche dritta?
PS: ho le basi del c++.
bouncey2k è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:09   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da bouncey2k
ho capito.. al livello pratico (in c++) come posso fare? qualche dritta?
PS: ho le basi del c++.
Se proprio devi scrivere in quei valori ... io so farlo usando le API Win32. Ecco un esempio (non l'ho testato ma comunque dovrebbe funzionare):
Codice:
LONG lRet;
HKEY hKey;
CHAR szFormat[] = "Ciao";

lRet = RegOpenKeyEx (HKEY_CURRENT_USER, "Control Panel\\International",
                     0, KEY_WRITE, &hKey);

if (lRet == ERROR_SUCCESS)
{
    lRet = RegSetValueEx (hKey, "sTimeFormat", 0, REG_SZ, (const BYTE*) szFormat, lstrlen (szFormat) + 1);

    if (lRet == ERROR_SUCCESS)
    {
      /* Successo */
    }

    RegCloseKey (hKey);
}
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:20   #6
bouncey2k
Member
 
Iscritto dal: Jan 2006
Messaggi: 271
ma quel codice non va inserito in un contesto?
bouncey2k è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:30   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da bouncey2k
ma quel codice non va inserito in un contesto?
Scusa ... cosa intendi per contesto??
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2006, 01:12   #8
bouncey2k
Member
 
Iscritto dal: Jan 2006
Messaggi: 271
Quote:
Originariamente inviato da andbin
Scusa ... cosa intendi per contesto??
che compilato solamente in quel modo non funziona..
bouncey2k è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2006, 18:24   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da bouncey2k
che compilato solamente in quel modo non funziona..
Beh, ovvio! Il blocco di codice che ho postato va messo, naturalmente, all'interno di una funzione. Ma io non so come vuoi fare questa applicazione, cioè se vuoi creare una applicazione Win32 console, Win32 gui, ecc... e quindi ho solo postato il blocco di codice utile e basta.

Se vuoi fare una applicazione Win32 console, il codice completo sarebbe, ad esempio:
Codice:
#define STRICT
#include <windows.h>
#include <stdio.h>

int main (int argc, char *argv[])
{
    LONG lRet;
    HKEY hKey;
    CHAR szFormat[] = "Ciao";

    lRet = RegOpenKeyEx (HKEY_CURRENT_USER, "Control Panel\\International",
                         0, KEY_WRITE, &hKey);

    if (lRet == ERROR_SUCCESS)
    {
        lRet = RegSetValueEx (hKey, "sTimeFormat", 0, REG_SZ, (const BYTE*) szFormat, lstrlen (szFormat) + 1);

        if (lRet == ERROR_SUCCESS)
            printf ("Scrittura valore avvenuta correttamente!\n");
        else
            printf ("Scrittura valore fallita!\n");

        RegCloseKey (hKey);
    }
    else
        printf ("Errore nella apertura della chiave!\n");

    return 0;
}
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2006, 09:54   #10
bouncey2k
Member
 
Iscritto dal: Jan 2006
Messaggi: 271
grazie, sei stato molto utile.
mi chiedevo però una cosa. Con quel codice l'ora viene cambiata solo al riavvio. E' possibile farla cambiare appena eseguito l'exe?

EDIT: il codice mi permette di immettere solo 4 caratteri? come posso aumentarli?
EDIT_2: altra cosa bizzarra.. se scrivo "CIAO" me lo legge.. se scrivo "HOLA" mi compare "11OLA".. 11 perché sono le 11 e qualcosa.. ma perché fa così se i caratteri sono sempre 4?

Ultima modifica di bouncey2k : 25-01-2006 alle 10:02.
bouncey2k è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2006, 11:24   #11
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da bouncey2k
grazie, sei stato molto utile.
Prego!

Quote:
Originariamente inviato da bouncey2k
mi chiedevo però una cosa. Con quel codice l'ora viene cambiata solo al riavvio. E' possibile farla cambiare appena eseguito l'exe?
Sì, in effetti modificare quei valori del registro non causa l'applicazione immediata delle modifiche alle altre applicazioni.
La soluzione comunque c'è! Inviare il messaggio WM_SETTINGCHANGE in broadcast a tutte le applicazioni con questo codice:
Codice:
DWORD   dwRetval;
...
...
SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) "intl", SMTO_ABORTIFHUNG, 10000, &dwRetval);
dwRetval lo puoi ignorare. Se vuoi puoi testare eventualmente cosa ti ritorna la SendMessageTimeout (restituisce un LRESULT che se è != 0 indica successo altrimenti errore).

Quote:
Originariamente inviato da bouncey2k
EDIT: il codice mi permette di immettere solo 4 caratteri? come posso aumentarli?
Dal momento che ho dichiarato la stringa come CHAR szFormat[] e che alla RegSetValueEx passo lstrlen (szFormat) + 1, puoi mettere la stringa della lunghezza che vuoi.

Quote:
Originariamente inviato da bouncey2k
EDIT_2: altra cosa bizzarra.. se scrivo "CIAO" me lo legge.. se scrivo "HOLA" mi compare "11OLA".. 11 perché sono le 11 e qualcosa.. ma perché fa così se i caratteri sono sempre 4?
Non è un errore! Succede perché il valore in "sTimeFormat" indica un formato ed alcune lettere sono "speciali". Esempio: "h" per l'ora (12 ore), "H" per l'ora (24 ore), "m" per i minuti, ecc...
Una soluzione potrebbe essere quella di mettere in "sTimeFormat" la stringa "tt" che indica di mettere il "time marker" cioè la dicitura relativa ad AM/PM ed impostare entrambi i valori "s1159" e "s2359" alla stringa che vuoi tu.


Nota finale: oltre a scrivere in quei valori del registro, si possono cambiare le impostazioni del locale con la funzione SetLocaleInfo, che è il modo "pulito" di accedere a queste informazioni. L'accesso al registro (che è quello che fa poi la SetLocaleInfo) è comunque fattibile.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2006, 12:05   #12
bouncey2k
Member
 
Iscritto dal: Jan 2006
Messaggi: 271
1) mettendo il codice
Codice:
DWORD   dwRetval;
...
...
SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) "intl", SMTO_ABORTIFHUNG, 10000, &dwRetval);
funziona solo se lancio l'eseguibile 2 volte.. la prima volta non accade nulla.

2) Non ho capito bene ancora una cosa sui caratteri.. Il massimo di caratteri che posso usare arrivare sulla 30ina circa..

3) "Una soluzione potrebbe essere quella di mettere in "sTimeFormat" la stringa "tt" che indica di mettere il "time marker" cioè la dicitura relativa ad AM/PM ed impostare entrambi i valori "s1159" e "s2359" alla stringa che vuoi tu." .. in che modo?
bouncey2k è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2006, 13:24   #13
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da bouncey2k
1) mettendo il codice
Codice:
DWORD   dwRetval;
...
...
SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) "intl", SMTO_ABORTIFHUNG, 10000, &dwRetval);
funziona solo se lancio l'eseguibile 2 volte.. la prima volta non accade nulla.
Uhm ... molto strano, a me funziona benissimo.

Quote:
Originariamente inviato da bouncey2k
2) Non ho capito bene ancora una cosa sui caratteri.. Il massimo di caratteri che posso usare arrivare sulla 30ina circa..

3) "Una soluzione potrebbe essere quella di mettere in "sTimeFormat" la stringa "tt" che indica di mettere il "time marker" cioè la dicitura relativa ad AM/PM ed impostare entrambi i valori "s1159" e "s2359" alla stringa che vuoi tu." .. in che modo?
Allora ... ho fatto alcune prove, giusto anche per capire meglio io. Nel post precedente ti avevo detto che si può usare la SetLocaleInfo per impostare le informazioni sul locale. Questo è vero, ma la SetLocaleInfo fa parecchi controlli per stabilire se un valore è valido o meno. Il seguente codice:
Codice:
SetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, "tt");
fallisce di brutto con errore ERROR_INVALID_PARAMETER perché (deduco io) secondo la funzione è sbagliato impostare solo il "time marker" senza alcun formato dell'ora prima!!!!
Quindi "cancella" quanto ti ho detto sulla SetLocaleInfo.

Per quello che vuoi fare tu, devi per forza scrivere direttamente nel registry. Ecco il codice:
Codice:
#define STRICT
#include <windows.h>
#include <stdio.h>

int main (void)
{
    LONG    lRet;
    HKEY    hKey;
    DWORD   dwRetval;
    CHAR    szFormat[] = "tt";
    CHAR    szText[] = "Hello da Andrea";

    lRet = RegOpenKeyEx (HKEY_CURRENT_USER, "Control Panel\\International",
                        0, KEY_WRITE, &hKey);

    if (lRet == ERROR_SUCCESS)
    {
        lRet = RegSetValueEx (hKey, "sTimeFormat", 0, REG_SZ, (const BYTE*) szFormat, lstrlen (szFormat) + 1);
        printf ("Scrittura valore sTimeFormat: %s\n", lRet == ERROR_SUCCESS ? "OK" : "Errore");

        lRet = RegSetValueEx (hKey, "s1159", 0, REG_SZ, (const BYTE*) szText, lstrlen (szText) + 1);
        printf ("Scrittura valore s1159: %s\n", lRet == ERROR_SUCCESS ? "OK" : "Errore");

        lRet = RegSetValueEx (hKey, "s2359", 0, REG_SZ, (const BYTE*) szText, lstrlen (szText) + 1);
        printf ("Scrittura valore s2359: %s\n", lRet == ERROR_SUCCESS ? "OK" : "Errore");

        RegCloseKey (hKey);

        SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) "intl", SMTO_ABORTIFHUNG, 10000, &dwRetval);
    }
    else
        printf ("Errore nella apertura della chiave!\n");

    return 0;
}

In effetti anche io ho notato un limite nella lunghezza della stringa. Nella barra di Windows riesco a far visualizzare un massimo di 36 caratteri. Penso che non si possa fare nulla per superare questo limite. Presumo che sia un limite di Explorer o delle funzioni di formattazione della data/ora.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto ASUS Zenbook 14 (UX3480AA): tanta autonomia con ...
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
OPPO Find X10 Series sarà present...
Google e Zuckerberg puntano sulla cellul...
MSI Prestige N16 Flip AI+ disponibile su...
Proofpoint presenta Agentic Data and AI ...
Instagram porta i nuovi strumenti di edi...
NVIDIA, l'accordo da 20 miliardi con Gro...
Una macchina da caffè ha generato 1 TB i...
Samsung, vendere smartphone conviene sem...
Cani a bordo sotto controllo su Rivian R...
Test segreti per violare la crittografia...
La Smart Home che anticipa le tue esigen...
Samsung registra un utile operativo reco...
Non solo video: come l'assistente IA di ...
La ricerca di Windows 11 farà molto più ...
NVIDIA RTX Spark, Microsoft promette cen...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:01.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v