Форум » Для флейма » Abeelabs закрылась » Ответить

Abeelabs закрылась

Dima: http://www.abeelabs.com/index.php На шару можно стянуть Pagescript 32 .

Ответов - 20

Dima: Есть одна пичалька. Что первый что последний Pagescript32 виснет на PSINIT под Windows 8. Винда правда 64 бита. Совместимость копали и до лампочки. [pre2] METHOD TPageScript:Init() ::bWaterMark := NIL // Codeblock for Watermark function ::nWaterMark := AWM_NONE // Indicates if the WaterMark is to be printed foreground or background ::lFromDialog := .f. // Indicates if printer selected from printer dialog ::lClipper := .f. // Indicates if calls to TextOut and TextBox should be compatible with PageScript for Clipper ::nUnit := APS_MILL // Default unit is MILLIMETERS ::aPrinters := {} // List of available printers ::nError := PSE_NOERROR // Indicates an error condition, such as no printer available ::aDocInfo := {0, "", "", APS_PORTRAIT, 1, APS_COURIER} // Print job info array ::hDll := DllLoad("PScript.dll") // Handle of the .DLL // Вероятно виснет тут if ::hDll == nil//0 ::nError := PSE_DLLNOTLOADED // DLL not loaded error else ::nError := DllCall(::hDll, DLL_STDCALL, "PSInit") // No error, set the coordinate system to TOP/LEFT (Default) if ::nError == PSE_NOERROR DllCall(::hDll, DLL_STDCALL, "PSSetCoorSystem", APS_TOPLEFT) endif endif Return Self [/pre2] PS Под XP и 7 работает нормально

Dima: У кого то есть установленный Windows 8.....? Нужно собрать вот этот пример из Harbour harbour\contrib\hbxpp\tests\dllcall.prg Pscript.dll выложил тут https://cloud.mail.ru/public/2c6ace865776/PSCRIPT.dll или его можно взять в поставке Pagescript32 тут _http://www.abeelabs.com/downloads/PS32.zip Собрать пример и сказать результат , виснет пример или нет. Спасибо.

Dima: Dima пишет: Что первый что последний Pagescript32 виснет на PSINIT под Windows 8 Проехали. Вопрос снят.


Dima: Вопрос. Если из Harbour программы формировать отчет через PS32 и затем выводить его на предпросмотр средствами PS32 , все работает вот только основное окно программы замораживается пока не закроешь окно с Preview PS32. Не работаю даже потоки. Хотел в потоке закрывать окно Preview PS32 в случае не активности пользователя в течении некоторого времени , но облом вышел....... Что то могу еще предпринять ? Переход на GUI не предлагать

SergKis: Dima пишет: Переход на GUI не предлагать Если это под win, то попробуй AutoIt3 (несколько функций): WinExists ( "title" [, "text" ] ) - Проверяет, существует ли указанное окно WinClose ( "title" [, "text" ] ) - Закрывает указанное окно WinKill ( "title" [, "text" ] ) - Принудительно закрывает окно ProcessClose ( "process" ) - Завершает процесс с указанным именем. "process" - Имя или PID процесса для завершения. и т.д. есть русская справка, примеры, скрипт собирается в exe

Dima: SergKis Такой фокус я делал из своей тестовой отдельной программы и да это работает. Хотел сделать средствами той же программы которая и запускает Preview PS32 , думал может есть еще какой вариант. Получается Preview PS32 это как дочернее окно или типа того и пока не закроешь его , доступа к основному окну нет. Само окошко Preview PS32 - GUI но не в этом дело. PS Да все под WIN , GtWVT + Harbour , на Clipper не пишу больше.

SergKis: Dima пишет:Получается Preview PS32 это как дочернее окно или типа того и пока не закроешь его , доступа к основному окну нет. т.е. окно без RunWait ? и замораживается, тогда перед окном Preview PS32, запустить Run Такой фокус я делал из своей... считай это имитацией потока и не заморачивайся.

Dima: SergKis Попробую описать кратенько. Пускаю просто на принтер по умолчанию [pre2] If PSInit() == 0 PSSetUnit(APS_MILL) PSBeginDoc(,,APS_LANDSCAPE) Pstextbox(10,20,15,30,"TEST",APS_LEFT,APS_ARIAL,APS_PLAIN,6,APS_BLACK,,1) PSEndDoc() Endif ? "Hello" [/pre2] В этом случае все что после PSEndDoc() работает и дальше без проблем а "принтер" в свою очередь печатает все в фоновом режиме. А теперь режим просмотра (Preview) , все тоже самое , почти... [pre2] If PSInit() == 0 PSSetDevice(DEV_PREVIEW) * тут 3 варианта может быть *#define DEV_PRINTER 1 // Printer этот вариант по умолчанию *#define DEV_PREVIEW 2 // Printer with Print preview *#define DEV_PDFFILE 3 // Print to a PDF File PSSetUnit(APS_MILL) PSBeginDoc(,,APS_LANDSCAPE) Pstextbox(10,20,15,30,"TEST",APS_LEFT,APS_ARIAL,APS_PLAIN,6,APS_BLACK,,1) PSEndDoc() Endif ? "Hello" [/pre2] Все что после PSEndDoc() работать не будет пока не закроем окошко с Preview. Был вариант с PSSetDevice(DEV_PDFFILE) но к сожалению он криво вписывает картинки в нужные координаты.

SergKis: Dima я примерно, так и понял. Если Idle функции не срабатывют (подвесить до PSEndDoc()), управление захвачено на себя previewом, то вместо Idle запусти run без ожидания, и пусть он отследит, что надо и завершит окно preview, если не работают (мышй, клавиатурой)

Dima: SergKis Мне была поставлена задача. Завершать программу если юзер был не активен в течение 1 часа. Ну типа кнопки не нажимал , базы не открывал или отчеты какие не строил. Завершать коректно с закрытием баз и тд и тп. Это я решил. Но вот с этим окном сделать ни чего пока не могу средствами самой проги так как она как бы заморожена потому что висит окно Preview PS32. Извне снять могу это окно без проблем.

SergKis: Dima пишет:Извне снять могу это окно без проблем так и снимай внешней программой, запущенной до preview пусть она следит, что не работают, подошло время, пусть даст сообщение на время, не ответили, убирает окно и убирается сама

SergKis: P.S. я бы повесил отдельно прогу и пусть бы она мониторила ситуацию, работают или нет, не возлагая лишние функции на главную программу. в прогу монитор - алгоритм снятия preview окна и подачу сообщения главной программе, что не работают - пора закругляться

Dima: SergKis Спасибо. Думаю как лучше сделать. Честно говоря для этой цели не хотелось вешать отдельную прогу , но все еще думаю.

SergKis: Dima пишет:не хотелось вешать отдельную совершенно напрасно, садишь в tray, она общается с клиентом. Решить, как запускать ? я запускаю основную из проги монитор. у меня есть монитор на сервере - может следить до 20 пар http+letodb, реально уже 5, и др. бяки на него повесил ...

Dima: Разобрался. Этот Preview замораживает основное окно программы а так же то что было добавлено через Hb_IdleAdd() а вот отдельные потоки продолжают работать. Так что я знаю как теперь подойти к вопросу.

nick_mi: Dima пишет: http://www.abeelabs.com/index.php На шару можно стянуть Pagescript 32 . Стянуть то я стянул, но документации там нет. А справка на сайте долго ли продержится исходя из Dima пишет: Abeelabs закрылась Да и ситуации бывают разные, в том числе отсутствие интернета

Dima: nick_mi Справка ранее входила в комплект. Есть у меня эта справка и могу налить куда то.

Dima: Справка https://cloud.mail.ru/public/2yaSnFYj5xHU/Guides.rar

Dima: nick_mi пишет: . А справка на сайте долго ли продержится исходя из ты был прав ))) Web site closed.

Dima: Мануал Online http://pagescript.info/www.abeelabs.com/guides/ps32XB/index.html



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