Programm wie oft ausgeführt??
-
Du liest einfach den Zählerstand aus der Registry - ist der Wert nicht vorhanden, setzt du ihn auf 0. Dann einfach hochzählen und wieder reinschreiben. Wo ist da jetzt dein Problem

-
@flenders
Abschreiben mit eigenen Worten giebt die gelbe Karte
Mal ne andere Frage, willst du ne Trial machen, die z.B. nur 50 x gestartet werden kann? Es giebt auch diverse andere Tricks, z.B. das ändern der EXE Informationen (Version, Firmenname, bla bla).
-
MiC++ha schrieb:
@flenders
Abschreiben mit eigenen Worten giebt die gelbe Karte
Sorry, was wohl etwas langsam
Hab aber nicht abgeschrieben - ehrlich 
-
Ich habe mal ein Grundgerüst entworfen:
int zahl=0; // datum aus reg lesen if(datum!=heute) { // heutiges datum reinschreiben zahl=1; // zahl reinschreiben } else { // zahl auslesen zahl++; // zahl reinschreiben } // zahl auslesen cout<<zahl;Könnte das so funktionieren??
(Nein keine Trial! Am Ende soll nur eine Zahl rauskommen, die mir die Ausführungen pro Tag anzeigt)
-
Mit deinem Code weißt du dann aber nachher nur, wie oft das Programm an diesem Tag ausgeführt wurde

-
Ja genau das will ich ja

Mal schaun, ob ich das irgendwie in Quelltext umsetzen kann, wird wohl ein bißchen dauern

mp22
-
mp22 schrieb:
Am Ende soll nur eine Zahl rauskommen, die mir die Ausführungen pro Tag anzeigt
Das hörte sich für micht irgendwie nach einer Durchschnittswert-Berechnung an

Ansonsten sollte das schon so klappen

