Avatar billede frossen Nybegynder
15. marts 2001 - 10:32 Der er 5 kommentarer og
1 løsning

fil associering, workdirectory,

jeg har 3 spørgsmål:

1: hvordan for man et program til at lystre på fil associering?:

Jeg har et program der når filen bliver åbnet skal gøre noget så simpelt
som at: åbne et andet program + et parameter til det program..

2: hvordan for man et program til at skifte arbejdsbiblotek så den ikke kører kommandoerne fra det biblotek exe\'en ligger i?

3: hvordan laver man en dialogbox til at vælge directory, og får den til at skrive det til en fil
eks.:  man vælger c:\\windows
kommer inifile.ini til se sådan ud: c:\\windows
Avatar billede borrisholt Novice
15. marts 2001 - 10:46 #1
uses
  Registry, Inifiles, ShlOBJ;
//1)

procedure SetAssociation(Extention, Name: string; IconIndex: Integer = 0);
//-------------------------------------
//Set Association for a Given Extention:
//
//Example : SetAssociation(\'Mpp\', Application.ExeNeme);
//-------------------------------------

var
  Regist: TRegistry;
begin
  Regist := TRegistry.Create;
  try
    with Regist do
    begin
      RootKey := HKEY_LOCAL_MACHINE;
      if OpenKey(\'\\Software\\Classes\\.\' + Extention, true) then
      begin
        WriteString(\'\', Name);
        if OpenKey(\'\\Software\\Classes\\\' + Name, true) then
        begin
          WriteString(\'\', Name);
          if OpenKey(\'\\Software\\Classes\\\' + Name + \'\\DefaultIcon\', true) then
            WriteString(\'\', Application.ExeName + \',\' + IntToStr(IconIndex));
          if OpenKey(\'\\Software\\Classes\\\' + Name + \'\\shell\\open\\command\', true) then
            WriteString(\'\', Application.ExeName + \' %1\');
        end;
      end;
    end;
  finally
    Regist.Free;
  end;
end;

//2)
// Brug SetCurrentDir

//3)

function BrowseForFolder(hndl: HWND; msg: string=\'\'): string; {hndl iscalling forms handle}
var
  FolderName: string;
  GDir:  string;
  PList:  PItemIDList;
  bi:  TBrowseInfo;
begin
  FillChar(bi, SizeOf(TBrowseInfo), 0);
  FolderName:= StringOfChar(\' \', MAX_PATH);
  GDir:= StringOfChar(\' \', MAX_PATH);

  with bi do
  begin
    hwndOwner:=  hndl;
    pidlRoot:=  nil;
    pszDisplayName:= PChar(FolderName);
    lpszTitle := PChar(msg);
    lpfn:= nil;
    ulFlags:= BIF_DONTGOBELOWDOMAIN or BIF_RETURNONLYFSDIRS or BIF_RETURNFSANCESTORS;
  end;

  PList:= SHBrowseForFolder(bi);    {<-- show the dialog}

  if Plist<>nil then
  begin
    SHGetPathFromIDList(Plist, PChar(GDir));
    setlength(GDir, pos(#0, gdir)-1);
    result:= GDir;
  end
  else
    result:= \'\';
end;

//3)
  With TIniFile.Create(\'Tmp.ini\') do
  try
    WriteString(BrowseForFolder(Form1.Handle),\'Biblotek\',GetCurrentDir);
  finally
    free;
  end;


Jens B
Avatar billede borrisholt Novice
15. marts 2001 - 10:47 #2
Frossen har du ikke et lille hængeparti med et par spørgsmål ?

Jens B
Avatar billede frossen Nybegynder
15. marts 2001 - 11:08 #3
har ordnet det
Avatar billede frossen Nybegynder
15. marts 2001 - 11:10 #4
jeg var væk et stykke tid: mit nye project, en demoafspiller til quake3arena, jeg fandt en for nogle dage siden men den virkede skod, så nu laver jeg selv en :)  tak for hjælpen, jeg havde knap nok posted det før der kom svar .. nice
Avatar billede frossen Nybegynder
16. marts 2001 - 12:03 #5
jeg kan ikke få det til at virke, hver gang jeg laver en Tregistery, Tinifile, osv virker det ikke: undeclared identifier, og hvor skal functioner sættes ind henne??
Avatar billede borrisholt Novice
16. marts 2001 - 12:10 #6
Det er fordi du ikke uses de rigtige units :

uses
  Registry, Inifiles, ShlOBJ;


Jens B
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