• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

проблема с Com в Dll при вызове из .net

  • Автор темы two_2003
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

two_2003

При выполнении данного кода выскакивает исключение EOleSysError.
Может мы подключаем dll неправильно, а может в dll что то не так(отдельно dll подключали в delphi и тестили - все работает)

код в dll
library ole;
uses
SysUtils,
ComObj,
OleCtrls,
ActiveX;
{$R *.res}
function GetPoint(xy: Integer): integer; stdcall;
var
...
begin
....
try
CoInitialize(nil);
except
result:=-5; exit; end;

try
Appl:=GetActiveOleObject('AMap3.Application');
except
on EOleCtrlError do
begin result:=- 61; exit; end;
on EOleException do
begin result:=-63; exit; end;
on EOleRegistrationError do
begin result:=-64; exit; end;
on EOleSysError do
begin result:=-65; exit; end;
on EOleError do
begin result:=-62; exit; end;
....
try
CoUnInitialize;
except result:=-23; exit; end;
end;

exports
GetPoint;

begin
end.


код в веб-сервисе
...
public class MapPoint
{
[DllImport("C:/Inetpub/wwwroot/WebSite_L-ju/App_Data/ole.dll")]
public static extern int GetPoint(int xy);
}
...
int x = MapPoint.GetPoint(1);
...
 
T

two_2003

пробовали не помогает
а на счет того что объект зарегестрирован да он зарегистрирован, сам лично в реестре копался
 
B

Barmutik

А активный объект AMap3.Application точно есть в тот момент когда Вы к нему обращаетесь ?
 
T

two_2003

Да есть, и он даже зарегистрирован в системе,
Вот проверка
on EOleRegistrationError do
begin
result:=-64;
exit;
end;
Эта ошибка не выскакивает.
Еще предложения....

А по поводу вопроса <<что это за AMap3? к тому что - может он чегото хитрого требует, еще каких длл-ек или ... а в системе их нет или как вариант не находит>> скажу следующее, для этого объекта все есть, при подключении dll в delphi все же работает, а в .net не хочет, вот не знаю даж что и делать.
 
B

Barmutik

Вообще-то .. я не то имел ввиду ..

EOleSysError - вывалиться при вызове GetActiveOleObject если на текущий момент нет запущенного(активного) объекта AMap3.Application ...

А какое дополнительное сообщение приходит в EOleSysError ?
 
T

two_2003

никакого сообщения не выводит, если убрать on EOleSysError do то ничего не происходит далее код

Ошибка даже происходит если использовать Appl:=CreateOleObject('AMap3.Application');
 
B

Barmutik

Т.е. из обычного Дельфийского или СиШарпного приложения вызывается нормально .. а из веб сервиса нет?

И хотелось бы всё таки увидеть что в сообщении в ошибке....
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!