Results 1 to 8 of 8
  1. #1
    Join Date
    Jun 2012
    Posts
    163
    Provided Answers: 1

    Unanswered: error when calling a dll

    guys:

    I am trying to protect my brilliant application using a usb dongle (a physical usb key), i got a full kit from an Argentinian company... and... i have to call a function inside a dll... brilliant has a wizard for that but... every single time i use it... brilliant crashes...

    - if i call the dll i just got an error "you need to use a function inside the dll" (not the exact words but kind of.)

    - but if i use the function i need inside the dll... brilliant crashes.

    any ideas?

    best regards..

    fer

  2. #2
    Join Date
    Feb 2004
    Location
    In front of the computer
    Posts
    15,579
    Provided Answers: 54
    First order of business, users generally don't like dongles. Dongles are problematic to use, especially in a virtual environment. Depending on the manufacturing quality of the dongle itself, they can fail and that causes a massive headache for both the user and the software reseller (which is probably going to be you!). There are lots of other ways to protect an application from being stolen, and dongles are almost the bottom of my list (to the point where I frequently refuse to support applications that use them).

    With that said, the business of calling a DLL seems to be pretty clearly documented at Creating and Using DLLs on the Brilliant Database web site. Note that the Brilliant DLL API only provides for string arguments, which is a pretty significant drawback for most third party DLLs. These restrictions will probably require a "Thunk" to get a third party DLL working with Brilliant Database.

    I don't have a copy of Brilliant Database, but I don't think that it should be hard for someone who has a copy and even minor experience with Windows DLL files to create the "thunk" that you need to get things working. IF they had a copy of Brilliant Database, this should be trivial for the people that wrote the code for the dongle that you are using.

    -PatP
    In theory, theory and practice are identical. In practice, theory and practice are unrelated.

  3. #3
    Join Date
    Jun 2012
    Posts
    163
    Provided Answers: 1
    man thanks for your support... sadly creating the trunk is out my reach... (brilliant is the only "programming" skill i got)(wich actually is not programming) i will contact the support guys of the dungle...

    on the other hand.. i would like to ask you, what do you thing about the "virtual" licence products out there, most of them usually works with a key... the thing is how to prevent that some one just publish the licence???

    what is your virtual licence choice?

  4. #4
    Join Date
    Jul 2012
    Location
    Ireland
    Posts
    815
    Provided Answers: 17
    If you must use a dongle, I'm sorry I can't help with getting the DLL working. I've never tried to run an external dll from brilliant database.

    That being said though, dongles are awful things. They are not allowed in any factory I'm dealing because on a factory production floor they will go missing in a matter of hours. Chucked down a toilet or over a wall.

    It's not so bad for office blocks, but they do indeed go missing when someone has a bone to pick with a fellow workmate. lol...

    I can give you tips on how to implement an online activation process for your brilliant database creations if you like. I use something like this a lot and it works very well.

    Best of all, since it's something you can create entirely on your own and implement, there's no licence fee to be paid for software protection.

    Regards
    James

  5. #5
    Join Date
    Jun 2012
    Posts
    163
    Provided Answers: 1
    - my app is intented for office, sothe dongle is not a problem... (but yes... it can be stollen from a fired employ)
    yes, pleas my dear james, tell me about it how do you do it?

    maybe just a list of steps works for me...

    (i live in mexico and sadly is the 3er most pirate country behaind rusia and china)

  6. #6
    Join Date
    Feb 2004
    Location
    In front of the computer
    Posts
    15,579
    Provided Answers: 54
    Just how secure do you want this beastie to be? I've got ideas for a couple of simple and elegant fixes that depend on internet connectivity, and a few more that could work independently from internet access.

    The problems that you need to balance are:
    • Do you sell or license your software?
    • How much trouble are you as the seller willing to tolerate?
    • How much licensing trouble will your users tolerate?
    • Can frequently can you rely on users having internet access?
    • How likely are your users to try to cheat you?
    There are a number of ways to go about managing the security for an application, but all of them amount to a balancing act... How hard do you want to make it to steal your software versus how hard are the users willing to work to prove that they have a license?

    -PatP
    In theory, theory and practice are identical. In practice, theory and practice are unrelated.

  7. #7
    Join Date
    Jul 2012
    Location
    Ireland
    Posts
    815
    Provided Answers: 17
    How far I go varies depending on the answers to the exact same kind of questions Pat is asking.

    That said, to give you some idea of what I do, the first thing is to create a Static Variable that will be used to store the registration code once it's entered.

    If this code is not entered, or the wrong code is entered, the database does specific things like a timer runs every 10 minutes to display a pop-up annoying message alerting the user the program is not registered, or specific fields are made read only though permissions and so on.

    To make it full version, I would have given them a drop down menu item in the database called “Online Activation”.

    They click that, and it asks them to enter in their activation code they would have gotten when purchasing the software. Once the code has been entered and they press activate. This code is added to a URL request. The code value is simply the name of a encrypted txt file on my server. So they are technically only supplying a path to a file on my server which the HTTP request fetches and reads.

    The TXT file is then decrypted by the database back to it's true value and it's populated into the static variable.

    Now that the true code has been fetched and populated, the database behaves as full version.

    I use this method in different variations depending on the customer. Some are on a subscriptions service which a timer is used to make the program expire 1 year from the day it was activated. Each year a new code is required after payment is received and so on.

    Just one idea of many that can be implemented.

    If your expecting high piracy, Pat will likely have infinitely better idea's than what I just said. My methods server me well simply because I'm going to be in the factories where they use my software from time to time, so I know they are not going to risk being caught. My methods are more about making sure I get paid for the work I did than anything else.

    Regards
    James

  8. #8
    Join Date
    Jun 2012
    Posts
    163
    Provided Answers: 1
    thanks guys i will think about this ideas...

    i really apresiate the time you guys take to answer.

    best regards from mexico

    fer

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •