Avatar billede jaweni Nybegynder
16. maj 2003 - 05:55 Der er 7 kommentarer og
1 løsning

Selvkopiering af program.

Til rette vedkommende:

Jeg vil gerne checke, om mit
program "X" kører i forvejen.
Hvordan gør jeg det?

Dvs, når jeg opstarter en "ny"
kopi af program "X", så checkes
der for om "X" kører i forve-
jen. "X" ligger altid i mappe
"Y".

M.v.h. Jaweni
Avatar billede stone Forsker
16. maj 2003 - 08:13 #1
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation



{$R *.DFM}


var
    MutexHandle: THandle;


begin
MutexHandle := CreateMutex(nil, TRUE, 'MyappProgramx');
    if MutexHandle <> 0 then
      begin
          if GetLastError = ERROR_ALREADY_EXISTS then

          begin
              MessageBox(0, 'Program x kører allerede.',
                            'Information', mb_IconHand);


            CloseHandle(MutexHandle);
              Halt; // 'Halt' er den som sørger for at programmet ikke
                    // kører i mere end en instance.
          end

              end;




  Application.Initialize;
  Application.Title := 'Program x';
  Application.HelpFile := 'Program x hjaelp.hlp';
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Avatar billede jaweni Nybegynder
17. maj 2003 - 01:16 #2
Hej hjælper,
Avatar billede jaweni Nybegynder
17. maj 2003 - 01:18 #3
Hej hjælper,

jeg ved ikke om problemet er løst;
men det ser rigtigt ud - for mig.

Med venlig hilsen
Jan Nielsen
jaweni@ofir.dk
Avatar billede stone Forsker
17. maj 2003 - 01:46 #4
hej... tak for point
programmet virker unanset hvor din *.exe fil er placeret, du ændre bare 'program x' til navnet på din *.exe fil. Hvis du ikke har nogen help fil kan du bare slette "Application.HelpFile := 'Program x hjaelp.hlp'" for ikke at få unøvendige linier i dit program.
Avatar billede jaweni Nybegynder
17. maj 2003 - 11:35 #5
Hej Stone,

Selv tak (points). Du skulle vel ikke også
være mig behjælpelig med kode til at forhindre,
at program X kan kopieres? F.x. fra diskette til
diskette? Har lavet programmet sådan, at det kun
kan køres fra diskette.

Er det i det hele taget muligt, at forhindre
kopiering?
Har fået info fra anden side ang. kopiering; men
det opfylder ikke mine behov. Har du et forslag.
Måske kodning i Assembler?
Avatar billede fracklen Nybegynder
18. maj 2003 - 01:44 #6
Hvis du ved hvilken diskette programmet skal ligge på kan du først checke om ExtractFileDrive(Application.ExeName) passer med A-drevet.

Derefter kan du gå ind og finde diskettens serienummer.
Dette er forholdvis nemt at omgå, men det er da en start.
(Man skal kende lidt til back-engineering for at komme omkring det)
Avatar billede stone Forsker
18. maj 2003 - 02:01 #7
fracken: back- enginering kan man undgå ved at pakke sin exe fil så den ikke kan læses af f.eks Reshack.exe.
kan ikke lige huske i hvilken kategori det var men prøv at kigge her:

http://www.swissdelphicenter.ch/en/vcl.php

evt. password beskytte dit software i en zip fil eller lign.
Avatar billede stone Forsker
18. maj 2003 - 02:03 #8
der findes ikke "de vises sten" til at beskytte sit software på. Suk folk er mange gange for "kreative"....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester