activelock-development Mailing List for ActiveLock (Page 4)
Brought to you by:
ialkan
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(5) |
Jul
(52) |
Aug
(170) |
Sep
(34) |
Oct
(62) |
Nov
(46) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(7) |
Feb
(2) |
Mar
|
Apr
(17) |
May
(14) |
Jun
(31) |
Jul
(59) |
Aug
(18) |
Sep
(3) |
Oct
|
Nov
|
Dec
(5) |
2005 |
Jan
|
Feb
(10) |
Mar
(3) |
Apr
(4) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: SourceForge.net <no...@so...> - 2004-07-11 00:59:23
|
Task #101661 has been updated. Project: ActiveLock Subproject: Management Team Summary: Team Member Removals Complete: 100% Status: Closed Authority : th2tran Assigned to: mcrute Description: The following member(s) have never participated in the development of 2.0 and should be removed from: - SF Development Team listing - Developers group ion the Message Boards - Dev Team web page They appear to be still semi-interested so we should still keep on the activelock-development mailing list. They can remove themselves if they are really not interested. The members are: - maineiac - ajcompany Follow-Ups: ------------------------------------------------------- Date: 2004-07-10 19:59 By: mcrute Comment: These two members were removed from all but the development mailing list. -Mike ------------------------------------------------------- For more info, visit: http://sourceforge.net/pm/task.php?func=detailtask&project_task_id=101661&group_id=70007&group_project_id=30874 |
From: SourceForge.net <no...@so...> - 2004-07-11 00:59:09
|
Task #101661 has been updated. Project: ActiveLock Subproject: Management Team Summary: Team Member Removals Complete: 100% Status: Open Authority : th2tran Assigned to: mcrute Description: The following member(s) have never participated in the development of 2.0 and should be removed from: - SF Development Team listing - Developers group ion the Message Boards - Dev Team web page They appear to be still semi-interested so we should still keep on the activelock-development mailing list. They can remove themselves if they are really not interested. The members are: - maineiac - ajcompany Follow-Ups: ------------------------------------------------------- Date: 2004-07-10 19:59 By: mcrute Comment: These two members were removed from all but the development mailing list. -Mike ------------------------------------------------------- For more info, visit: http://sourceforge.net/pm/task.php?func=detailtask&project_task_id=101661&group_id=70007&group_project_id=30874 |
From: SourceForge.net <no...@so...> - 2004-07-10 19:03:40
|
Task #101661 has been updated. Project: ActiveLock Subproject: Management Team Summary: Team Member Removals Complete: 0% Status: Open Authority : th2tran Assigned to: mcrute Description: The following member(s) have never participated in the development of 2.0 and should be removed from: - SF Development Team listing - Developers group ion the Message Boards - Dev Team web page They appear to be still semi-interested so we should still keep on the activelock-development mailing list. They can remove themselves if they are really not interested. The members are: - maineiac - ajcompany ------------------------------------------------------- For more info, visit: http://sourceforge.net/pm/task.php?func=detailtask&project_task_id=101661&group_id=70007&group_project_id=30874 |
From: Thanh H. T. <th...@us...> - 2004-07-09 08:31:44
|
Update of /cvsroot/activelock/activelock/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13324 Modified Files: ReleaseNotes.htm Log Message: Change logs for 2.0.9 Index: ReleaseNotes.htm =================================================================== RCS file: /cvsroot/activelock/activelock/docs/ReleaseNotes.htm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- ReleaseNotes.htm 2 Jul 2004 04:18:18 -0000 1.4 +++ ReleaseNotes.htm 9 Jul 2004 08:31:29 -0000 1.5 @@ -42,7 +42,7 @@ <center> <h1>Release Notes</h1> <h3>ActiveLock<sup><font size=-2>TM</font></sup> 2<br> -Beta 3 Candidate (July 01, 2004)</h3> +Beta 3 Candidate</h3> </center> <hr> <p> @@ -79,7 +79,18 @@ <a name="changes"><h2>Change History</h2></a> <blockquote> - <h3>2.0.8 (Beta 3) - July 01, 2004</h3> + <h3>2.0.9 - July 09, 2004</h3> + <h4>Bug Fixes In This Release</h4> + <p>The following bugs have been fixed in this release. + <ul> + <li>ALUGENLib Bug: + IALUGenerator_RetrieveProduct() raise appropriate error if product code set is invalid + (or if product info doesn't exist). + <li>alugenc Bug: Out of Memory error received if products.ini doesn't exists in the working directory. + Now looks for products.ini in the same directory as alugenc.exe. + </ul> + + <h3>2.0.8 - July 01, 2004</h3> <h4>General Changes</h4> <ul> <li>New command-line version of ALUGEN (alugenc.exe) is now included. |
From: Thanh H. T. <th...@us...> - 2004-07-09 08:30:30
|
Update of /cvsroot/activelock/alugen/console In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12596 Modified Files: alugenc.cpp alugenc.rc Log Message: Changes for 2.0.9 Index: alugenc.cpp =================================================================== RCS file: /cvsroot/activelock/alugen/console/alugenc.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- alugenc.cpp 2 Jul 2004 04:07:46 -0000 1.1 +++ alugenc.cpp 9 Jul 2004 08:30:18 -0000 1.2 @@ -44,6 +44,10 @@ * Date (MM/DD/YY) Author Description * --------------- ----------- -------------------------------------------------------------- * 06/28/04 th2tran Created + * 07/09/04 th2tran - Replaced ce->ReportException (which displays an error messagebox) + * with cerr output to keep the program free of any GUI + * - products.ini is now expected to reside in the same directory as alugenc.exe. + * Previously, it was assumed to be in the working directory. * ***********************************************************************************************/ @@ -144,13 +148,28 @@ alugenGlobals->CreateDispatch(_T("ALUGENLib.Globals")); _IALUGenerator alugen; alugen = alugenGlobals->GeneratorInstance(); - // Set StorePath - CString strPath; + + // Calculate full path to products.ini based on the exe's directory char cPath[255]; - GetCurrentDirectory(255, (char *)cPath); + GetModuleFileName(NULL, cPath, 255); + CString strPath; strPath = cPath; + int index; + index = strPath.ReverseFind('\\'); // find last index of '\' + if (index > 0) { + strPath = strPath.Left(index); + } + strPath.Insert(strPath.GetLength(), _T("\\products.ini")); + // Make sure the file exists. If not, report an error and then fail. + CFileFind FF; + if(!FF.FindFile(strPath)) { + cerr << _T("Error: File not found - ") << (LPCTSTR)strPath << endl; + return FALSE; + } + + // Set StorePath alugen.SetStoragePath(strPath); // Generate key @@ -170,7 +189,11 @@ 1); // max users licKey = alugen.GenKey((LPDISPATCH*)&Lic, strInstCode); } catch (CException* ce) { - ce->ReportError(); + char buffer[100]; + if (ce->GetErrorMessage(buffer, 100)) { + cerr << "Fatal Error: " << buffer; + } + ce->Delete(); } catch (...) { cerr << _T("I don't know what happened, but it crashed. Have a nice day!") << endl; return FALSE; Index: alugenc.rc =================================================================== RCS file: /cvsroot/activelock/alugen/console/alugenc.rc,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- alugenc.rc 2 Jul 2004 04:07:46 -0000 1.1 +++ alugenc.rc 9 Jul 2004 08:30:18 -0000 1.2 @@ -27,18 +27,18 @@ // TEXTINCLUDE // -1 TEXTINCLUDE DISCARDABLE +1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END -2 TEXTINCLUDE DISCARDABLE +2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0" END -3 TEXTINCLUDE DISCARDABLE +3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0" @@ -52,7 +52,7 @@ // String Table // -STRINGTABLE DISCARDABLE +STRINGTABLE DISCARDABLE BEGIN IDS_HELLO "Hello from MFC!" END @@ -78,7 +78,7 @@ VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 + PRODUCTVERSION 2,0,0,9 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -103,7 +103,7 @@ VALUE "OriginalFilename", "alugenc.exe\0" VALUE "PrivateBuild", "\0" VALUE "ProductName", "ALUGENC\0" - VALUE "ProductVersion", "2, 0, 0, 8\0" + VALUE "ProductVersion", "2, 0, 0, 9\0" VALUE "SpecialBuild", "\0" END END |
From: Thanh H. T. <th...@us...> - 2004-07-09 08:29:52
|
Update of /cvsroot/activelock/alugen/lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12414 Modified Files: ALUGENLib.vbp Generator.cls Globals.cls Log Message: Bug fixes for 2.0.9 Index: ALUGENLib.vbp =================================================================== RCS file: /cvsroot/activelock/alugen/lib/ALUGENLib.vbp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- ALUGENLib.vbp 2 Jul 2004 04:13:57 -0000 1.6 +++ ALUGENLib.vbp 9 Jul 2004 08:29:42 -0000 1.7 @@ -20,7 +20,7 @@ VersionCompatible32="1" MajorVer=2 MinorVer=0 -RevisionVer=8 +RevisionVer=9 AutoIncrementVer=0 ServerSupportFiles=0 VersionCompanyName="The ActiveLock Software Group" Index: Generator.cls =================================================================== RCS file: /cvsroot/activelock/alugen/lib/Generator.cls,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- Generator.cls 2 Jul 2004 04:13:57 -0000 1.6 +++ Generator.cls 9 Jul 2004 08:29:42 -0000 1.7 @@ -149,6 +149,9 @@ ProdInfo.VCode = .Values("VCode") '@todo Decrypt code1 and code2 ProdInfo.GCode = .Values("GCode") End With + If ProdInfo.VCode = "" Or ProdInfo.GCode = "" Then + Err.Raise ALUGENErrCodeConstants.alugenProdInvalid, App.ProductName, "Product code set is invalid." + End If Set IALUGenerator_RetrieveProduct = ProdInfo End Function Index: Globals.cls =================================================================== RCS file: /cvsroot/activelock/alugen/lib/Globals.cls,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Globals.cls 2 Jul 2004 04:13:57 -0000 1.3 +++ Globals.cls 9 Jul 2004 08:29:42 -0000 1.4 @@ -63,6 +63,7 @@ ' @history ' <pre> ' 08.15.03 - th2tran - Created +' 07.09.04 - th2tran - Added ALUGENErrCodeConstants Enum ' ' </pre> @@ -71,6 +72,19 @@ ' /////////////////////////////////////////////////////////////////////// Option Explicit + +'' +' ActiveLock Error Codes. +' These error codes are used for <code>Err.Number</code> whenever ActiveLock raises an error. +' +' @param alerrOK No error. Operation was successful. +' @param alugenProdInvalid Product Info is invalid +Public Enum ALUGENErrCodeConstants + alugenOK = 0 ' successful + alugenProdInvalid = &H80040100 ' vbObjectError (&H80040000) + &H100 +End Enum + + '' ' Returns an IALUGenerator instance. ' |
From: Thanh H. T. <th...@sy...> - 2004-07-08 23:21:53
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Therein lies my dilemma. Right now the RegisteredDate is set during license generation time and is included as part of the license key (i.e. the RSA signature). In order to do what you suggested, we'd have to take RegisteredDate out of the license key. But if we did that, it would weaken the protection because it would be possible, then, to hack the RegisteredDate. - -T Peter Young wrote on 08/07/2004 12:01 AM: |> Does any body have any suggestions on how to implement this |> either inside or outside of AL? The objective is: once the user |> installs the product, they should immediately be allowed to begin |> the trial period. I'd like to hear your inputs. | | | Could you set LockType = None, ship the app with a license file and | have the installer set the RegisteredDate in the license file? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (MingW32) iD8DBQFA7dcAF8rE9X/XrZIRAgV2AJsG+tUB3KfBzqVod9hv3DcXx1AKwgCgozCh ti4FMIlNJ/ydFm714PEZNc4= =rMMA -----END PGP SIGNATURE----- |
From: Peter Y. <py...@vb...> - 2004-07-08 03:58:22
|
>Does any body have any suggestions on how to implement this either >inside or outside of AL? The objective is: once the user installs the >product, they should immediately be allowed to begin the trial period. >I'd like to hear your inputs. Could you set LockType = None, ship the app with a license file and have the installer set the RegisteredDate in the license file? |
From: Thanh H. T. <th...@sy...> - 2004-07-07 23:04:57
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Team, Does any body have any suggestions on how to implement this either inside or outside of AL? The objective is: once the user installs the product, they should immediately be allowed to begin the trial period. I'd like to hear your inputs. - -Thanh SourceForge.net wrote on 05/07/2004 12:26 AM: | Task #101350 has been updated. | | Project: ActiveLock Subproject: ActiveLock 2.0 General Summary: | Support automatic trial/eval Complete: 0% Status: Open Authority : | th2tran Assigned to: nobody | | Description: shilliard2 wrote on 03/07/2004 2:58 PM: | | I am interested in implementing trial software that will time out | | after ten days or so of usage. | | | | My potential customer should be able to download a Zip file from my | | | website, install, and run the program without having to contact me. | | | | | It is not practical for me to upload a new Zip every day, so the | | trial period should start when the customer runs the program, | rather | | than when I make and upload the Zip. | -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (MingW32) iD8DBQFA7IGTF8rE9X/XrZIRArgyAJ4iXbq0o56Fb6fM2ALAr7Jkm3UPnACggnzT fBk1kSIezavdP3cKjsu75aI= =Dv+q -----END PGP SIGNATURE----- |
From: SourceForge.net <no...@so...> - 2004-07-07 01:25:05
|
Task #101435 has been updated. Project: ActiveLock Subproject: ActiveLock 2.0 General Summary: Product Code Generation - once per product Complete: 0% Status: Open Authority : th2tran Assigned to: nobody Description: Implement suggestion in: http://sourceforge.net/tracker/index.php?func=detail&aid=985823&group_id=70007&atid=526386 Once a Product Code set has been added to the list, disable the Generate button. ------------------------------------------------------- For more info, visit: http://sourceforge.net/pm/task.php?func=detailtask&project_task_id=101435&group_id=70007&group_project_id=29689 |
From: SourceForge.net <no...@so...> - 2004-07-07 01:21:29
|
Support Requests item #985823, was opened at 2004-07-06 09:04 Message generated for change (Comment added) made by th2tran You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985823&group_id=70007 Category: None Group: Development Team >Status: Pending Resolution: None Priority: 5 Submitted By: Leendert van Staalduinen (lvanstaalduinen) Assigned to: Nobody/Anonymous (nobody) Summary: VCode from ALUGEN: only once Initial Comment: After generating a VCode (plus GCode) I incorporate the VCode into my application. OK, works fine. After a while I have generated a new VCode (why not: everybody can do this), which results into a Liberation Key that does not cooperate with the original VCode. I assume that generating a VCode should be an onlyonce procedure. So, I would like the ALUGEN Generate (VCode) to be disabled after creating the VCode. My solution: · In frmMain.cmdAdd_Click: ' Immediately generate a VCode plus GCode, 040705, LvSt. Call cmdCodeGen_Click · In frmMain.UpdateCodeGenButtonStatus: ' We generate a VCode plus GCode at creation time, 040705, LvSt. 'cmdCodeGen.Enabled = True (DISable this option). I am sure you have better ideas. ---------------------------------------------------------------------- >Comment By: Thanh Hai Tran (th2tran) Date: 2004-07-07 01:21 Message: Logged In: YES user_id=797792 > So, I would like the ALUGEN Generate (VCode) to be disabled after creating the VCode Good feeback! We will implement your suggestion. Thank you. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985823&group_id=70007 |
From: SourceForge.net <no...@so...> - 2004-07-07 01:18:46
|
Support Requests item #985801, was opened at 2004-07-06 08:34 Message generated for change (Comment added) made by th2tran You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985801&group_id=70007 Category: Install Problem (example) >Group: Development Team >Status: Pending Resolution: None Priority: 5 Submitted By: Leendert van Staalduinen (lvanstaalduinen) Assigned to: Nobody/Anonymous (nobody) Summary: alsRegistry Initial Comment: I was confused by finding out: - .KeyStoreType = alsFile operates fine. - .KeyStoreType = alsRegistry does not seem to work properly. Or am I doing something wrong ? Sorry, I just saw the answer: "Windows Registry Storage" is a Next Version Feature. I think it is nice when this is reflected in the documentation . ---------------------------------------------------------------------- >Comment By: Thanh Hai Tran (th2tran) Date: 2004-07-07 01:18 Message: Logged In: YES user_id=797792 Thanks for pointing out. We will change it to raise an alerrNotImplemented error until we have the feature implemented. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985801&group_id=70007 |
From: SourceForge.net <no...@so...> - 2004-07-07 01:16:48
|
Task #101434 has been updated. Project: ActiveLock Subproject: ActiveLock 2.0 General Summary: alsRegistry in 2.0 Complete: 0% Status: Open Authority : th2tran Assigned to: nobody Description: KeyStoreType = alsRegistry should raise a NotImplemented error in 2.0 since we haven't implemented it. ------------------------------------------------------- For more info, visit: http://sourceforge.net/pm/task.php?func=detailtask&project_task_id=101434&group_id=70007&group_project_id=29689 |
From: SourceForge.net <no...@so...> - 2004-07-07 01:11:45
|
Support Requests item #985794, was opened at 2004-07-06 08:21 Message generated for change (Comment added) made by th2tran You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985794&group_id=70007 Category: None Group: Development Team >Status: Pending Resolution: None Priority: 5 Submitted By: Leendert van Staalduinen (lvanstaalduinen) >Assigned to: Thanh Hai Tran (th2tran) Summary: ActiveLockEventSink_ValidateValue Initial Comment: As I wrote a few months ago, I am very impressed by the ActiveLock project. I could integrate ActiveLock in an Access 2000 ADP application. Though, I have a question on a subject I could not deal with: If I use: Private Sub ActiveLockEventSink_ValidateValue(ByRef Value As String) Value = Enc(Value) End Sub I get an Err = -2147221500: License may have been tampered. How can I work around this. Basically, I think: if I encode the value, where should I decode that very value? ---------------------------------------------------------------------- >Comment By: Thanh Hai Tran (th2tran) Date: 2004-07-07 01:11 Message: Logged In: YES user_id=797792 After implementing encryption in ActiveLockEventSink_ValidateValue(), you cannot re-use an existing license because license verification, now working with your new encryption routine, will be mismatched. You need to re-register the license. -Thanh P.S. You don't need to worry about decoding/decrypting. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985794&group_id=70007 |
From: SourceForge.net <no...@so...> - 2004-07-06 09:04:30
|
Support Requests item #985823, was opened at 2004-07-06 09:04 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985823&group_id=70007 Category: None Group: Development Team Status: Open Resolution: None Priority: 5 Submitted By: Leendert van Staalduinen (lvanstaalduinen) Assigned to: Nobody/Anonymous (nobody) Summary: VCode from ALUGEN: only once Initial Comment: After generating a VCode (plus GCode) I incorporate the VCode into my application. OK, works fine. After a while I have generated a new VCode (why not: everybody can do this), which results into a Liberation Key that does not cooperate with the original VCode. I assume that generating a VCode should be an onlyonce procedure. So, I would like the ALUGEN Generate (VCode) to be disabled after creating the VCode. My solution: · In frmMain.cmdAdd_Click: ' Immediately generate a VCode plus GCode, 040705, LvSt. Call cmdCodeGen_Click · In frmMain.UpdateCodeGenButtonStatus: ' We generate a VCode plus GCode at creation time, 040705, LvSt. 'cmdCodeGen.Enabled = True (DISable this option). I am sure you have better ideas. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985823&group_id=70007 |
From: SourceForge.net <no...@so...> - 2004-07-06 08:34:18
|
Support Requests item #985801, was opened at 2004-07-06 08:34 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985801&group_id=70007 Category: Install Problem (example) Group: Documentation Team Status: Open Resolution: None Priority: 5 Submitted By: Leendert van Staalduinen (lvanstaalduinen) Assigned to: Nobody/Anonymous (nobody) Summary: alsRegistry Initial Comment: I was confused by finding out: - .KeyStoreType = alsFile operates fine. - .KeyStoreType = alsRegistry does not seem to work properly. Or am I doing something wrong ? Sorry, I just saw the answer: "Windows Registry Storage" is a Next Version Feature. I think it is nice when this is reflected in the documentation . ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985801&group_id=70007 |
From: SourceForge.net <no...@so...> - 2004-07-06 08:21:51
|
Support Requests item #985794, was opened at 2004-07-06 08:21 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985794&group_id=70007 Category: None Group: Development Team Status: Open Resolution: None Priority: 5 Submitted By: Leendert van Staalduinen (lvanstaalduinen) Assigned to: Nobody/Anonymous (nobody) Summary: ActiveLockEventSink_ValidateValue Initial Comment: As I wrote a few months ago, I am very impressed by the ActiveLock project. I could integrate ActiveLock in an Access 2000 ADP application. Though, I have a question on a subject I could not deal with: If I use: Private Sub ActiveLockEventSink_ValidateValue(ByRef Value As String) Value = Enc(Value) End Sub I get an Err = -2147221500: License may have been tampered. How can I work around this. Basically, I think: if I encode the value, where should I decode that very value? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=526386&aid=985794&group_id=70007 |
From: SourceForge.net <no...@so...> - 2004-07-05 04:26:44
|
Task #101350 has been updated. Project: ActiveLock Subproject: ActiveLock 2.0 General Summary: Support automatic trial/eval Complete: 0% Status: Open Authority : th2tran Assigned to: nobody Description: shilliard2 wrote on 03/07/2004 2:58 PM: I am interested in implementing trial software that will time out after ten days or so of usage. My potential customer should be able to download a Zip file from my website, install, and run the program without having to contact me. It is not practical for me to upload a new Zip every day, so the trial period should start when the customer runs the program, rather than when I make and upload the Zip. ------------------------------------------------------- For more info, visit: http://sourceforge.net/pm/task.php?func=detailtask&project_task_id=101350&group_id=70007&group_project_id=29689 |
From: SourceForge.net <no...@so...> - 2004-07-02 06:41:45
|
Task #100754 has been updated. Project: ActiveLock Subproject: ActiveLock 2.0 General Summary: Create command-line (GUI-less) version of alugen.exe Complete: 95% Status: Open Authority : th2tran Assigned to: th2tran Description: Requested by our users.... Create a console executable version of alugen.exe so that the key generator functionality can be invoked via a command-line interface. Command-line argument syntax to be determined later. Follow-Ups: ------------------------------------------------------- Date: 2004-07-02 06:41 By: th2tran Comment: Generally complete, but could use more error handling. Will be in beta 3. ------------------------------------------------------- Date: 2004-06-28 03:48 By: th2tran Comment: Began work on this. Will be called alugenc.exe ------------------------------------------------------- For more info, visit: http://sourceforge.net/pm/task.php?func=detailtask&project_task_id=100754&group_id=70007&group_project_id=29689 |
From: Thanh H. T. <th...@us...> - 2004-07-02 04:18:26
|
Update of /cvsroot/activelock/activelock/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31078 Modified Files: ReleaseNotes.htm Log Message: Release Notes for Beta 3. Index: ReleaseNotes.htm =================================================================== RCS file: /cvsroot/activelock/activelock/docs/ReleaseNotes.htm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- ReleaseNotes.htm 4 Nov 2003 07:53:32 -0000 1.3 +++ ReleaseNotes.htm 2 Jul 2004 04:18:18 -0000 1.4 @@ -42,7 +42,7 @@ <center> <h1>Release Notes</h1> <h3>ActiveLock<sup><font size=-2>TM</font></sup> 2<br> -Alpha 3 (Nov. 04, 2003)</h3> +Beta 3 Candidate (July 01, 2004)</h3> </center> <hr> <p> @@ -70,13 +70,77 @@ </blockquote> <a name="legalese"><h2>Legal Disclaimer</h2></a> +<blockquote> <p> -Before proceeding any further, please ensure that you read and understand <b>License.txt</b> +Before proceeding any further, please ensure that you read and understand the <a href="License.txt">License.txt</a> accompanying this release. Proceeding beyond this point implies that you have read and agreed to the terms and conditions specified in <b>License.txt</b>. +</blockquote> <a name="changes"><h2>Change History</h2></a> <blockquote> + <h3>2.0.8 (Beta 3) - July 01, 2004</h3> + <h4>General Changes</h4> + <ul> + <li>New command-line version of ALUGEN (alugenc.exe) is now included. + </ul> + + <h4>Bug Fixes In This Release</h4> + <p>The following bugs have been fixed in this release. + <ul> + <li>There was a bug in ALUGENLib's API: + Needed ByVal qualifier to IALUGENerator_StoragePath parameter for better compatibility /w VC++. + </ul> + + <h3>2.0.7 (Beta 2) - May 24, 2004</h3> + <h4>General Changes</h4> + <ul> + <li>VB Tutorial is now included with the setup. + </ul> + + <h4>Bug Fixes In This Release</h4> + <p>The following bugs have been fixed in this release. + <ul> + <li>A Type Mismatched error was encountered when a liberation key was generated on a machine with + European Regional Settings, and registered on a machine with US Regional Settings. + <li>"Object variable not set" error in IActiveLock_UsedDays() caused when no license is available. + <li>A logic error in ALUGENLib, exhibited when InstallationCode contained multiple + lockTo setttings (e.g. lockToHD Or lockToMAC), caused invalid liberation keys to be generated. + <li>Uninstaller did not remove alcrypto.dll. + </ul> + + + <h3>2.0.5 (Beta 1) - Apr. 18, 2004</h3> + <h4>General Changes</h4> + <ul> + <li>New property IActiveLock_AutoRegisterKeyPath is used to support automatic registration from a liberation file. + <li>ALUGEN can now save libration key to a file. This, when used with the new IActiveLock_AutoRegisterKeyPath + property, provides the ability to automatically register/import a liberation key during startup. + The suggested extension for the liberation file is .alb (Activelock LiBeration file), but you can you + any extension you'd like. + <li>Previously, when you call ActiveLock.NewInstance(), IActiveLock_Init() is done for you inside NewInstance(). + That is no longer done, and you will be required to call Init() yourself. + <li>Firmed up IActiveLock interface parameters with explicit ByVal modifiers for better compatibility with other + COM languages such as MSVC++. A sample MFC application is included as a proof-of-concept. + <li>As the result of the above API changes, 2.0.5 is no longer backward compatible with previous release. + Therefore, you will need to recompile your application against 2.0.5 if you wish to use it. Otherwise, + your application will likely crash when it attempts to communicate with ActiveLock 2.0.5. + <li>License file format cleanup: The existence of ProductKey property in the license file is unnecessary + and has been removed. + <li>FileKeyStore now creates an empty license file when KeyStorePath is specified, if it doesn't already exist. + </ul> + <h4>Bug Fixes In This Release</h4> + <p>The following bugs have been fixed in this release. + <ul> + <li>Mismatched logic between IActiveLock.LockCode() and ALUGENLib.Generator#GenKey() implementations + caused the key validation process to fail for keys generated using lockToNone. + <li>ALUGEN sometimes generates invalid license key. As the result, IActiveLock.Register() always returns + an "License invalid" error. + <li>ALTestApp had a security bug in GetTypeLibPathFromObject() function. + See revision comments in the code for details of the fix. + </ul> + + <h3>2.0.4 (Alpha 3) - Nov. 04, 2003</h3> <h4>General Changes</h4> <ul> @@ -140,9 +204,9 @@ <a href="http://www.activelock.org/License.txt">ActiveLock License</a>. <p>Here is the list of libraries that you'll need to redistribute. <ul> - <li><b>activelock2.dll</b>. ActiveLock 2 COM library. - <li><b>alcrypto.dll</b>. ActiveLock 2 cryptography Windows regular DLL - <li><b>alutil.dll</b>. ActiveLock 2 Utility COM library used by activelock2.dll + <li><b>activelock2.dll</b>. ActiveLock 2 COM library. (COM registration is required) + <li><b>alcrypto.dll</b>. ActiveLock 2 cryptography Windows regular DLL. Must be installed to the System directory (e.g. C:\WINDOWS\SYSTEM32). + <li><b>alutil.dll</b>. ActiveLock 2 Utility COM library used by activelock2.dll (COM registration is required) </ul> </blockquote> @@ -176,7 +240,7 @@ <small> ActiveLock<sup><font size=-2>TM</font></sup> is a trademark of Nelson Ferraz <br> Copyright 1998-2002 Nelson Ferraz <br> -Copyright 2003 The ActiveLock Software Group (ASG) <br> +Copyright 2003-2004 The ActiveLock Software Group (ASG) <br> All material is the property of the contributing authors. <br> </pre> </small> |
From: Thanh H. T. <th...@us...> - 2004-07-02 04:15:44
|
Update of /cvsroot/activelock/installer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30682 Modified Files: ActiveLock.nsi Log Message: Include alugenc in the setup Index: ActiveLock.nsi =================================================================== RCS file: /cvsroot/activelock/installer/ActiveLock.nsi,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- ActiveLock.nsi 16 May 2004 18:42:58 -0000 1.7 +++ ActiveLock.nsi 2 Jul 2004 04:15:35 -0000 1.8 @@ -30,6 +30,8 @@ ; 04.28.04 - th2tran - SecCore section was doing a RMDir /r "$SMPROGRAMS\${ASC}" right off the bat. ; What the heck for? This is soooo dangerous. ; 05.16.04 - th2tran - Need to remove alcrypto.dll during uninstall. 2.0.7 +; 05.24.04 - th2tran - Include VB Tutorial.chm +; 07.01.04 - th2tran - Include alugenc ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -38,7 +40,7 @@ ;General !define VER_MAJOR 2 -!define VER_MINOR 0.7 +!define VER_MINOR 0.8 !define VER ${VER_MAJOR}.${VER_MINOR} !define ALUTIL_SRC_ROOT "..\alutil" !define AL_SRC_ROOT "..\activelock" @@ -130,7 +132,6 @@ File ${AL_SRC_ROOT}\bin\alutil.dll File ${AL_SRC_ROOT}\bin\activelock2.dll File ${AL_SRC_ROOT}\bin\activelock2.chm - ;File ${AL_SRC_ROOT}\Examples\Example1\ALTestApp.exe ; ALCrypto.dll goes to Windows System directory SetOutPath $SYSDIR @@ -143,11 +144,16 @@ File ${ALUGEN_ROOT}\lib\alugen.dll File ${ALUGEN_ROOT}\app\alugen.exe File ${ALUGEN_ROOT}\app\products.ini + File ${ALUGEN_ROOT}\console\Release\alugenc.exe SectionEnd Section "Documentation" SecDoc SectionIn 1 2 + + SetOutPath $INSTDIR\Docs + File ${AL_SRC_ROOT}\tutorials\VB\VBTutorial.chm + SetOutPath $INSTDIR\Docs\API File ${AL_SRC_ROOT}\vbdox\*.html File ${AL_SRC_ROOT}\vbdox\*.gif @@ -182,6 +188,7 @@ File ${AL_SRC_ROOT}\Examples\MFC\res\*.rc2 File ${AL_SRC_ROOT}\Examples\MFC\res\*.ico File ${AL_SRC_ROOT}\Examples\MFC\res\*.bmp + SectionEnd !ifndef NO_STARTMENUSHORTCUTS @@ -200,6 +207,10 @@ WriteINIStr "$SMPROGRAMS\ActiveLock\ActiveLock Development Site.url" "InternetShortcut" "URL" "http://activelock.sourceforge.net/" CreateShortCut "$SMPROGRAMS\ActiveLock\Uninstall ActiveLock.lnk" "$INSTDIR\uninst.exe" CreateShortCut "$SMPROGRAMS\ActiveLock\API Documentation.lnk" "$INSTDIR\bin\activelock2.chm" + + IfFileExists "$INSTDIR\Docs\VBTutorial.chm" "" +2 + CreateShortCut "$SMPROGRAMS\ActiveLock\VB Tutorial.lnk" "$INSTDIR\Docs\VBTutorial.chm" "" + !endif SectionEnd @@ -252,6 +263,12 @@ File ${ALUGEN_ROOT}\app\*.fr* File ${ALUGEN_ROOT}\app\products.ini File ${ALUGEN_ROOT}\app\ALUGEN.vbp + SetOutPath $INSTDIR\Src\alugen\console + File ${ALUGEN_ROOT}\console\*.dsp + File ${ALUGEN_ROOT}\console\*.dsw + File ${ALUGEN_ROOT}\console\*.rc + File ${ALUGEN_ROOT}\console\*.cpp + File ${ALUGEN_ROOT}\console\*.h SectionEnd SubSectionEnd |
From: Thanh H. T. <th...@us...> - 2004-07-02 04:14:07
|
Update of /cvsroot/activelock/alugen/lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30405 Modified Files: alugen.dll ALUGENLib.vbp Generator.cls Globals.cls IALUGenerator.cls modALUGEN.bas ProductInfo.cls Log Message: Fixed API bug in IALUGenerator Updated copyright year Index: alugen.dll =================================================================== RCS file: /cvsroot/activelock/alugen/lib/alugen.dll,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 Binary files /tmp/cvsYWFGfX and /tmp/cvsITAwqB differ Index: ALUGENLib.vbp =================================================================== RCS file: /cvsroot/activelock/alugen/lib/ALUGENLib.vbp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- ALUGENLib.vbp 16 May 2004 18:41:22 -0000 1.5 +++ ALUGENLib.vbp 2 Jul 2004 04:13:57 -0000 1.6 @@ -1,7 +1,7 @@ Type=OleDll -Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#stdole2.tlb#OLE Automation -Reference=*\G{C3B56087-6690-42ED-8914-633AA166AB41}#1.0#0#activelock2.dll#ActiveLock2 -Reference=*\G{9AC9BB25-D182-447E-8398-D8A8F40DE906}#1.0#0#alutil.dll#ActiveLockUtil +Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINNT\system32\stdole2.tlb#OLE Automation +Reference=*\G{C3B56087-6690-42ED-8914-633AA166AB41}#1.0#0#..\..\activelock\bin\activelock2.dll#ActiveLock2 +Reference=*\G{9AC9BB25-D182-447E-8398-D8A8F40DE906}#1.0#0#..\..\activelock\bin\alutil.dll#ActiveLockUtil Class=IALUGenerator; IALUGenerator.cls Class=Generator; Generator.cls Class=Globals; Globals.cls @@ -20,7 +20,7 @@ VersionCompatible32="1" MajorVer=2 MinorVer=0 -RevisionVer=7 +RevisionVer=8 AutoIncrementVer=0 ServerSupportFiles=0 VersionCompanyName="The ActiveLock Software Group" @@ -42,6 +42,7 @@ ThreadPerObject=0 MaxNumberOfThreads=1 ThreadingModel=1 +DebugStartupOption=0 [MS Transaction Server] AutoRefresh=1 Index: Generator.cls =================================================================== RCS file: /cvsroot/activelock/alugen/lib/Generator.cls,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Generator.cls 16 May 2004 18:41:22 -0000 1.5 +++ Generator.cls 2 Jul 2004 04:13:57 -0000 1.6 @@ -13,7 +13,7 @@ Attribute VB_Exposed = False '* ActiveLock '* Copyright 1998-2002 Nelson Ferraz -'* Copyright 2003 The ActiveLock Software Group (ASG) +'* Copyright 2003-2004 The ActiveLock Software Group (ASG) '* All material is the property of the contributing authors. '* '* Redistribution and use in source and binary forms, with or without @@ -67,10 +67,10 @@ ' - Dumped ActiveLockEventNotifier. Don't neeed it here. ' 11.02.03 - th2tran - Re-implemented IALUGenerator_GenKey() - interface changed ' 05.13.04 - th2tran - Fixed bug in GetLockAndUserFromInstallCode()--wasn't returning -' the correct LockCode when InstallationCode contained multiple -' lockTo setttings (e.g. lockToHD Or lockToMAC) +' the correct LockCode when InstallationCode contained multiple +' lockTo setttings (e.g. lockToHD Or lockToMAC) +' 06.28.04 - th2tran - Added ByVal qualifier to IALUGENerator_StoragePath parameter for better compatibility /w VC++ ' - ' </pre> ' /////////////////////////////////////////////////////////////////////// @@ -156,12 +156,13 @@ '@todo Remove the section from INI file End Sub -Private Property Let IALUGenerator_StoragePath(RHS As String) +Private Property Let IALUGenerator_StoragePath(ByVal RHS As String) MyIniFile.File = RHS End Property Private Function IALUGenerator_GenKey(Lic As ActiveLock2.ProductLicense, ByVal InstCode As String) As String ' Take request code and decrypt it. + Dim strReq As String strReq = ActiveLock2.Base64Decode(InstCode) ' strReq now contains the {LockCode + vbLf + User} string @@ -193,6 +194,7 @@ ' Encrypt Product license using the MAC strLic = Lic.ToString() & vbLf & strLock Debug.Print "strLic: " & vbCrLf & strLic + ' sign it Dim strSig As String: strSig = String(1024, 0) strSig = ActiveLock2.RSASign(ProdInfo.VCode, ProdInfo.GCode, strLic) @@ -230,8 +232,8 @@ Loop If Index <= 0 Then Exit Sub - ' lockcode is from beginning to Index-1 - strLock = Left(strReq, Index - 1) + ' lockcode is from beginning to Index-1 + strLock = Left(strReq, Index - 1) ' user name starts from Index+1 to the end strUser = Mid$(strReq, Index + 1) strUser = TrimNulls(strUser) Index: Globals.cls =================================================================== RCS file: /cvsroot/activelock/alugen/lib/Globals.cls,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Globals.cls 13 Oct 2003 05:43:43 -0000 1.2 +++ Globals.cls 2 Jul 2004 04:13:57 -0000 1.3 @@ -13,7 +13,7 @@ Attribute VB_Exposed = True '* ActiveLock '* Copyright 1998-2002 Nelson Ferraz -'* Copyright 2003 The ActiveLock Software Group (ASG) +'* Copyright 2003-2004 The ActiveLock Software Group (ASG) '* All material is the property of the contributing authors. '* '* Redistribution and use in source and binary forms, with or without Index: IALUGenerator.cls =================================================================== RCS file: /cvsroot/activelock/alugen/lib/IALUGenerator.cls,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- IALUGenerator.cls 3 Nov 2003 07:04:16 -0000 1.5 +++ IALUGenerator.cls 2 Jul 2004 04:13:57 -0000 1.6 @@ -13,7 +13,7 @@ Attribute VB_Exposed = True '* ActiveLock '* Copyright 1998-2002 Nelson Ferraz -'* Copyright 2003 The ActiveLock Software Group (ASG) +'* Copyright 2003-2004 The ActiveLock Software Group (ASG) '* All material is the property of the contributing authors. '* '* Redistribution and use in source and binary forms, with or without @@ -72,6 +72,7 @@ ' GenKey(objActiveLock As IActiveLock, ByVal ReqCode As String, ExpireDate As String) As String ' to ' GenKey(Lic As ActiveLock2.ProductLicense, ByVal InstCode As String) As String +' 06.28.04 - th2tran - Added ByVal qualifier to IALUGENerator_StoragePath parameter for better compatibility /w VC++ ' </pre> ' /////////////////////////////////////////////////////////////////////// @@ -86,7 +87,7 @@ ' Specifies the path where information about the products is stored. ' @param strPath Path string. ' -Public Property Let StoragePath(strPath As String) +Public Property Let StoragePath(ByVal strPath As String) Attribute StoragePath.VB_Description = "Specifies the path where information about the products is stored." mstrProductFile = strPath mINIFile.File = strPath Index: modALUGEN.bas =================================================================== RCS file: /cvsroot/activelock/alugen/lib/modALUGEN.bas,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- modALUGEN.bas 24 Aug 2003 18:06:36 -0000 1.1 +++ modALUGEN.bas 2 Jul 2004 04:13:57 -0000 1.2 @@ -1,7 +1,7 @@ Attribute VB_Name = "modALUGEN" '* ActiveLock '* Copyright 1998-2002 Nelson Ferraz -'* Copyright 2003 The ActiveLock Software Group (ASG) +'* Copyright 2003-2004 The ActiveLock Software Group (ASG) '* All material is the property of the contributing authors. '* '* Redistribution and use in source and binary forms, with or without Index: ProductInfo.cls =================================================================== RCS file: /cvsroot/activelock/alugen/lib/ProductInfo.cls,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- ProductInfo.cls 13 Oct 2003 05:43:43 -0000 1.3 +++ ProductInfo.cls 2 Jul 2004 04:13:57 -0000 1.4 @@ -13,7 +13,7 @@ Attribute VB_Exposed = True '* ActiveLock '* Copyright 1998-2002 Nelson Ferraz -'* Copyright 2003 The ActiveLock Software Group (ASG) +'* Copyright 2003-2004 The ActiveLock Software Group (ASG) '* All material is the property of the contributing authors. '* '* Redistribution and use in source and binary forms, with or without |
From: Thanh H. T. <th...@us...> - 2004-07-02 04:09:33
|
Update of /cvsroot/activelock/alugen/console/Release In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29738 Added Files: alugenc.exe Log Message: Binary version, for distribution. --- NEW FILE: alugenc.exe --- MZ $ t Îè* Syntax: alugenc.exe -p <productname> -v <productversion> -t <licensetype> -x <expiration_date> -i <installation_code> -l <user> |
From: Thanh H. T. <th...@us...> - 2004-07-02 04:08:24
|
Update of /cvsroot/activelock/alugen/console/Release In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29499/Release Log Message: Directory /cvsroot/activelock/alugen/console/Release added to the repository |
From: Thanh H. T. <th...@us...> - 2004-07-02 04:07:56
|
Update of /cvsroot/activelock/alugen/console In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29325 Added Files: activelock2.cpp activelock2.h alugen.cpp alugen.h alugenc.cpp alugenc.dsp alugenc.dsw alugenc.h alugenc.rc ReadMe.txt Resource.h StdAfx.cpp StdAfx.h Log Message: Source for ALUGEN console version. --- NEW FILE: activelock2.cpp --- /** * ActiveLock 2 * Copyright 2003-2004 The ActiveLock Software Group (ASG) * * All material is the property of the contributing authors. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * [o] Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * [o] Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ ///////////////////////////////////////////////////////////////////////////// // Machine generated IDispatch wrapper class(es) created with ClassWizard ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "activelock2.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // _IActiveLock properties ///////////////////////////////////////////////////////////////////////////// // _IActiveLock operations void _IActiveLock::SetLockType(long nNewValue) { static BYTE parms[] = VTS_I4; InvokeHelper(0x6803000a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } long _IActiveLock::GetLockType() { long result; InvokeHelper(0x6803000a, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); return result; } void _IActiveLock::SetSoftwareName(LPCTSTR lpszNewValue) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x68030009, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, lpszNewValue); } CString _IActiveLock::GetSoftwareName() { CString result; InvokeHelper(0x68030009, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } void _IActiveLock::SetSoftwareCode(LPCTSTR lpszNewValue) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x68030008, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, lpszNewValue); } void _IActiveLock::SetSoftwareVersion(LPCTSTR lpszNewValue) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x68030007, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, lpszNewValue); } CString _IActiveLock::GetSoftwareVersion() { CString result; InvokeHelper(0x68030007, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } void _IActiveLock::SetKeyStoreType(long nNewValue) { static BYTE parms[] = VTS_I4; InvokeHelper(0x68030006, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } void _IActiveLock::SetKeyStorePath(LPCTSTR lpszNewValue) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x68030005, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, lpszNewValue); } CString _IActiveLock::GetInstallationCode(LPCTSTR User) { CString result; static BYTE parms[] = VTS_BSTR; InvokeHelper(0x68030004, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, parms, User); return result; } void _IActiveLock::SetAutoRegisterKeyPath(LPCTSTR lpszNewValue) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x68030012, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, lpszNewValue); } CString _IActiveLock::LockCode(LPDISPATCH* Lic) { CString result; static BYTE parms[] = VTS_PDISPATCH; InvokeHelper(0x6003000b, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, Lic); return result; } void _IActiveLock::Register(LPCTSTR LibKey) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x6003000c, DISPATCH_METHOD, VT_EMPTY, NULL, parms, LibKey); } CString _IActiveLock::Transfer(LPCTSTR InstallCode) { CString result; static BYTE parms[] = VTS_BSTR; InvokeHelper(0x6003000d, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, InstallCode); return result; } void _IActiveLock::Init() { InvokeHelper(0x6003000e, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); } void _IActiveLock::Acquire() { InvokeHelper(0x6003000f, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); } void _IActiveLock::Release() { InvokeHelper(0x60030010, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); } LPDISPATCH _IActiveLock::GetEventNotifier() { LPDISPATCH result; InvokeHelper(0x68030003, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL); return result; } long _IActiveLock::GetUsedDays() { long result; InvokeHelper(0x68030002, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); return result; } CString _IActiveLock::GetRegisteredDate() { CString result; InvokeHelper(0x68030001, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } CString _IActiveLock::GetRegisteredUser() { CString result; InvokeHelper(0x68030011, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } CString _IActiveLock::GetExpirationDate() { CString result; InvokeHelper(0x68030000, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } ///////////////////////////////////////////////////////////////////////////// // _Globals properties ///////////////////////////////////////////////////////////////////////////// // _Globals operations LPDISPATCH _Globals::NewInstance() { LPDISPATCH result; InvokeHelper(0x60030000, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, NULL); return result; } LPDISPATCH _Globals::CreateProductLicense(LPCTSTR name, LPCTSTR Ver, LPCTSTR Code, long Flags, long LicType, LPCTSTR Licensee, LPCTSTR Expiration, LPCTSTR LicKey, LPCTSTR RegisteredDate, LPCTSTR Hash1, short MaxUsers) { LPDISPATCH result; static BYTE parms[] = VTS_BSTR VTS_BSTR VTS_BSTR VTS_I4 VTS_I4 VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR VTS_I2; InvokeHelper(0x60030001, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, name, Ver, Code, Flags, LicType, Licensee, Expiration, LicKey, RegisteredDate, Hash1, MaxUsers); return result; } CString _Globals::TrimNulls(LPCTSTR str) { CString result; static BYTE parms[] = VTS_BSTR; InvokeHelper(0x60030004, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, str); return result; } CString _Globals::MD5Hash(LPCTSTR str) { CString result; static BYTE parms[] = VTS_BSTR; InvokeHelper(0x60030005, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, str); return result; } CString _Globals::Base64Encode(LPCTSTR str) { CString result; static BYTE parms[] = VTS_BSTR; InvokeHelper(0x60030006, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, str); return result; } CString _Globals::Base64Decode(LPCTSTR strEncoded) { CString result; static BYTE parms[] = VTS_BSTR; InvokeHelper(0x60030007, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, strEncoded); return result; } CString _Globals::RSASign(LPCTSTR strPub, LPCTSTR strPriv, LPCTSTR strdata) { CString result; static BYTE parms[] = VTS_BSTR VTS_BSTR VTS_BSTR; InvokeHelper(0x60030008, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, strPub, strPriv, strdata); return result; } long _Globals::RSAVerify(LPCTSTR strPub, LPCTSTR strdata, LPCTSTR strSig) { long result; static BYTE parms[] = VTS_BSTR VTS_BSTR VTS_BSTR; InvokeHelper(0x60030009, DISPATCH_METHOD, VT_I4, (void*)&result, parms, strPub, strdata, strSig); return result; } ///////////////////////////////////////////////////////////////////////////// // _ProductLicense properties ///////////////////////////////////////////////////////////////////////////// // _ProductLicense operations void _ProductLicense::SetLicenseType(long* newValue) { static BYTE parms[] = VTS_PI4; InvokeHelper(0x68030013, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); } long _ProductLicense::GetLicenseType() { long result; InvokeHelper(0x68030013, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); return result; } CString _ProductLicense::GetProductName() { CString result; InvokeHelper(0x68030012, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } CString _ProductLicense::GetProductVer() { CString result; InvokeHelper(0x68030011, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } void _ProductLicense::SetProductKey(LPCTSTR lpszNewValue) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x68030010, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, lpszNewValue); } CString _ProductLicense::GetProductKey() { CString result; InvokeHelper(0x68030010, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } CString _ProductLicense::GetLicenseClass() { CString result; InvokeHelper(0x6803000f, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } void _ProductLicense::SetLicensee(LPCTSTR lpszNewValue) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x6803000e, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, lpszNewValue); } CString _ProductLicense::GetLicensee() { CString result; InvokeHelper(0x6803000e, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } void _ProductLicense::SetLicenseKey(LPCTSTR lpszNewValue) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x6803000d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, lpszNewValue); } CString _ProductLicense::GetLicenseKey() { CString result; InvokeHelper(0x6803000d, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } CString _ProductLicense::GetExpiration() { CString result; InvokeHelper(0x6803000c, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } CString _ProductLicense::GetRegisteredDate() { CString result; InvokeHelper(0x6803000b, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } long _ProductLicense::GetMaxCount() { long result; InvokeHelper(0x6803000a, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); return result; } CString _ProductLicense::GetLastUsed() { CString result; InvokeHelper(0x68030009, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } CString _ProductLicense::GetHash1() { CString result; InvokeHelper(0x68030008, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } CString _ProductLicense::ToString() { CString result; InvokeHelper(0x60030014, DISPATCH_METHOD, VT_BSTR, (void*)&result, NULL); return result; } void _ProductLicense::Load(LPCTSTR strLic) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x60030015, DISPATCH_METHOD, VT_EMPTY, NULL, parms, strLic); } void _ProductLicense::Save(BSTR* strOut) { static BYTE parms[] = VTS_PBSTR; InvokeHelper(0x60030016, DISPATCH_METHOD, VT_EMPTY, NULL, parms, strOut); } ///////////////////////////////////////////////////////////////////////////// // _ActiveLockEventNotifier properties ///////////////////////////////////////////////////////////////////////////// // _ActiveLockEventNotifier operations ///////////////////////////////////////////////////////////////////////////// // __ActiveLockEventNotifier properties ///////////////////////////////////////////////////////////////////////////// // __ActiveLockEventNotifier operations void __ActiveLockEventNotifier::ValidateValue(BSTR* Value) { static BYTE parms[] = VTS_PBSTR; InvokeHelper(0x1, DISPATCH_METHOD, VT_EMPTY, NULL, parms, Value); } --- NEW FILE: activelock2.h --- /** * ActiveLock 2 * Copyright 2003-2004 The ActiveLock Software Group (ASG) * * All material is the property of the contributing authors. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * [o] Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * [o] Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ ///////////////////////////////////////////////////////////////////////////// // Machine generated IDispatch wrapper class(es) created with ClassWizard ///////////////////////////////////////////////////////////////////////////// /********************************************************************************************** * Change Log * ========== * * Date (MM/DD/YY) Author Description * --------------- ----------- -------------------------------------------------------------- * 06/28/04 th2tran Created * ***********************************************************************************************/ ///////////////////////////////////////////////////////////////////////////// // _IActiveLock wrapper class class _IActiveLock : public COleDispatchDriver { public: _IActiveLock() {} // Calls COleDispatchDriver default constructor _IActiveLock(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} _IActiveLock(const _IActiveLock& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} // Attributes public: // Operations public: void SetLockType(long nNewValue); long GetLockType(); void SetSoftwareName(LPCTSTR lpszNewValue); CString GetSoftwareName(); void SetSoftwareCode(LPCTSTR lpszNewValue); void SetSoftwareVersion(LPCTSTR lpszNewValue); CString GetSoftwareVersion(); void SetKeyStoreType(long nNewValue); void SetKeyStorePath(LPCTSTR lpszNewValue); CString GetInstallationCode(LPCTSTR User); void SetAutoRegisterKeyPath(LPCTSTR lpszNewValue); CString LockCode(LPDISPATCH* Lic); void Register(LPCTSTR LibKey); CString Transfer(LPCTSTR InstallCode); void Init(); void Acquire(); void Release(); LPDISPATCH GetEventNotifier(); long GetUsedDays(); CString GetRegisteredDate(); CString GetRegisteredUser(); CString GetExpirationDate(); }; ///////////////////////////////////////////////////////////////////////////// // _Globals wrapper class class _Globals : public COleDispatchDriver { public: _Globals() {} // Calls COleDispatchDriver default constructor _Globals(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} _Globals(const _Globals& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} // Attributes public: // Operations public: LPDISPATCH NewInstance(); LPDISPATCH CreateProductLicense(LPCTSTR name, LPCTSTR Ver, LPCTSTR Code, long Flags, long LicType, LPCTSTR Licensee, LPCTSTR Expiration, LPCTSTR LicKey, LPCTSTR RegisteredDate, LPCTSTR Hash1, short MaxUsers); CString TrimNulls(LPCTSTR str); CString MD5Hash(LPCTSTR str); CString Base64Encode(LPCTSTR str); CString Base64Decode(LPCTSTR strEncoded); CString RSASign(LPCTSTR strPub, LPCTSTR strPriv, LPCTSTR strdata); long RSAVerify(LPCTSTR strPub, LPCTSTR strdata, LPCTSTR strSig); }; ///////////////////////////////////////////////////////////////////////////// // _ProductLicense wrapper class class _ProductLicense : public COleDispatchDriver { public: _ProductLicense() {} // Calls COleDispatchDriver default constructor _ProductLicense(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} _ProductLicense(const _ProductLicense& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} // Attributes public: // Operations public: void SetLicenseType(long* newValue); long GetLicenseType(); CString GetProductName(); CString GetProductVer(); void SetProductKey(LPCTSTR lpszNewValue); CString GetProductKey(); CString GetLicenseClass(); void SetLicensee(LPCTSTR lpszNewValue); CString GetLicensee(); void SetLicenseKey(LPCTSTR lpszNewValue); CString GetLicenseKey(); CString GetExpiration(); CString GetRegisteredDate(); long GetMaxCount(); CString GetLastUsed(); CString GetHash1(); CString ToString(); void Load(LPCTSTR strLic); void Save(BSTR* strOut); }; ///////////////////////////////////////////////////////////////////////////// // _ActiveLockEventNotifier wrapper class class _ActiveLockEventNotifier : public COleDispatchDriver { public: _ActiveLockEventNotifier() {} // Calls COleDispatchDriver default constructor _ActiveLockEventNotifier(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} _ActiveLockEventNotifier(const _ActiveLockEventNotifier& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} // Attributes public: // Operations public: }; ///////////////////////////////////////////////////////////////////////////// // __ActiveLockEventNotifier wrapper class class __ActiveLockEventNotifier : public COleDispatchDriver { public: __ActiveLockEventNotifier() {} // Calls COleDispatchDriver default constructor __ActiveLockEventNotifier(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} __ActiveLockEventNotifier(const __ActiveLockEventNotifier& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} // Attributes public: // Operations public: void ValidateValue(BSTR* Value); }; --- NEW FILE: alugen.cpp --- /** * ActiveLock 2 * Copyright 2003-2004 The ActiveLock Software Group (ASG) * * All material is the property of the contributing authors. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * [o] Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * [o] Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ ///////////////////////////////////////////////////////////////////////////// // Machine generated IDispatch wrapper class(es) created with ClassWizard ///////////////////////////////////////////////////////////////////////////// /********************************************************************************************** * Change Log * ========== * * Date (MM/DD/YY) Author Description * --------------- ----------- -------------------------------------------------------------- * 06/28/04 th2tran Created * ***********************************************************************************************/ #include "stdafx.h" #include "alugen.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // _IALUGenerator properties ///////////////////////////////////////////////////////////////////////////// // _IALUGenerator operations void _IALUGenerator::SetStoragePath(LPCTSTR lpszNewValue) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x68030000, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, lpszNewValue); } void _IALUGenerator::SaveProduct(LPDISPATCH* ProdInfo) { static BYTE parms[] = VTS_PDISPATCH; InvokeHelper(0x60030001, DISPATCH_METHOD, VT_EMPTY, NULL, parms, ProdInfo); } LPDISPATCH _IALUGenerator::RetrieveProduct(LPCTSTR Name, LPCTSTR Ver) { LPDISPATCH result; static BYTE parms[] = VTS_BSTR VTS_BSTR; InvokeHelper(0x60030002, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, Name, Ver); return result; } void _IALUGenerator::DeleteProduct(LPCTSTR Name, LPCTSTR Ver) { static BYTE parms[] = VTS_BSTR VTS_BSTR; InvokeHelper(0x60030004, DISPATCH_METHOD, VT_EMPTY, NULL, parms, Name, Ver); } CString _IALUGenerator::GenKey(LPDISPATCH* Lic, LPCTSTR InstCode) { CString result; static BYTE parms[] = VTS_PDISPATCH VTS_BSTR; InvokeHelper(0x60030005, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, Lic, InstCode); return result; } ///////////////////////////////////////////////////////////////////////////// // _Globals properties ///////////////////////////////////////////////////////////////////////////// // _Globals operations LPDISPATCH _ALUGENGlobals::GeneratorInstance() { LPDISPATCH result; InvokeHelper(0x60030000, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, NULL); return result; } LPDISPATCH _ALUGENGlobals::CreateProductInfo(LPCTSTR Name, LPCTSTR Ver, LPCTSTR VCode, LPCTSTR GCode) { LPDISPATCH result; static BYTE parms[] = VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR; InvokeHelper(0x60030001, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, Name, Ver, VCode, GCode); return result; } ///////////////////////////////////////////////////////////////////////////// // _ProductInfo properties ///////////////////////////////////////////////////////////////////////////// // _ProductInfo operations CString _ProductInfo::GetName() { CString result; InvokeHelper(0x68030003, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } CString _ProductInfo::GetVersion() { CString result; InvokeHelper(0x68030002, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } CString _ProductInfo::GetVCode() { CString result; InvokeHelper(0x68030001, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } CString _ProductInfo::GetGCode() { CString result; InvokeHelper(0x68030000, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } --- NEW FILE: alugen.h --- /** * ActiveLock 2 * Copyright 2003-2004 The ActiveLock Software Group (ASG) * * All material is the property of the contributing authors. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * [o] Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * [o] Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ ///////////////////////////////////////////////////////////////////////////// // Machine generated IDispatch wrapper class(es) created with ClassWizard ///////////////////////////////////////////////////////////////////////////// /********************************************************************************************** * Change Log * ========== * * Date (MM/DD/YY) Author Description * --------------- ----------- -------------------------------------------------------------- * 06/28/04 th2tran Created * ***********************************************************************************************/ ///////////////////////////////////////////////////////////////////////////// // _IALUGenerator wrapper class class _IALUGenerator : public COleDispatchDriver { public: _IALUGenerator() {} // Calls COleDispatchDriver default constructor _IALUGenerator(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} _IALUGenerator(const _IALUGenerator& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} // Attributes public: // Operations public: void SetStoragePath(LPCTSTR lpszNewValue); void SaveProduct(LPDISPATCH* ProdInfo); LPDISPATCH RetrieveProduct(LPCTSTR Name, LPCTSTR Ver); // method 'RetrieveProducts' not emitted because of invalid return type or parameter type void DeleteProduct(LPCTSTR Name, LPCTSTR Ver); CString GenKey(LPDISPATCH* Lic, LPCTSTR InstCode); }; ///////////////////////////////////////////////////////////////////////////// // _Globals wrapper class class _ALUGENGlobals : public COleDispatchDriver { public: _ALUGENGlobals() {} // Calls COleDispatchDriver default constructor _ALUGENGlobals(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} _ALUGENGlobals(const _ALUGENGlobals& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} // Attributes public: // Operations public: LPDISPATCH GeneratorInstance(); LPDISPATCH CreateProductInfo(LPCTSTR Name, LPCTSTR Ver, LPCTSTR VCode, LPCTSTR GCode); }; ///////////////////////////////////////////////////////////////////////////// // _ProductInfo wrapper class class _ProductInfo : public COleDispatchDriver { public: _ProductInfo() {} // Calls COleDispatchDriver default constructor _ProductInfo(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} _ProductInfo(const _ProductInfo& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} // Attributes public: // Operations public: CString GetName(); CString GetVersion(); CString GetVCode(); CString GetGCode(); }; --- NEW FILE: alugenc.cpp --- /** * ActiveLock 2 * Copyright 2003-2004 The ActiveLock Software Group (ASG) * * All material is the property of the contributing authors. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * [o] Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * [o] Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ /* * ALUGENC - Console version of alugen.exe * * Author: Thanh Hai Tran (th...@us...), June 2004 */ /********************************************************************************************** * Change Log * ========== * * Date (MM/DD/YY) Author Description * --------------- ----------- -------------------------------------------------------------- * 06/28/04 th2tran Created * ***********************************************************************************************/ #include "stdafx.h" #include "activelock2.h" // ActiveLock object model #include "alugen.h" // ALUGEN object model #include "alugenc.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // The one and only application object CWinApp theApp; using namespace std; ///////////////////////////////////////////////////////////////////////////// // alugenc.exe main // int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; _IActiveLock m_ActiveLock; // Print syntax if (argc < 11) { cerr << _T("ALUGENC - ActiveLock Universal GENerator Command-Line Interface\nSyntax: alugenc.exe -p <productname> -v <productversion> -t <licensetype> -x <expiration_date> -i <installation_code> -l <user>") << endl; cerr << _T("Example: alugenc.exe -p TestApp -v 1.0 -t 0 -x 2004/06/27 -i MDAgNTAgREEgNTYgNTkgRTkKQTg2Ri1FMEMxCkV2YWx1YXRpb24gVXNlcg -l \"Eval User\"") << endl; return FALSE; } // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { cerr << _T("Fatal Error: MFC initialization failed") << endl; return FALSE; } // Initialize OLE libraries if (!AfxOleInit()) { cerr << _T("Fatal Error: OLE initialization failed") << endl; return FALSE; } CoInitialize(NULL); // Obtain ProdName, ProdVer, lictype, regdate, expiredate, instcode from command-line arguments CString strProdName; CString strProdVer; int licType = 0; CString strRegDate; CString strExpire; CString strInstCode; CString strLicensee; // Parse command-line arguments CString temp; for (int i=1; i<argc; i++) { temp = argv[i]; if (temp.CompareNoCase(_T("-p")) == 0) { strProdName = argv[i+1]; i++; } else if (temp.CompareNoCase(_T("-v")) == 0) { strProdVer = argv[i+1]; i++; } else if (temp.CompareNoCase(_T("-t")) == 0) { licType = atoi(argv[i+1]); i++; } else if (temp.CompareNoCase(_T("-x")) == 0) { strExpire = argv[i+1]; i++; } else if (temp.CompareNoCase(_T("-i")) == 0) { strInstCode = argv[i+1]; i++; } else if (temp.CompareNoCase(_T("-l")) == 0) { strLicensee = argv[i+1]; i++; } } // ActiveLock initialization _Globals* alGlobals; // Obtain IActiveLock Instance alGlobals = new _Globals(); alGlobals->CreateDispatch(_T("ActiveLock2.Globals")); m_ActiveLock = alGlobals->NewInstance(); // Obtain ALUGEN instance _ALUGENGlobals* alugenGlobals; alugenGlobals = new _ALUGENGlobals; alugenGlobals->CreateDispatch(_T("ALUGENLib.Globals")); _IALUGenerator alugen; alugen = alugenGlobals->GeneratorInstance(); // Set StorePath CString strPath; char cPath[255]; GetCurrentDirectory(255, (char *)cPath); strPath = cPath; strPath.Insert(strPath.GetLength(), _T("\\products.ini")); alugen.SetStoragePath(strPath); // Generate key _ProductLicense Lic; CString licKey; try { Lic = (_ProductLicense)alGlobals->CreateProductLicense(strProdName, strProdVer, NULL, // product code 0, // flags: alSingle licType, // license type strLicensee, // licensee strExpire, // expiration date NULL, // license key strRegDate, NULL, // Hash1 1); // max users licKey = alugen.GenKey((LPDISPATCH*)&Lic, strInstCode); } catch (CException* ce) { ce->ReportError(); } catch (...) { cerr << _T("I don't know what happened, but it crashed. Have a nice day!") << endl; return FALSE; } cout << (LPCTSTR)licKey << endl; // TODO: Put Cleanup code here return nRetCode; } --- NEW FILE: alugenc.dsp --- # Microsoft Developer Studio Project File - Name="alugenc" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=alugenc - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "alugenc.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "alugenc.mak" CFG="alugenc - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "alugenc - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "alugenc - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "alugenc - Win32 Release" # PROP BASE Use_MFC 2 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 2 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c # ADD BASE RSC /l 0x1009 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0x1009 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "alugenc - Win32 Debug" # PROP BASE Use_MFC 2 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 2 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c # ADD BASE RSC /l 0x1009 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0x1009 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "alugenc - Win32 Release" # Name "alugenc - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\activelock2.cpp # End Source File # Begin Source File SOURCE=.\alugen.cpp # End Source File # Begin Source File SOURCE=.\alugenc.cpp # End Source File # Begin Source File SOURCE=.\StdAfx.cpp # ADD CPP /Yc"stdafx.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\activelock2.h # End Source File # Begin Source File SOURCE=.\alugen.h # End Source File # Begin Source File SOURCE=.\alugenc.h # End Source File # Begin Source File SOURCE=.\Resource.h # End Source File # Begin Source File SOURCE=.\StdAfx.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # Begin Source File SOURCE=.\alugenc.rc # End Source File # End Group # Begin Source File SOURCE=.\ReadMe.txt # End Source File # End Target # End Project --- NEW FILE: alugenc.dsw --- Microsoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "alugenc"=.\alugenc.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### --- NEW FILE: alugenc.h --- /** * ActiveLock 2 * Copyright 2003-2004 The ActiveLock Software Group (ASG) * * All material is the property of the contributing authors. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * [o] Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * [o] Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ /********************************************************************************************** * Change Log * ========== * * Date (MM/DD/YY) Author Description * --------------- ----------- -------------------------------------------------------------- * 06/28/04 th2tran Created * ***********************************************************************************************/ #if !defined(AFX_ALUGENC_H__6CD8A92E_065C_4131_A3EB_3200D78019CD__INCLUDED_) #define AFX_ALUGENC_H__6CD8A92E_065C_4131_A3EB_3200D78019CD__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "resource.h" #endif // !defined(AFX_ALUGENC_H__6CD8A92E_065C_4131_A3EB_3200D78019CD__INCLUDED_) --- NEW FILE: alugenc.rc --- //Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // String Table // STRINGTABLE DISCARDABLE BEGIN IDS_HELLO "Hello from MFC!" END #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // English (Canada) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN #pragma code_page(1252) #endif //_WIN32 #ifndef _MAC ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "Comments", "\0" VALUE "CompanyName", "ActiveLock Software Group\0" VALUE "FileDescription", "ActiveLock Universal GENerator Command-Line Interface\0" VALUE "FileVersion", "1, 0, 0, 1\0" VALUE "InternalName", "alugenc\0" VALUE "LegalCopyright", "Copyright © 2004 ActiveLock Software Group\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "alugenc.exe\0" VALUE "PrivateBuild", "\0" VALUE "ProductName", "ALUGENC\0" VALUE "ProductVersion", "2, 0, 0, 8\0" VALUE "SpecialBuild", "\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END #endif // !_MAC #endif // English (Canada) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED --- NEW FILE: ReadMe.txt --- ======================================================================== CONSOLE APPLICATION : alugenc ======================================================================== AppWizard has created this alugenc application for you. This file contains a summary of what you will find in each of the files that make up your alugenc application. alugenc.dsp This file (the project file) contains information at the project level and is used to build a single project or subproject. Other users can share the project (.dsp) file, but they should export the makefiles locally. alugenc.cpp This is the main application source file. alugenc.rc This is a listing of all of the Microsoft Windows resources that the program uses. It includes the icons, bitmaps, and cursors that are stored in the RES subdirectory. This file can be directly edited in Microsoft Visual C++. ///////////////////////////////////////////////////////////////////////////// Other standard files: StdAfx.h, StdAfx.cpp These files are used to build a precompiled header (PCH) file named alugenc.pch and a precompiled types file named StdAfx.obj. Resource.h This is the standard header file, which defines new resource IDs. Microsoft Visual C++ reads and updates this file. ///////////////////////////////////////////////////////////////////////////// Other notes: AppWizard uses "TODO:" to indicate parts of the source code you should add to or customize. ///////////////////////////////////////////////////////////////////////////// --- NEW FILE: Resource.h --- //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by alugenc.rc // #define IDS_HELLO 1 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif --- NEW FILE: StdAfx.cpp --- // stdafx.cpp : source file that includes just the standard includes // alugenc.pch will be the pre-compiled header // stdafx.obj will contain the pre-compiled type information #include "stdafx.h" // TODO: reference any additional headers you need in STDAFX.H // and not in this file --- NEW FILE: StdAfx.h --- // stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #if !defined(AFX_STDAFX_H__C731D5CD_DC03_4207_9113_2244AA9590EB__INCLUDED_) #define AFX_STDAFX_H__C731D5CD_DC03_4207_9113_2244AA9590EB__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers #include <afx.h> #include <afxwin.h> // MFC core and standard components #include <afxext.h> // MFC extensions #include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h> // MFC support for Windows Common Controls #endif // _AFX_NO_AFXCMN_SUPPORT #include <iostream> // TODO: reference additional headers your program requires here //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_STDAFX_H__C731D5CD_DC03_4207_9113_2244AA9590EB__INCLUDED_) |