PDA

Visualizza la versione completa : C++ Bloccare l' orologio tramite Programma


Trader
01-07-2007, 15:41
Ciao a tutti,
il mio e' un quesito un po' strano, lo so e forse impossibile da attuare...
Volevo sapere se era possibile tramite programma settare e bloccare l' orologio del sistema operativo Windows ad una data/ora prestabilita, tramite un programma, preferibilmente in C/C++

Ciao e grazie a tutti

MItaly
01-07-2007, 15:54
L'orologio basandosi sul clock hardware, va avanti per i fatti suoi, per cui l'unica cosa che puoi fare è richiamare continuamente la API SetSystemTime passandole l'ora a cui vuoi "bloccare" l'orologio, a meno che tu per "bloccare" non intenda "impedire che l'utente la modifichi", nel qual caso ne abbiamo già parlato (http://forum.html.it/forum/showthread.php?s=&threadid=1026543).

Trader
01-07-2007, 19:40
Ciao, grazie per la risposta.
Il mio intento e' quello di avere l' orologio di sistema che mostri sempre la stessa ora.
Lo scopo e' quello di far si che un programma indipendente dal mio, (in cui e' incluso una funzione random), generi sempre la stessa sequenza di numeri.

Solitamente tali funzioni random vengono "inizializzate" usando l' orologio di sistema, al fine di ottenere sequenze numeriche sempre differenti.

Il continuo SetSystemTime non penso mi possa aiutare dato che i programmi sono asincroni e tra una chiamata e l' altra dell'A.P.I. sopracitata, inevitabilmente intercorrera' un lasso di tempo.

In questa finestra temporale il secondo programma chiamera' la funzione per la generazione random dei numeri.
Il momento all' interno di questa finestra temporale sara' sempre diverso, di conseguenza anche la sequenza numerica dei numeri generati...

Comunque grazie tantissimo per l'aiuto.
Ciao e buona giornata

alka
01-07-2007, 21:31
Originariamente inviato da Trader
Lo scopo e' quello di far si che un programma indipendente dal mio, (in cui e' incluso una funzione random), generi sempre la stessa sequenza di numeri.
A che scopo?

Trader
01-07-2007, 22:17
Ciao Alka,
guarda, lo scopo finale purtroppo per ora non te lo posso dire, ma mi riprometto che lo rendero' pubblico non appena avro' terminato i test ( penso in un paio di settimane) sperando di raggiungere il mio obiettivo.

Se dovesse andare bene, sono sicuro che molti utenti ne potranno beneficiare.
Condivisione gratuita, questo e' per me lo spirito di internet :)
Ciao

MItaly
01-07-2007, 22:36
Credo anch'io che, se lo scopo è quello, il metodo che ti ho proposto sia assolutamente inadeguato; un'altra possibilità che mi viene in mente è di intercettare tutte le chiamate alle API che il programma effettua per ottenere data, ora e altre informazioni simili (può essere anche che si basi su API tipo GetTickCount o QueryPerformanceCounter) e restituire sempre lo stesso valore. Questo si potrebbe fare creando una dll stub compatibile a livello binario (e come nome, ovviamente) con kernel32.dll, che restituisca appunto sempre lo stesso valore per le API sopracitate e che invece per tutte le altre richiami la vera kernel32.dll.

guarda, lo scopo finale purtroppo per ora non te lo posso dire, ma mi riprometto che lo rendero' pubblico non appena avro' terminato i test ( penso in un paio di settimane) sperando di raggiungere il mio obiettivo.
Non ci dai neanche un'anticipazioncina? :cry:

alka
01-07-2007, 22:41
Originariamente inviato da Trader
guarda, lo scopo finale purtroppo per ora non te lo posso dire, ma mi riprometto che lo rendero' pubblico non appena avro' terminato i test

Visto che si tratta di una pratica che può tranquillamente aggirare meccanismi di protezione, chiudo la discussione, poiché questo tipo di argomenti non sono ammessi nel forum, ma mi riprometterò di riaprirla quando avrai deciso di rendere pubblico di cosa si tratta. :stordita:

P.S.: hai fatto pure crossposting (http://forum.html.it/forum/showthread.php?s=&threadid=1140058), tra l'altro. :dottò:

Loading