-
Hab ein Problem, mein Code(das Wichtigste):
// datReg ist das Datum in der Reg // dat ist das aktuelle heutige Datum int zahl=0, datReg=0; int dat=2709; HKEY hKey; RegCreateKeyEx(HKEY_CURRENT_USER,"Test",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0); RegSetValueEx(hKey,"KontrollDatum",0,REG_DWORD,(BYTE*)&datReg,sizeof(DWORD)); DWORD dwData = sizeof(DWORD); RegQueryValueEx(hKey,"KontrollDatum",0,0,(BYTE*)&datReg,&dwData); if(datReg!=dat) { datReg=dat; RegSetValueEx(hKey,"KontrollDatum",0,REG_DWORD,(BYTE*)&datReg,sizeof(DWORD)); DWORD Nummer=1; RegSetValueEx(hKey,"KontrollZahl",0,REG_DWORD,(BYTE*)&Nummer,sizeof(DWORD)); RegQueryValueEx(hKey,"KontrollZahl",0,0,(BYTE*)&Nummer,&dwData); cout<<Nummer; } else { DWORD dwData = sizeof(DWORD); //lesen RegQueryValueEx(hKey,"KontrollZahl",0,0,(BYTE*)&zahl,&dwData); zahl++; DWORD Nummer=zahl; RegSetValueEx(hKey,"KontrollZahl",0,REG_DWORD,(BYTE*)&Nummer,sizeof(DWORD)); RegQueryValueEx(hKey,"KontrollZahl",0,0,(BYTE*)&Nummer,&dwData); cout<<Nummer; } RegCloseKey(hKey);Ich hoffe es ist nicht zu verwirrend für euch! Ich blicke selbst nicht mehr durch! Hab auch nicht gerade viel Erfahrung mit dieser Art von Programmen! Kann mir jemand weiterhelfen?? Was mache ich falsch?? Für die Zahl kommt am Ende immer "1" raus(wie ich zuvor schon vermutet hatte)! Hängt wohl doch mit der Initialisierung zusammen! Weiß jemand eine Lösung?
(Womöglich habe ich auch absoluten Schrott zusammen gecodet
)mp22
-
Du hast dich nicht an deinem Pseudocode gehalten daher kommt "1" immer raus, denn du schreibst stehts immer als erstes den Startwert rein!
ERST LESEN OB KEY VORHANDEN BZW DAS DATUM STIMMT, WENN NICHT DANN 0 REIN SCHREIBEN, WENN GLEICHER TAG BZW. KEY VORHANDEN, DANN ERHÖHEN UND NEU REINSCHREIBEN
-
bzw. das ganze mal so Abhandeln:
Pseudocode:if (ERROR_SUCCESS == RegQueryValueEx(hKey,"KontrollDatum",0,0,(BYTE*)&datReg,&dwData) { if (datreg == dat) { /* erhöhen und schreiben */ } else { /* neues Datum schreiben */ /* 0 schreiben */ } } else { /* aktuelles Datum schreiben */ /* 0 schreiben */ }
-
Ich habe immernoch das gleiche Problem, langsam zweifle ich an meiner Fähigkeit

Hier ein komplettes lauffähiges Programm(ich erhalte immernoch die "1"):#include <iostream> #include <stdio.h> #include <time.h> #include <conio.h> #include <windows.h> using namespace std; int main() { int zahl=0, dat=2809, datReg=0; HKEY hKey; // erstellen RegCreateKeyEx(HKEY_CURRENT_USER,"Test",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0); DWORD dwData = sizeof(DWORD); if (ERROR_SUCCESS == RegQueryValueEx(hKey,"KontrollDatum",0,0,(BYTE*)&datReg,&dwData)) { if(datReg==dat) { zahl++; DWORD Nummer=zahl; RegSetValueEx(hKey,"KontrollZahl",0,REG_DWORD,(BYTE*)&Nummer,sizeof(DWORD)); //schreiben } else { RegSetValueEx(hKey,"KontrollDatum",0,REG_DWORD,(BYTE*)&dat,sizeof(DWORD)); //schreiben zahl=1; DWORD Nummer=zahl; RegSetValueEx(hKey,"KontrollZahl",0,REG_DWORD,(BYTE*)&Nummer,sizeof(DWORD)); //schreiben } } else { RegSetValueEx(hKey,"KontrollDatum",0,REG_DWORD,(BYTE*)&dat,sizeof(DWORD)); //schreiben zahl=1; DWORD Nummer=zahl; RegSetValueEx(hKey,"KontrollZahl",0,REG_DWORD,(BYTE*)&Nummer,sizeof(DWORD)); //schreiben } DWORD Nummer=zahl; RegQueryValueEx(hKey,"KontrollZahl",0,0,(BYTE*)&Nummer,&dwData);//lesen cout<<Nummer; //ausgeben RegCloseKey(hKey); //schließen getch(); return 0; }Es kann genausogut ein absolut bescheuerter Fehler drin sein, ich finde ihn aber nicht! Wer weiß noch was??
Gruß
mp22
-
Hast du mal überprüft, ob er auch in den richtigen if bzw. else Blöcken landet - und hast du mal überprüft, was für Werte ausgelesen werden?!
-
Grrrr ... so langsam werde ich
... flenders, halt ihn fest ich erstech ihn mit ->1. int zahl=0;
2. ist Datum gleich: zahl++ (also 1)
3. schreibst die zahl in die Reg (1 steht drinn)DAS IST FALSCH RICHTIG WÄRE:
1. zahl=0
2. ist Datum gleich: zahl auslesen, dann zahl++
3. wieder reinschreibenFazit: Du hast immer eins da du immer von 0 auf 1 erhöhst, du mußt vor der Erhöhung ist die alte zahl einlesen.
-
Hey super, es funktioniert!!
@ MiC++ha
genau das war der Fehler! Ich habs aber eben von alleine gemerkt...ehrlich
Sorry, für die Strapazen....war nicht von mir gewollt 
Nochmal danke an euch!!
MfG
mp22
-
Prima, dann werden das doch keine 10 Seiten hier im Thread
