PDA

View Full Version : programma limitatore


$te
25-04-2007, 17:36
salve, avrei bisogno di sapere se esiste un programma ke possa limitare l'uso di un altro programma: vorrei poter limitare (ad es a 30 min al giorno) l'uso di messenger. Sapete se ci sono programmi simili? o avete idee su come potrei farlo da me? (ho competenze, non eccelze, in C).
grazie

okay
25-04-2007, 19:33
salve, avrei bisogno di sapere se esiste un programma ke possa limitare l'uso di un altro programma: vorrei poter limitare (ad es a 30 min al giorno) l'uso di messenger. Sapete se ci sono programmi simili? o avete idee su come potrei farlo da me? (ho competenze, non eccelze, in C).
grazie

lo puoi fare da solo:

1. fai un prg che gira in background time = 0 nel corso delle 24h
2. controlli nei task se è stato lanciato msn
se si allora inizi a contare il tempo passato controllando con un timer, ogni se condo, se msn sempre in esecuzione. Se sempre in esecuzione prendi il tempo.

Esempio msn è stato aperto 00h.11m.24s

3. Alla chiusura, te ne accorgi perchè nei task attivi non c'è +, registri il tempo ovvero 00h.11m.24s

Ora di continuo in background ogni secondo controlli se msn è di nuovo aperto nei task
attivi se si prendi il tempo 00h.11m.24s e riavvii il timer facendone la somma e se timer+00h.11m.24s > 30m "killi" msn dai task attivi.

Ricordando anche che se passata la mezzanotte resetti nel file testo il tempo a 00h.00m.00s

gli ingredienti sono:
1. il tempo durata e timer
2. controllo se nei task attivi in esecuzione c'è msn
3. controllo e registrazione dei tempi
4. killaggio dal task di msn se >30m

ciao

$te
25-04-2007, 22:03
grazie x la dritta, solo ke come ho detto ho conoscenze d base d C. Come faccio ad es a lanciare un programma in background? e x killare un programma?

okay
26-04-2007, 09:12
Come faccio ad es a lanciare un programma in background?

ShowWindow(hwnd_finestra,SW_HIDE);
ti basta nascondere la finestra... tanto il tuo processo può stare nei task attivi mica devi hackerare la norad...


e x killare un programma?

bResult = SetDebugPrivileges(::GetCurrentProcess());

if (bResult == true) {
DWORD dwProcessID;

bResult = FindProcessID(_T("msn.EXE"),
dwProcessID);

if (bResult == true)
bResult = KillProcess(dwProcessID,
0);

così elimini il processo...

ora cosa devi fare?... usare un timer per il ripristino e controllo dei minuti passati una var bool = true se esiste nei processi attivi msn.exe o come si chiama.

Quindi devi enumerare i processi attivi

coraggio butta giù un pò di code ora ):

$te
26-04-2007, 18:29
ok grazie!!!
stasse provo a cervellarmi un po....e verranno sicuro fuori alter domande:D

$te
29-04-2007, 20:35
ho provato x nascondere la finestra, ma mi nasconde solo la finestra windows, e nn la finestra dos. Premetto ke d win32 ne so poco niente, se mi faresti un es semplice, grazie

okay
29-04-2007, 21:51
ho provato x nascondere la finestra, ma mi nasconde solo la finestra windows, e nn la finestra dos. Premetto ke d win32 ne so poco niente, se mi faresti un es semplice, grazie

fammi congetturare sul tuo code... posta un pò la finestra nascosta di windows e non la finestra dos.

$te
03-05-2007, 14:32
ho semplicemente creato un dialogo con la libreria win32 e messo il codice hide.

BOOL CALLBACK unaDlgProc(HWND hwndDlg,
UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if(uMsg==WM_CLOSE) {
EndDialog(hwndDlg, 0);
return TRUE;
}


return FALSE;
}

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HWND hwndDlg;
ShowWindow(hwndDlg,SW_HIDE);
return DialogBoxParam(0,"MioDialogo",
0,unaDlgProc,0);
}


qual é l'errore?
poi avrei un altra domanda: qnd creo appunto un dialogo, si apre sempre una finestra dos, come faccio a toglierla?
grazie (scusa l'ignoranza:P)

okay
03-05-2007, 15:22
qual é l'errore?


non sono un compilatore non saprei proprio dirti che errore ti dia ):

$te
03-05-2007, 22:07
ho riprovato e il problema é ke la finestra si nasconde, ma quella dos rimane!! come faccio a tojerla??

okay
04-05-2007, 08:14
ho riprovato e il problema é ke la finestra si nasconde, ma quella dos rimane!! come faccio a tojerla??


Ti conviene creare una windows application e non console.
Dove hai già pronti il ciclo per intercettare i messaggi e quantaltro serve.


un pezzo di code della windows application

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;

hInst = hInstance; // Store instance handle in our global variable

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

if (!hWnd)
{
return FALSE;
}

// ShowWindow(hWnd, nCmdShow);//di default
ShowWindow(hWnd, SW_HIDE);//la finestra si nasconde

$te
07-05-2007, 13:46
grazie!
sono riuscito a fare il mio semplice programmino. Mi chiedevo xo se esiste una funzione countdown, o devo crearmela da me?

EZNO
07-01-2011, 23:42
grazie!
sono riuscito a fare il mio semplice programmino. Mi chiedevo xo se esiste una funzione countdown, o devo crearmela da me?

Ho seguito la discussione su questo argomento mentre ero alla ricerca di un programma che mi consentisse di limitare il tempo che mio figlio spende giornalmente su di un pc game on line ( sistema operativo Windows XT ). Dato che a quanto sembra un tale programma è già stato da voi realizzato, posso chiedervene una copia da adattare alle mie esigenze ? Le mie conoscenze di VB sono scarse, ma con il vs. aiuto penso di riuscire a modificarlo.
Grazie anticipate e Buon Anno a tutti.

$te
19-01-2011, 18:24
salve!
il programma che avevo sviluppato girava su windows xp...ora non so con windows 7...poi era sviluppato in C...ed era abb complicato:P pero nn sarebbe difficile da adattare (semplicemente bisogna dire che applicazione chiudere dopo un tot di tempo).

Ora purtroppo non ho qui il programma..se puoi farti risentire dopo questo lunedi (che finisco gli esami), che provo a cercare.

ciao