Подключение lcomp.dll - VB

Узнай цену своей работы

Формулировка задачи:

Уважаемые гуру в программировании помогите горю.В VB6 новичёк . Есть плата ввода/вывода на PCI шину и lcomp.dll с одной функцией (CreateInstance),есть примеры на C++ и Pascal , но я в них ни чего не смыслю.Может кто поможет c переводом на VB6.
Листинг программы
  1. //////////////////////////// Это пример на С++ - Create cpp. //////////////////////////////////////
  2. CREATEFUNCPTR CreateInstance;
  3. HINSTANCE CallCreateInstance(char* name)
  4. {
  5. HINSTANCE hCoponent=::LoadLibrary(name);
  6. if (hComponent==NULL);
  7. {
  8. return 0;
  9. }
  10. CreateInstance=(CREATEFUNCPTR)::GetProcAddress(hComponent,"CreateInstance");
  11. if (CreateInstance==NULL)
  12. {
  13. return 0;
  14. }
  15. return 1;
  16. }
  17. /////////////////////////////////// Это реализация //////////////////////////////////////
  18. ULONG slot =0;
  19. trace("Get IUnknown pointer");
  20. CallCreateInstance("lcomp.dll");
  21. LUnknown* pIUnknown=CreateInstance(slot);
  22. if (pIUnknown ==NULL) {trace("CallCreateIstance failed") ; return 1;)
  23. trace("Get IdaqLDevice interface")
  24. IdaqLDevice* pI;
  25. HRESULT hr=pIUnknown->QueryInterface(IID_ILDEV,(void**)&pI);
  26. if (! SUCCEDED(hr)) {trace("Get IdaqLDevice failed"); return 1;}
  27. trace ("IdaqLDevice get success");
  28. trace("Free IUnknown");
  29. pIUnknown->Release();
  30. pI->OpenLDevice();
  31. pI->LoadBios("XXX");
  32. pI->CloseLDevice();
  33. pI->Release();
  34. ///////////////////////////////// Базовый Класс Lunknown /////////////////////////////////////////////
  35. struct LUnknown
  36. {
  37. IFC(HRESULT) QueryInterface(const IID& iid,void** ppv)=0;
  38. IFC(ULONG) AddRef()=0;
  39. IFC(ULONG) Release()=0
  40. };
  41. /////////////////////////////////// Основной интерфейс ////////////////////////////////////////////////
  42. struct IdaqLDevice
  43. {
  44. IFC(HANDLE) OpenLDevice()=0;
  45. IFC(ULONG) LoadBios(char* FileName)=0;
  46. }
Листинг программы
  1. ///////////////////////////////// Это пример на Pascal ////////////////////////////
  2. unit Create;
  3. interface
  4. type
  5. TCreateInstance=function(slot:ULONG):LUnknown;cdecl;
  6. var
  7. hModule:THandle;
  8. CreateInstance:TCreateInstance;
  9. function CallCreateInstance(name:PChar):ULONG;
  10. implementation
  11. function CallCreateInstance(name:PChar):ULONG;
  12. begin
  13. hModule:=0;
  14. hModule:=LoadLibrary(name);
  15. if(hModule=0) then
  16. begin
  17. Result:=0;
  18. Exit:
  19. end;
  20. @CreateInstance:=GetProcAddress(hModule,'CreateInstance')
  21. if (@CreateInstance=nil) then
  22. begin
  23. Result:=o;
  24. Exit;
  25. end;
  26. Result:=0;
  27. end;
  28. end.
  29. var
  30. pLDEV :IdaqLDevice;
  31. pIUnknown : LUnknown;
  32. hr : integer;
  33. dev : THandle;
  34. if (CallCreateInstance('lcomp.dll')=1) then
  35. begin
  36. //{OK}
  37. end;
  38. pIUnknown:=CreateInstance(slot);
  39. hr:=pIUnknown.QueryInterface(IID_ILDEV,pLDEV);
  40. if(not Succeeded(hr)) then MessageBox(0,'Get interface failed','Error');
  41. pIUnknown.Release;
  42. dev:=pLDEV.OpenLDevice
  43. pLDEV.Release
  44. //////////////////////////////////////////////
  45. unit ifc;
  46. interface
  47. const
  48. IID_ILDEV : TGUID='{32bb8320-b41b-11cf-a6bb-0080c7b2d682}'
  49. IID_ILDEV2 : TGUID='{c737c7ef-ecc2-49f2-ba4e-94c889f07399}'
  50. type
  51. LUnknown=class
  52. function QueryInterface(const iid:TGUID;out ppv):HRESULT;virtual;stdcall;abstract;
  53. function AddRef:ULONG;virtual;stdcall;abstract;
  54. function Release:ULONG;vitrual;stdcall;abstract;
  55. end;
  56. type
  57. idaqLDevice=class(LUnknown)
  58. function OpenLDevice : Thandle;virtual;stdcall;abstract;
  59. function LoadBios(File : PAnsPcar)ULING
  60. end;
  61. implementation
  62. end.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Это я пытался переводить варианты на VB6 ни чего не выходит ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Листинг программы
  1. Option Explicit
  2. public type GUID
  3. data1 as long
  4. data2 as integer
  5. data3 as integer
  6. data4(7) as byte
  7. end type
  8. public const IID_ILDEV as GUID = "{32bb8320-b41b-11cf-a6bb-0080c7b2d682}"
  9. public const IID_ILDEV2 as GUID = "{c737c7ef-ecc2-49f2-ba4e-94c889f07399}"
  10. public type LUnknonw
  11. QueryInterface() as long
  12. AddRef() as long
  13. Release() as long
  14. end type
  15. public const slot as long = 0
  16. public hModule as long
  17. public CreateInstance as long
  18. public pIUnknown as LUnknown
  19. public declare function LoadLibrary lib "kernel.dll" Alias LoadLibraryA (Byval loLibfileName as string) as long
  20. public declare function GetProcAddress lib "kernel.dll"(Byval hModule as long,Byval lpProcName as string) as long
  21. public function CreateInstance(ByVal slot as long) as LUnknown : end function ''
  22. public function CallCreateInstance(ByVal name as String) as LONG
  23. hModule = 0
  24. hModule = LoadLibrary("lcomp.dll")
  25. if hModule <> 0 then
  26. Form1.text1.text = HEX(hModule)
  27. else
  28. Fomr1.text1.text="Lib Error"
  29. End if
  30. CreateInstance=GetProcAddress(hModule,"CreateInstance")''
  31. if CreateInstance <> 0 then
  32. Form1.text2.text = HEX(CreateInstance)
  33. else
  34. Form1.text2.text = "Func Error"
  35. end if
  36. end function

Решение задачи: «Подключение lcomp.dll»

textual
Листинг программы
  1. dim hLib as long
  2. dim slot as long
  3. dim Err as long
  4. dim pI as Idaqldevice'' пишет "несовподение типов"пробывал разние типы данных для pI и Idaqldevice,ни как.
  5.  
  6. hLib=LoadAPIDLL("lcomp.dll")
  7. pI=CallCreateInstance(hLib,slot,Err)'' в pI восьмизначное dec. число , в Err сообщение об успешной загрузки
  8.  
  9. public type Idaqldevice'' базовый  класс
  10. openldevice() as long
  11. loadbios() as long
  12. ''разные функции
  13. end type

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.615 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут