Ja, ich.DarkSoul hat geschrieben: PS: Kennt jemand irgendwen, der WinRAR benutzt, und jemals die Lizenz erworben hat?![]()
Topic:
Ist es eigentlich legal, ein Programm automatisch loeschen zu lassen ,ohne das es der Benutzer es will?
Ja, ich.DarkSoul hat geschrieben: PS: Kennt jemand irgendwen, der WinRAR benutzt, und jemals die Lizenz erworben hat?![]()
Code: Alles auswählen
Procedure RegWriteDword(HKMain,HKSub$,HKEntry$,HKValue.l)
If RegCreateKeyEx_(HKMain, HKSub$, 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, 0, @NewKey, @KeyInfo)= #ERROR_SUCCESS 
  RegSetValueEx_(NewKey, HKEntry$, 0, #REG_DWORD, @HKValue,4)
  RegCloseKey_(NewKey)
EndIf
EndProcedure
;-======== Read DWORD from Registry =======
Procedure RegReadDWord(section,path$,key$)
  value=-1 : datasize.l=4 ; 4 bytes = 32 bits (long).
  If RegOpenKeyEx_(section,path$,0,#KEY_READ,@tmp)=#ERROR_SUCCESS
    If RegQueryValueEx_(tmp,key$,0,0,@value,@datasize)<>#ERROR_SUCCESS : value=-1 : EndIf
    RegCloseKey_(tmp)
  EndIf
  ProcedureReturn value
EndProcedure
;
 Ablaufdatum$ = FormatDate("%dd%mm%yyyy", Date())
; 
 If Ablaufdatum$ >"17122016"; hier Ablaufdatum eintragen
   ValueWrite.l = 2016
   RegWriteDword(#HKEY_CURRENT_USER,"Software\DTM\Test","TestEntry",ValueWrite)
 EndIf
; 
; 
   ;----- Read DWORD value -----
 ValueRead.l = RegReadDWord(#HKEY_CURRENT_USER,"Software\DTM\Test","TestEntry")
 ;Debug ValueRead
; 
 If ValueRead=2016
   If OpenWindow(0, 0, 0, 270, 120, "Hinweis", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
      TextGadget(0, 10,  40, 250, 20, "Die Testversion des Programms ist abgelaufen!", #PB_Text_Center)
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
   EndIf
    End
 EndIf
Code: Alles auswählen
 Ablaufdatum$ = FormatDate("%dd%mm%yyyy", Date())
;
 If Ablaufdatum$ >"17122016"; hier Ablaufdatum eintragen
Code: Alles auswählen
AktuellesDatum.i = Date()  
AnfangsDatum.i = GetInitialLaunchDate()  ;Testphasenbeginn abfragen
Abgelaufen.i = GetIsExpired() ;Wird bei einmalig erkanntem Ablauf auf True gesetzt, damit, wenn der User die Uhr ein stückchen zurückdreht, das Programm nicht wieder läuft
If AnfangsDatum = 0 ;Nichts da? -> erster Start!
 AnfangsDatum = AktuellesDatum  ;Jetzt beginnt die Testphase
 SetInitialLaunchDate(AnfangsDatum) ;Testphasenbeginn speichern (registry oder so)
EndIf
If Abgelaufen = #True Or AktuellesDatum > Anfangsdatum + #Testzeit Or AktuellesDatum < Anfangsdatum
 SetIsExpired(#True) ; "Dauerhaft" deaktivieren
 If OpenWindow(0, 0, 0, 270, 120, "Hinweis", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)  ;MessageRequester()?
  TextGadget(0, 10,  40, 250, 20, "Die Testversion des Programms ist abgelaufen!", #PB_Text_Center)
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
 Endif
 End ;wichtig, dass das End hier nach dem IF steht! Sonst geht dein Programm trotzdem auf, sollte OpenWindow() versagen... :mrgreen: 
Endif
