Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение) » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)

gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

rvu: gfilatov2002 пишет: Архив уникодной сборки также обновил с учетом обсуждения работы функции GetWindowText() А FindWindowEx() будете менять под уникод?

gfilatov2002: SergKis пишет: Можно получить этот вариант на посмотрреть ? Отправил ссылку в личку

SergKis: gfilatov2002 Спасибо


SergKis: gfilatov2002 что то не то с GetWindowText() unicode [pre2] /* * MINIGUI - Harbour Win32 GUI library Demo * */ #define _HMG_OUTLOG #include "hmg.ch" REQUEST HB_CODEPAGE_UTF8 REQUEST HB_CODEPAGE_RU1251 REQUEST DBFCDX *-----------------------------------------------------------------------------* FUNCTION Main() *-----------------------------------------------------------------------------* SET CODEPAGE TO UNICODE RddSetDefault("DBFCDX") SET CENTURY ON SET DATE GERMAN SET DELETED ON SET EXCLUSIVE ON SET EPOCH TO 2000 SET AUTOPEN ON SET EXACT ON SET SOFTSEEK ON SET NAVIGATION EXTENDED SET FONT TO "Arial", 11 *-------------------------------- SET OOP ON *-------------------------------- ? "Find Text =", "HandlesHbWin('VLC iptv viewer.', , .T.)" ? HandlesHbWin("VLC iptv viewer.", , .T.) ? ? "Find Class = ", "HandlesHbWin(, 'HMG_FORM_wM3U', .T.)" ? HandlesHbWin(, "HMG_FORM_wM3U", .T.) ? RETURN *-----------------------------------------------------------------------------* STATIC FUNCTION HandlesHbWin( cText, cClass, lLogOut ) *-----------------------------------------------------------------------------* LOCAL i, h, t LOCAL aWnd := EnumWindows() LOCAL aTmp := {} LOCAL aRet := {} IF Empty(cClass) aTmp := aWnd ELSE FOR EACH h IN aWnd IF IsWindowHandle( h ) .and. GetClassName( h ) == cClass AAdd( aTmp, h ) ENDIF NEXT ENDIF IF ! empty(cText) .and. HB_ISCHAR(cText) .and. Len(aTmp) > 0 ? aTmp FOR EACH h IN aTmp ? hb_enumindex(h), h, IsWindowHandle( h ) IF IsWindowHandle( h ) ?? "t =" BEGIN SEQUENCE WITH { |e|break(e) } ?? "->" t := GetWindowText( h ) ?? "<-" END SEQUENCE ?? t IF cText $ t ; AAdd( aRet, h ) ENDIF ENDIF NEXT ELSE aRet := aTmp ENDIF IF ! Empty(lLogOut) FOR i := 1 TO Len(aTmp) IF IsWindowHandle( aTmp[ i ] ) t := GetWindowText(aTmp[ i ]) _LogFile( .T., str(i, 5), aTmp[ i ], GetClassName(aTmp[ i ]), t ) ENDIF NEXT ENDIF RETURN aRet [/pre2] Снимается "Abnormal program termination"

gfilatov2002: SergKis пишет: что то не то Ваш пример у меня отработал нормально. Прошу попробовать снова с самого начала...

SergKis: gfilatov2002 пишет Прошу попробовать снова с самого начала... Так и сделал, не помогло. Убрал GetWndowText(), вывод только класса - работает, на запросе текста валится на строке 32 15008680 GDI+ Hook Window Class Пример [pre2] /* * MINIGUI - Harbour Win32 GUI library Demo * */ #define _HMG_OUTLOG #include "hmg.ch" REQUEST HB_CODEPAGE_UTF8, HB_CODEPAGE_RU1251 REQUEST DBFCDX *-----------------------------------------------------------------------------* FUNCTION Main() *-----------------------------------------------------------------------------* SET CODEPAGE TO UNICODE RddSetDefault("DBFCDX") SET CENTURY ON SET DATE GERMAN SET DELETED ON SET EXCLUSIVE ON SET EPOCH TO 2000 SET AUTOPEN ON SET EXACT ON SET SOFTSEEK ON SET NAVIGATION EXTENDED SET FONT TO "Arial", 11 *-------------------------------- SET OOP ON *-------------------------------- ? "Find Text =", "HandlesHbWin(, , .T.)" ? HandlesHbWin( , , .T.) ? /* ? "Find Class = ", "HandlesHbWin(, 'HMG_FORM_wM3U', .T.)" ? HandlesHbWin(, "HMG_FORM_wM3U", .T.) ? */ ? "Find Text =", "HandlesHbWin('VLC iptv viewer.', , .T.)" ? HandlesHbWin("VLC iptv viewer.", , .T.) ? */ RETURN *-----------------------------------------------------------------------------* STATIC FUNCTION HandlesHbWin( cText, cClass, lLogOut ) *-----------------------------------------------------------------------------* LOCAL i, h, t LOCAL aWnd := EnumWindows() LOCAL aTmp := {} LOCAL aRet := {} IF Empty(cClass) aTmp := aWnd ELSE FOR EACH h IN aWnd IF IsWindowHandle( h ) .and. GetClassName( h ) == cClass AAdd( aTmp, h ) ENDIF NEXT ENDIF IF ! empty(cText) .and. HB_ISCHAR(cText) .and. Len(aTmp) > 0 ? aTmp FOR EACH h IN aTmp ? hb_enumindex(h), h, IsWindowHandle( h ) IF IsWindowHandle( h ) ?? "t =" BEGIN SEQUENCE WITH { |e|break(e) } ?? "->" t := GetWindowText( h ) ?? "<-" END SEQUENCE ?? t IF cText $ t ; AAdd( aRet, h ) ENDIF ENDIF NEXT ELSE aRet := aTmp ENDIF IF ! Empty(lLogOut) FOR i := 1 TO Len(aTmp) IF IsWindowHandle( aTmp[ i ] ) //t := GetWindowText(aTmp[ i ]) _LogFile( .T., str(i, 5), aTmp[ i ], GetClassName(aTmp[ i ]) /*, t*/ ) ENDIF NEXT ENDIF RETURN aRet [/pre2] Log файл (сначала вывод только с классом, потом с текстом) [pre2] Find Text = HandlesHbWin(, , .T.) 1 131138 SynTrackCursorWindowClass 2 131180 tooltips_class32 3 131202 SynTPEnhTFPWndClass 4 131140 SynTPHelperWndClass 5 65922 ForegroundStaging 6 65872 ForegroundStaging 7 65754 tooltips_class32 8 65782 tooltips_class32 9 65776 tooltips_class32 10 65772 tooltips_class32 11 65746 tooltips_class32 12 131336 tooltips_class32 13 65796 tooltips_class32 14 65792 tooltips_class32 15 65950 CiceroUIWndFrame 16 65714 Shell_TrayWnd 17 131338 TaskListThumbnailWnd 18 65794 tooltips_class32 19 65756 NotifyIconOverflowWindow 20 66056 SystemTray_Main 21 66088 ATL:00007FF855FA21F0 22 66114 ATL:00007FF84C89C230 23 66112 PNIHiddenWnd 24 66480 Internet Explorer_Hidden 25 66478 Internet Explorer_Hidden 26 66476 Internet Explorer_Hidden 27 66468 Internet Explorer_Hidden 28 65942 ClassicShell.COwnerWindow 29 65888 CiceroUIWndFrame 30 65886 CiceroUIWndFrame 31 65836 tooltips_class32 32 15008680 GDI+ Hook Window Class 33 590832 ConsoleWindowClass 34 65862 ApplicationManager_DesktopShellWindow 35 4063322 CTouchPadSynchronizer 36 3997828 CTouchPadSynchronizer 37 66442 SideBar_HTMLHostWindow 38 66430 BasicWindow 39 328538 FarHiddenWindowClass 40 525076 WindowsForms10.Window.8.app.0.d3a00f_r6_ad1 41 262970 WindowsForms10.Window.0.app.0.d3a00f_r6_ad1 42 394082 WindowsForms10.tooltips_class32.app.0.d3a00f_r6_ad1 43 328026 ComboLBox 44 394230 ComboLBox 45 131802 .NET-BroadcastEventWindow.4.0.0.0.d3a00f.0 46 328080 GDI+ Hook Window Class 47 131608 WindowsForms10.Window.0.app.0.141b42a_r34_ad1 48 131352 GDI+ Hook Window Class 49 197630 .NET-BroadcastEventWindow.4.0.0.0.141b42a.0 50 459726 ATL:00A9A850 51 66490 GDI+ Hook Window Class 52 66502 VSyncHelper-000001EE4DD3B2A0-235bd58 53 66506 VSyncHelper-000001EE4DD3B240-235c065 54 66508 VSyncHelper-000001EE4DD3B1E0-235c1ac 55 66504 VSyncHelper-000001EE4DD3B180-235c013 56 66360 GadgetHostListener 57 66354 8GadgetPackHelper 58 66350 BasicWindow 59 66346 GDI+ Hook Window Class 60 197044 EVERYTHING_TASKBAR_NOTIFICATION 61 131546 WindowsForms10.Window.0.app.0.14a43c5_r6_ad1 62 131544 .NET-BroadcastEventWindow.4.0.0.0.14a43c5.0 63 66208 HwndWrapper[SmartAudio3.exe;;666cf6d2-fb24-4259-95a1-8873a2d0dd06] 64 66200 HwndWrapper[SmartAudio3.exe;;498f853c-6c9e-4451-92fc-be6461d8dd95] 65 131732 HwndWrapper[SmartAudio3.exe;;ea92a926-afef-45ac-b7bf-165f90465a8d] 66 197240 ATL:00007FF848D17D50 67 131206 SynTPEnhTrayWndClass 68 66106 CTouchPadSynchronizer 69 66104 SynTPEnhWndClass 70 66100 ScrollerooWindowClass 71 66096 WorkerW 72 66048 WorkerW 73 66050 OleDdeWndClass 74 65930 TabletModeCoverWindow 75 66066 WorkerW 76 66068 WorkerW 77 65912 DummyDWMListenerWindow 78 65906 EdgeUiInputTopWndClass 79 65870 OleDdeWndClass 80 65858 WorkerW 81 65854 ClassicStartMenu.CStartHookWindow 82 65844 WorkerW 83 65842 WorkerW 84 65822 WorkerW 85 65820 WorkerW 86 131716 AfxFrameOrView140su 87 197210 WorkerW 88 131710 BluetoothNotificationAreaIconWindowClass 89 262754 QLBCONTROLLER 90 131190 MS_WebcheckMonitor 91 65712 #32770 92 65686 DDEMLEvent 93 65682 DDEMLMom 94 131104 PushNotificationsPowerManagement 95 131106 COMTASKSWINDOWCLASS 96 65620 Dwm 97 131110 CicLoaderWndClass 98 263244 tooltips_class32 99 131652 ESET Client Frame 100 66438 SideBar_HTMLHostWindow 101 66426 BasicWindow 102 66440 SideBar_HTMLHostWindow 103 66428 BasicWindow 104 66466 SideBar_HTMLHostWindow 105 66462 BasicWindow 106 9962252 WorkerW 107 65828 Progman 108 66134 MSCTFIME UI 109 66102 IME 110 131142 IME 111 1507496 MSCTFIME UI 112 65924 IME 113 65814 MSCTFIME UI 114 65716 IME 115 66090 IME 116 15401362 IME 117 328526 MSCTFIME UI 118 459756 IME 119 1311580 MSCTFIME UI 120 65860 IME 121 66456 MSCTFIME UI 122 66436 IME 123 394056 IME 124 525300 MSCTFIME UI 125 459580 IME 126 262562 IME 127 131354 IME 128 197248 IME 129 132062 IME 130 66492 IME 131 66356 IME 132 66352 IME 133 66348 IME 134 196986 IME 135 131734 IME 136 131706 IME 137 66098 IME 138 65856 IME 139 65830 MSCTFIME UI 140 65824 IME 141 66182 IME 142 66178 IME 143 66152 IME 144 65718 IME 145 131102 IME 146 197230 MSCTFIME UI 147 131578 IME 148 66452 MSCTFIME UI 149 66434 IME 150 66454 MSCTFIME UI 151 66432 IME 152 66474 MSCTFIME UI 153 66464 IME 154 65850 MSCTFIME UI 155 65684 IME ARRAY[155] Find Text = HandlesHbWin('VLC iptv viewer.', , .T.) ARRAY[155] 1 131138 .T. t = -> <- '' 2 131180 .T. t = -> <- '' 3 131202 .T. t = -> <- Forcepad driver tray window 4 131140 .T. t = -> <- '' 5 65922 .T. t = -> <- '' 6 65872 .T. t = -> <- '' 7 65754 .T. t = -> <- '' 8 65782 .T. t = -> <- '' 9 65776 .T. t = -> <- '' 10 65772 .T. t = -> <- '' 11 65746 .T. t = -> <- '' 12 131336 .T. t = -> <- '' 13 65796 .T. t = -> <- '' 14 65792 .T. t = -> <- '' 15 65950 .T. t = -> <- CiceroUIWndFrame 16 65714 .T. t = -> <- '' 17 131338 .T. t = -> <- '' 18 65794 .T. t = -> <- '' 19 65756 .T. t = -> <- '' 20 66056 .T. t = -> <- Battery Meter 21 66088 .T. t = -> <- '' 22 66114 .T. t = -> <- Network Flyout 23 66112 .T. t = -> <- '' 24 66480 .T. t = -> <- '' 25 66478 .T. t = -> <- '' 26 66476 .T. t = -> <- '' 27 66468 .T. t = -> <- '' 28 65942 .T. t = -> <- '' 29 65888 .T. t = -> <- CiceroUIWndFrame 30 65886 .T. t = -> <- TF_FloatingLangBar_WndTitle 31 65836 .T. t = -> <- '' 32 15008680 .T. t = -> [/pre2] В последней версии не unicode - все работает

SergKis: PS восстановил пред. версию hmg-21.03-unicode, снятия нет, строка получается в лог такая (с бяками) 32 5244084 GDI+ Hook Window Class Geꆐ䮀;

gfilatov2002: SergKis пишет: не помогло. Убрал GetWndowText(), вывод только класса - работает, на запросе текста валится Проверял работу Вашего примера под Windows 7 и Windows 10 - проблем не было. На всякий случай привожу текущую реализацию функции GetWindowText() [pre2]HB_FUNC( GETWINDOWTEXT ) { #ifdef UNICODE LPSTR pStr; #endif HWND hWnd = ( HWND ) HB_PARNL( 1 ); int iLen = GetWindowTextLength( hWnd ); LPTSTR szText = ( TCHAR * ) hb_xgrab( ( iLen + 1 ) * sizeof( TCHAR ) ); #ifndef UNICODE iLen = GetWindowText( hWnd, szText, iLen + 1 ); hb_retclen( szText, iLen ); #else GetWindowText( hWnd, szText, iLen + 1 ); pStr = WideToAnsi( szText ); hb_retc( pStr ); hb_xfree( pStr ); #endif hb_xfree( szText ); [/pre2]

SergKis: gfilatov2002 пишет На всякий случай привожу текущую реализацию функции GetWindowText() Ф-ии отличаются, у меня вариант в zip такой [pre2] HB_FUNC( GETWINDOWTEXT ) { #ifdef UNICODE LPSTR pStr; #endif HWND hWnd = ( HWND ) HB_PARNL( 1 ); int iLen = GetWindowTextLength( hWnd ); LPTSTR szText = ( TCHAR * ) hb_xgrab( ( iLen + 1 ) * sizeof( TCHAR ) ); #ifndef UNICODE iLen = GetWindowText( hWnd, szText, iLen + 1 ); hb_retclen( szText, iLen ); #else GetWindowText( hWnd, szText, ( iLen + 1 ) * sizeof( TCHAR ) ); pStr = WideToAnsi( szText ); hb_retc( pStr ); hb_xfree( pStr ); #endif hb_xfree( szText ); } [/pre2] сделал правку, но сборка не удалась, много warning-ов и в итоге не собирается пример PS в своей версии unicode строка 32 15008680 GDI+ Hook Window Class выглядит так 37 22086474 GDI+ Hook Window Class G

gfilatov2002: SergKis пишет: сборка не удалась Я уже обновил архив Unicode сборки, адрес прежний

SergKis: gfilatov2002 пишет обновил архив Unicode сборки Работает пример на этой сборке, но смущает строка с бяками (в файле бяки визуально ? в квадратике) 32 86835678 GDI+ Hook Window Class G用眠眎; в нашей сборке кракозябликов нет

gfilatov2002: Dima пишет: если "сломали" работающую функцию FindWindowEx в уникодной версии , то надо бы починить. Поправил работу функции FindWindowEx в уникодной версии Залил Unicode архив с исправлением как 1-й апдейт версии 21.05

rvu: gfilatov2002 пишет: Поправил работу функции FindWindowEx в уникодной версии Залил Unicode архив с исправлением как 1-й апдейт версии 21.05 Большое спасибо!

rvu: Использую HPDFPRINT. А какую кодировку писать для уникода в SET HPDFDOC ENCODING TO? И работает ли это вообще с уникодом?

Andrey: Искал для себя пример, нашёл вылет БЕЗ ПОКАЗА ОКНА ОШИБКИ в примере BASIC\Tooltip\TrackingToolTips Что править не разбирался. Подскажите как можно сделать типа Show Balloon для окна расположенного в Панели задач ? Для трея примеры нашёл, а для Панели задачи нет. Можно ли сделать Show Balloon чтобы располагался в правом верхнем углу рабочего стола на 10-20 секунд ?

gfilatov2002: Andrey пишет: нашёл вылет БЕЗ ПОКАЗА ОКНА ОШИБКИ в примере BASIC\Tooltip\TrackingToolTips Поправил в первом апдейте сборки 21.05 Благодарю за помощь

gfilatov2002: Выложил Update 1 для сборки 21.05 с учетом всех последних исправлений и дополнений по адресу http://hmgextended.com/files/CONTRIB/hmg-21.05-setup.exe Обновил также UNICODE архив для всех заинтересованных лиц

i3t4j6: gfilatov2002 пишет: Выложил майскую ANSI сборку 21.05 с учетом всех последних изменений Нельзя ли предусмотреть возможность переключения на старый добрый вариант вывода информации в ErrorLog file (без анимации) ?

gfilatov2002: i3t4j6 пишет: вариант вывода информации в ErrorLog file (без анимации Просматриваю файл ErrorLog по клавише F3 в Total Commanderе - никакой анимации там нет. Другой вариант - собственный обработчик ошибок, образцы есть в примерах

i3t4j6: Program Error -вывод ошибки на экран - обыкновенный текст на белом фоне, а не желтое на красном и на весь экран !



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