RedRatDLL.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #include "stdafx.h"
  2. #include "RedRatDLL.h"
  3. namespace RedRat {
  4. HMODULE g_hdll = NULL;
  5. irc_IsAppRunning g_IsAppRunning = NULL;
  6. irc_StartIRApp g_StartIRApp = NULL;
  7. irc_CloseApp g_CloseApp = NULL;
  8. irc_Connect g_Connect = NULL;
  9. irc_DisConnect g_DisConnect = NULL;
  10. irc_loadSignalDataSet g_loadSignalDataSet = NULL;
  11. irc_getDeviceNames g_getDeviceNames = NULL;
  12. irc_getSignalsName g_getSignalsName = NULL;
  13. irc_sendSignal g_sendSignal = NULL;
  14. irc_sendSignals g_sendSignals = NULL;
  15. irc_sendRepeatsSignal g_sendRepeatsSignal = NULL;
  16. int g_nIRControl = 0;
  17. BOOL LoadLibrary()
  18. {
  19. if (g_hdll == NULL)
  20. {
  21. g_hdll = (HMODULE)::LoadLibrary(_T("IRControl.dll"));
  22. if (!g_hdll)
  23. return FALSE;
  24. }
  25. g_sendRepeatsSignal = (irc_sendRepeatsSignal)GetProcAddress(g_hdll, "sendRepeatsSignal");
  26. if (!g_sendRepeatsSignal)
  27. {
  28. UnloadLibrary();
  29. return FALSE;
  30. }
  31. g_sendSignals = (irc_sendSignals)GetProcAddress(g_hdll, "sendSignals");
  32. if (!g_sendSignals)
  33. {
  34. UnloadLibrary();
  35. return FALSE;
  36. }
  37. g_sendSignal = (irc_sendSignal)GetProcAddress(g_hdll, "sendSignal");
  38. if (!g_sendSignal)
  39. {
  40. UnloadLibrary();
  41. return FALSE;
  42. }
  43. g_loadSignalDataSet = (irc_loadSignalDataSet)GetProcAddress(g_hdll, "loadSignalDataSet");
  44. if (!g_loadSignalDataSet)
  45. {
  46. UnloadLibrary();
  47. return FALSE;
  48. }
  49. g_IsAppRunning = (irc_IsAppRunning)GetProcAddress(g_hdll, "IsAppRunning");
  50. if (!g_IsAppRunning)
  51. {
  52. UnloadLibrary();
  53. return FALSE;
  54. }
  55. g_StartIRApp = (irc_StartIRApp)GetProcAddress(g_hdll, "StartIRApp");
  56. if (!g_StartIRApp)
  57. {
  58. UnloadLibrary();
  59. return FALSE;
  60. }
  61. g_CloseApp = (irc_CloseApp)GetProcAddress(g_hdll, "CloseApp");
  62. if (!g_CloseApp)
  63. {
  64. UnloadLibrary();
  65. return FALSE;
  66. }
  67. g_getDeviceNames = (irc_getDeviceNames)GetProcAddress(g_hdll, "getDeviceNames");
  68. if (!g_getDeviceNames)
  69. {
  70. UnloadLibrary();
  71. return FALSE;
  72. }
  73. g_Connect = (irc_Connect)GetProcAddress(g_hdll, "Connect");
  74. if (!g_Connect)
  75. {
  76. UnloadLibrary();
  77. return FALSE;
  78. }
  79. g_getSignalsName = (irc_getSignalsName)GetProcAddress(g_hdll, "getSignalsName");
  80. if (!g_getSignalsName)
  81. {
  82. UnloadLibrary();
  83. return FALSE;
  84. }
  85. g_DisConnect = (irc_DisConnect)GetProcAddress(g_hdll, "DisConnect");
  86. if (!g_DisConnect)
  87. {
  88. UnloadLibrary();
  89. return FALSE;
  90. }
  91. // µ¼³öÈ«¾Ö±äÁ¿;
  92. g_nIRControl = *(int*)GetProcAddress(g_hdll, "nIRControl");
  93. if (!g_CloseApp)
  94. {
  95. UnloadLibrary();
  96. return FALSE;
  97. }
  98. return TRUE;
  99. }
  100. void UnloadLibrary()
  101. {
  102. if (g_hdll)
  103. {
  104. if (FreeLibrary(g_hdll))
  105. {
  106. g_hdll = NULL;
  107. g_IsAppRunning = NULL;
  108. g_StartIRApp = NULL;
  109. g_CloseApp = NULL;
  110. g_Connect = NULL;
  111. g_getDeviceNames = NULL;
  112. g_getSignalsName = NULL;
  113. g_loadSignalDataSet = NULL;
  114. g_sendSignal = NULL;
  115. g_sendSignals = NULL;
  116. g_sendRepeatsSignal = NULL;
  117. g_DisConnect = NULL;
  118. }
  119. }
  120. }
  121. }