Տուն
Top.Mail.Ru Moscow
Ֆորում: «Գլխավոր»;
Ընթացիկ արխիվը `2002.01.08;
Բեռնել: [xml.tar.bz2];

Down

Dll s Գտնել նմանատիպ մասնաճյուղեր


HELP ME PLZ   (2001-12-15 18:22) [0]

ՕԳՆԵՔ ԽԱՂԱՐԵՔ, ԱՅՍ ԱՆԳԱՄ ԱՇԽԱՏԱՆՔՆ ԱՇԽԱՏԱՆՔՈՒՄ ԵՆ DLL- Ի ՀԵՏՈ, ԻՆՉՊԵՍ Կանչել DLL-shki- ից գործառույթ



Oleg Gashev   (2001-12-15 18:35) [1]

Զանգահարելով DLL- ներ

Թեմաների խումբ Տես նաև

Նախքան զանգահարել DLL- ով սահմանված ռեժիմներ, դուք պետք է ներմուծեք դրանք: Դա կարելի է անել երկու եղանակով ՝ արտաքին ընթացակարգ կամ գործառույթ հայտարարելով կամ ուղղակիորեն զանգահարելով Windows API: Ո՞ր մեթոդն եք օգտագործում, ռեժիմները կապված չեն ձեր դիմումի հետ մինչև գործարկման ժամանակ: Սա նշանակում է, որ ձեր ծրագիրը կազմելու ժամանակ DLL- ը հարկավոր չէ ներկա լինել: Դա նաև նշանակում է, որ չկա ռեժիմային ներմուծման փորձերի կազմման ժամանակային վավերացում:
Object Pascal- ը չի աջակցում DLL- ից փոփոխականների ներմուծմանը:

Ստատիկ բեռնում

Ընթացակարգ կամ գործառույթ ներմուծելու ամենապարզ միջոցը արտաքին հրահանգի միջոցով այն հայտարարելն է: Օրինակ ՝

ընթացակարգ DoSomething; արտաքին «MYLIB.DLL»;

Եթե ​​այս հայտարարությունը ներառեք ծրագրում, MYLIB.DLL- ը բեռնվում է մեկ անգամ, երբ ծրագիրը սկսվում է: Ծրագրի կատարման ընթացքում DoSomething նույնացուցիչը միշտ վերաբերում է նույն DLL- ի նույն մուտքի կետին:
Ներմուծված ռեժիմների հայտարարագրերը կարող են տեղադրվել ուղղակիորեն այն ծրագրի կամ բաժնում, որտեղ կանչվում են: Այնուամենայնիվ, պահպանումը պարզեցնելու համար դուք կարող եք արտաքին հայտարարագրեր հավաքել առանձին «ներմուծման ստորաբաժանում», որը պարունակում է նաև DLL- ի հետ միջամտության համար անհրաժեշտ ցանկացած կայունություն և տեսակներ: (Դելֆիի Windows միավորը լավ օրինակ է): Մյուս մոդուլները, որոնք օգտագործում են ներմուծման միավորը, կարող են զանգահարել դրանում հայտարարված ցանկացած ռեժիմ:

Արտաքին հայտարարագրերի վերաբերյալ լրացուցիչ տեղեկություններ ստանալու համար տե՛ս Արտաքին հայտարարագրերը:
Windows API զանգերի միջոցով դինամիկ բեռնում:




Oleg Gashev   (2001-12-15 18:36) [2]

-------------------------------------------------- ---------------
Loadlibrary

LoadLibrary գործառույթը նշված կատարողական մոդուլը նկարագրում է զանգահարման գործընթացի հասցեային տարածքում:

HINSTANCE LoadLibrary (

LPCTSTR lpLibFileName // Կատարելի մոդուլի ֆայլի անվան հասցեն
);


Պարամետրեր

lpLibFileName

Նշում է զրոյացված տողի վրա, որը անվանում է գործարկվող մոդուլը (կամ. DLL կամ .EXE ֆայլ): Նշված անունը մոդուլի անունն է և կապված չէ գրադարանի մոդուլում պահվող անվան հետ, ինչպես նշված է գրադարանի հիմնաբառով `մոդուլի սահմանման (.DEF) ֆայլում:

Եթե ​​տողը նշում է ուղի, բայց ֆայլը նշված գրացուցակում գոյություն չունի, գործառույթը ձախողվում է:
Եթե ​​ուղին չի նշվում, և անվանման անունը երկարաձգվել է, ապա գրադարանի լռելյայն երկարաձգումը: Այնուամենայնիվ, ֆայլի անվան տողը կարող է ներառել հետագծի կետի նիշ (.) Նշելու համար, որ մոդուլի անունը չունի ընդլայնում: Երբ որևէ ուղի նշված չէ, գործառույթը որոնում է ֆայլը հետևյալ հաջորդականությամբ.

1: Տեղեկատու, որից բեռնում է ծրագիրը:
2: Ներկայիս գրացուցակը:
3: Windows 95` Windows համակարգի տեղեկատու: Այս գրացուցակի ուղին ստանալու համար օգտագործեք GetSystemDirectory գործառույթը:

Windows NT` 32 բիթ Windows համակարգի տեղեկատու: Այս գրացուցակի ուղին ստանալու համար օգտագործեք GetSystemDirectory գործառույթը: Այս գրացուցակի անունը SYSTEM32 է:

4: Windows NT` 16 բիթ Windows համակարգի տեղեկատու: Չկա Win32 գործառույթ, որը ձեռք է բերում այս գրացուցակի ուղին, բայց այն որոնվում է: Այս գրացուցակի անունը SYSTEM է:
5: Windows գրացուցակը: Այս գրացուցակի ուղին ստանալու համար օգտագործեք GetWindowsDirectory գործառույթը:
6: Գրացուցակները, որոնք թվարկված են PATH միջավայրի փոփոխականում:



Առաջին որոնված գրացուցակը մեկն է, որը պարունակում է պատկերի ֆայլ, որն օգտագործվում է զանգահարման գործընթացը ստեղծելու համար (լրացուցիչ տեղեկությունների համար տե՛ս CreatProcess գործառույթը): Դա անելը հնարավորություն է տալիս անձնական դինամիկ կապի գրադարանի (DLL) ֆայլերը, որոնք կապված են գործընթացի հետ, հնարավոր է գտնել առանց գործընթացի տեղադրված գրացուցակը PATH միջավայրի փոփոխականին ավելացնելուն:
Երբ գործառույթը ձեռք կբերի գրադարանի մոդուլի ֆայլը լիովին որակավորված ուղի, ուղին համեմատվում է (ինքնուրույն դեպք) դեպի զանգահարման գործընթացում ներկայումս բեռնված գրադարանային մոդուլների ամբողջական ուղիները: Այս գրադարանները պարունակում են այն բեռնվածները, երբ գործընթացը սկսվել է, ինչպես նաև այն LoadLibrary- ի կողմից նախկինում բեռնված, բայց FreeLibrary- ի կողմից բեռնված չլինածները: Եթե ​​ուղին համընկնում է արդեն բեռնված մոդուլի ուղու հետ, գործառույթը պարզապես ավելացնում է մոդուլի համար տեղեկանքի հաշվարկը և այդ գրադարանի համար վերադարձնում է մոդուլի բռնակը:



Վերադարձ արժեքները

Եթե ​​գործառույթը հաջողություն ունի, ապա վերադարձի արժեքը մոդուլ է:
Եթե ​​գործառույթը ձախողվում է, ապա վերադարձի արժեքը NULL է: Լրացուցիչ սխալների վերաբերյալ տեղեկատվություն ստանալու համար զանգահարեք GetLastError- ին:

Խոսք

LoadLibrary- ը կարող է օգտագործվել DLL մոդուլի քարտեզագրման և բռնակը վերադարձնելու համար, որը կարող է օգտագործվել GetProcAddress- ում `DLL գործառույթի հասցեն ստանալու համար: LoadLibrary- ը կարող է օգտագործվել նաև այլ գործադիր մոդուլները քարտեզագրելու համար: Օրինակ, գործառույթը կարող է նշել .EXE ֆայլ ձեռք բռնելու համար, որը կարող է օգտագործվել FindResource- ում կամ LoadResource- ում:
Մոդուլի բռնակները գլոբալ կամ ժառանգական չեն: LoadLibrary- ի կողմից մեկ գործընթացով ստացված զանգը չի ստեղծում բռնիչ, որը կարող է օգտագործել մեկ այլ գործընթաց



Էջեր: 1 ամբողջ ճյուղը

Ֆորում: «Գլխավոր»;
Ընթացիկ արխիվը `2002.01.08;
Բեռնել: [xml.tar.bz2];

Up





Հիշողություն `0.56 ՄԲ
Ժամանակը `0.032 գ
3-21899
Ելչեւ
2001-12-03 10:26
2002.01.08
Արագ մուտք դեպի ORACLE DB


3-21981
Տիմիկ
2001-12-06 08:22
2002.01.08
Հիմնական դաշտերի եւ IDENTITY- ի մասին


1-22053
կանաչապատ
2001-12-18 19:29
2002.01.08
ANTIALSING- ի համար TTF տառատեսակների համար:


1-22118
vlv
2001-12-19 21:59
2002.01.08
Բաղադրիչներ


7-22441
ulysses
2001-09-19 20:31
2002.01.08
Delphi 5 Ent չի տեղադրվում սովորաբար Win2k Pro- ի ներքո





afrikaans ալբանական արաբական հայերեն ադրբեջանական Բասկերի Բելառուսի Բուլղարիայի catalan Չինարեն (պարզեցված) Չինարեն (ավանդական) Խորվաթիայի չեխ դանիերեն հոլանդական Անգլերեն
Էստոնիայի filipino ֆիններեն ֆրանսերեն
galician վրացական գերմանական հունարեն haitian Creole եբրայերեն հինդի հունգարերեն icelandic հայերեն իռլանդական իտալական ճապոնացի Կորեայի Լատվիայի Լիտվայի մակեդոներեն Մալայերեն մալթերեն նորվեգական
պարսկական Լեհաստանի պորտուգալացի ռումինական ռուսական սերբերեն Սլովակիայի Սլովենիայի իսպաներեն սուահիլի շվեդերեն թայերեն թուրքական ուկրաինական ուրդու վիետնամերեն ուելսերեն հայերեն bengali բոսնիերեն
Cebuano Esperanto գուջարաթի հաուսա Hmong Igbo ճավաերեն kannada Khmer Lao լատիներեն մաորի մարաթի մոնղոլական նեպալերեն Punjabi Somali tamil telugu յորուբա
զուլուսերեն
Անգլերեն Французский Немецкий Итальянский Португальский Русский Испанский