at de associerede ikon af en fil, udvidelse

, denne artikel indeholder en funktion, du kan bruge til at få de associerede ikon i en fil eller dokument, baseret på dets fil forlængelse (dvs. det betyder ikke noget, om dossieret eller dokumentet findes på cd eller ikke), extractassociatedicon, for at få ikonet af en ansøgning, eller dokumentet, vi kan bruge denne api funktion (angivet i shellapi enhed):,,, funktion extractassociatedicon (hinst: hinst; lpiconpath: pchar;,, var lpiicon: ord): hicon; stdcall;,,, hinst: anvendelse af.denne værdi er indeholdt i på forhånd definerede variabel hinstance.,,, lpiconpath: et fingerpeg om en karakter, som bør indeholde en null afsluttes buffer snor med fuld vej navn af anvendelsen, bibliotek (dll) eller dokument.hvis det er et dokument, der fungerer, vil den fulde pathname af ansøgning fra, hvor ikon blev fjernet, så vi bør afsætte en buffer stort nok.,,, lpiicon: ikon - indeks (første ikon i sagen har et indeks på 0).hvis lpiconpath angiver et dokument, så lpiicon er fastsat af funktion (det er grunden til, at det er gået med henvisning til indeks holdning af den faktiske ikon fra de associerede eksekverbar (defineret i filen association).,,, afkast værdi: hvis den funktion ikke, den kommer tilbage, 0.hvis det lykkes, det returnerer et ikon, klare, som er en heltalsværdi anvender til at identificere de tildelte ressourcer vinduer.det er ikke nødvendigt at opfordre de api destroyicon frigive ikon, da det vil være deallocated automatisk, når anvendelsen ophører, men du kan gøre det, hvis du vil.,,, stikprøve, nu, hvad gør vi med ikonet klare?normalt er det, vi ønsker, er et ikon, nemlig og tilfælde af ticon klasse.alt vi skal gøre, er at skabe et ticon formål og tildele denne klare sin klare ejendom.hvis vi senere tildele klare ejendom til en anden værdi, den tidligere ikon vil automatisk blive frigivet.det samme sker, hvis de ticon objekt er befriet.,,, her er et eksempel, der ændrer ikon i form:,,, bruger sysutils, vinduer, shellapi;,,, procedure tform1. button1click (afsender: tobject);,, var, iconindex: ord;,, buffer: system [0 - 2048] char,,, iconhandle: hicon;,, begynder, strcopy (@ buffer "c: \\ vinduer. hjælpe. vinduer. smart"), iconindex: = 0, iconhandle: = extractassociatedicon (hinstance, buffer, iconindex), hvis iconhandle < > 0,, ikon. klare: = iconhandle,,,,,,, getassociatedicon, desværre ikke extractassociatedicon, hvis sagen ikke findes på cd, så vi har fastlagt en procedure, der får ikon i en fil om det eksisterer eller ej, og kan også få den lille ikon (idél en tlistview, der kan påvises i vsicon eller vsreport opfattelse stilarter).den procedure, modtager tre parametre: filnavn og to henvisninger til hicon (integer) variabler: en for stor ikon (32x32) og én til den lille ikon (16x16).nogle af dem kan være nul, hvis du ikke har brug for en af disse symboler.ikonerne "tilbage" af proceduren skal være frigjort med destroyicon api - grænseflade.dette vil ske automatisk, hvis du tildele ikon klare (hicon) til at håndtere ejendom af en ticon objekt (ikon - vil blive frigivet, når dette formål bliver løsladt eller en ny værdi er tildelt).,,, bruger sysutils, register, vinduer, shellapi,,,,,,,,, phicon = ^ hicon;,,, procedure getassociatedicon (filnavn: tfilename;,, plargeicon, psmallicon: phicon); //får billeder af en given sag, var, iconindex: ord; //position ikonet i sagen, fileext, filetype: string;,, reg. tregistry;, p: heltal, p1, p2: pchar;,, etiket, noassoc;,, begynder, iconindex: = 0, //- udvidelse af sagen, fileext: = store (extractfileext (filnavn), hvis ((fileext < > ". exe) og (fileext < >. ico ')), eller ikke fileexists (filnavn) så begynde, //, hvis sagen er en exe eller ico, og det findes, så vil vi, ekstrakt //ikonet fra denne sag.ellers, //her vil vi forsøge at finde de associerede ikon i, //windows - registret...,, fo: = nul;,,,, fo: = tregistry. skabe (key_query_value);,, reg.rootkey: = hkey_classes_root;,, hvis fileext = ". exe", så fileext: = ". kom,,, hvis reg. openkeyreadonly (fileext), så prøv, filetype: = reg. readstring ('); og endelig, reg. closekey,,,,,,, hvis filetype < >") og openkeyreadonly reg. (+), filetype defaulticon'), så prøv, filnavn: = reg. readstring ('); og endelig, reg. closekey,,,,,, endelig. Reg.Free;,, end;,,, //If we couldn't find the association, we will,, //try to get the default icons,, if FileName = '' then goto noassoc;,,, //Get the filename and icon index from the,, //association (of form '"filaname",index'),, p1 := PChar(FileName);,, p2 := StrRScan(p1, ',');,, if p2 <> nil then begin,, p := p2 - p1 + 1; //Position of the comma,, IconIndex := StrToInt(Copy(FileName, p + 1,,, Length(FileName) - p));,, SetLength(FileName, p - 1);,, end;,, end;,, //Attempt to get the icon,, if ExtractIconEx(pchar(FileName), IconIndex,,, PLargeIcon^, PSmallIcon^, 1) <> 1 then,, begin,, noassoc:,, //operationen mislykkes, eller sagen havde ingen forbindelse, //ikon.Try to get the default icons from SHELL32.DLL,,, try //to get the location of SHELL32.DLL,, FileName := IncludeTrailingBackslash(GetSystemDir),, + 'SHELL32.DLL';,, except,, FileName := 'C:\\WINDOWS\\SYSTEM\\SHELL32.DLL';,, end;,, //Determine the default icon for the file extension,, if (FileExt = '.DOC') then IconIndex := 1,, else if (FileExt = '.EXE'),, or (FileExt = '.COM') then IconIndex := 2,, else if (FileExt = '.HLP') then IconIndex := 23,, else if (FileExt = '.INI'),, or (FileExt = '.INF') then IconIndex := 63,, else if (FileExt = '.TXT') then IconIndex := 64,, else if (FileExt = '.BAT') then IconIndex := 65,, else if (fileext = ". dll) eller (fileext =. system"), eller (fileext = ". vbx) eller (fileext =". ocx) eller (fileext = ". vxd), så iconindex: = 66, andre, hvis (fileext =. fon...) så iconindex: = 67, andre, hvis (fileext =. ttf), så iconindex: = 68, andre, hvis (fileext =". (') iconindex: = 69, andre iconindex: = 0, //forsøg på at få ikonet., hvis extracticonex (pchar (filnavn), iconindex,,, plargeicon ^, psmallicon (1) < > 1, begynder, //undladt at få ikonet.bare "tilbage" nuller.,, hvis plargeicon < > nul, så plargeicon ^: = 0, hvis psmallicon < > nul, så psmallicon ^: = 0,,,,,,,,,,,,,,, at dette vil prøve, ændre ikon af din form:,,, procedure tform1. button1click (afsender: tobject);,, var, smallicon: hicon;,, begynder, getassociatedicon ('file. doc, nul, @ smallicon), hvis smallicon < > 0, så klare, ikon.: = smallicon,,,,,,



Previous:
Next Page: