Форум » [x]Harbour » GetActiveObject » Ответить

GetActiveObject

Dima: Только у меня падает если нет ни одного Excel объекта ? GetActiveObject( "Excel.Application" ) http://shot.qip.ru/00GjNR-6BtVUomDo/ а вот так все норм win_oleGetActiveObject( "Excel.Application" )

Ответов - 14

Haz: Dima пишет: Только у меня падает Как тебе сказать чтоб не обидеть у меня не падает FUNC main() ? GetActiveObject( "Excel.Application" ) ; wait return NIL

Dima: Это без Минигуи собиралось ? Я так собирал c:\hb32\bin\hbmk2 t -lxhb -lhbwin

Haz: Dima пишет: Это без Минигуи собиралось собиралось батником из поставки минигуи call c:\Minigui\batch\compile.bat Test /C %2 %3 %4 %5 %6 %7 %8 %9


Dima: ясно значит минигуи прицепился а там свой похоже GetActiveObject

Dima: Игорь а вот так можешь собрать ? C:\MiniGUI\Harbour\bin\hbmk2 test -lxhb -lhbwin

Haz: Dima пишет: а вот так можешь собрать так валится Error TOleAuto/-1 0x800401e3: TOLEAUTO:GETACTIVEOBJECT Called from THROW(0) Called from TOLEAUTO:GETACTIVEOBJECT(0) Called from GETACTIVEOBJECT(0)

Dima: Понял. Спасибо , значит я не одинок ;) Причем если хоть какой то документ Excel открыт то не упадет а если нет ни одного то падает.

Haz: собирается еще так но тоже падает C:\MiniGUI\Harbour\bin\hbmk2 test -lhbole падает и с минигуи , у меня во время теста ёксель висел открытый ))) значит не одинок ))

Dima: Интересно ;) Почему ж тогда не упало при сборке батником из поставки Минигуи... Чую у тебя был загружен Excel в ходе эксперимента , потому как я тоже только что собрал с помощью этого батника и прога все равно упала , но уже с ошибкой Минигуи ;) Haz пишет: падает и с минигуи , у меня во время теста ёксель висел открытый ))) Пока я писал ты уже свою месагу исправил )))

Haz: Dima пишет: Чую у тебя был загружен Exce правильно чуешь , была таблица в памяти - падает и с минигуи , у меня во время теста ёксель висел открытый )))

Dima: Получается Баг и эту функцию как добавили в 2011 так с тех пор ни кто и не фиксил , видимо ни кто этот баг не ловил

Haz: Dima пишет: видимо ни кто этот баг не ловил там стоит принудительное сообщение об ошибке , это спецом сделано IF Empty( ::__hObj := __oleGetActiveObject( cClass ) ) RETURN Throw( s_oleError() ) ENDIF

Dima: Haz пишет: там стоит принудительное сообщение об ошибке , это спецом сделано Жесть однако и не правильно. Значит бум юзать win_oleGetActiveObject , там все красиво и вернет NIL PS Это не баг конечно это не разумная фича.

Dima: Можно сделать обёртку и юзать [pre2] func _GetActiveObject() Local oExcel BEGIN SEQUENCE WITH {|e| Break( e )} oExcel:=GetActiveObject("Excel.Application") oExcel:DisplayAlerts:=.f. End SEQUENCE Return oExcel [/pre2]



полная версия страницы