On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник


Пост N: 12
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 04.06.07 21:07. Заголовок: Как запретить закрытие терминального окна "крестом"?


Речь идет об терминальном окне с прогой на xHarbour.
Извините за ламерский вопрос. Возможно ли это? Если да, то как?
Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 48 , стр: 1 2 3 All [только новые]


администратор




Пост N: 708
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.06.07 21:48. Заголовок: Re:


Где то была похожая тема , поищи !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 13
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 07.06.07 20:56. Заголовок: Re:


Не нашёл я ни хрена, чё-та... Сорри...

Спасибо: 0 
ПрофильЦитата Ответить
модератор




Пост N: 493
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 08.06.07 11:19. Заголовок: Рабочий пример




// How to disable Close for console Window

Function Main()
Local hWnd

SetConsoleTitle( "This is my console Title" )
hWnd:= FindWindow( "This is my console Title" )

CLS
? " The close button is Enable "
inkey( 0 )

DeleteCloseButton( hWnd)
? " The close button is Disable"
inkey(0)

Alert("Closing")

#PRAGMA BEGINDUMP

#include "hbapi.h"
#include "Windows.h"

HB_FUNC( SETCONSOLETITLE )
{
hb_retl( SetConsoleTitle( hb_parc( 1 ) ) ) ;
}
HB_FUNC( FINDWINDOW )
{
hb_retnl( (LONG)FindWindow( NULL, hb_parc( 1 ) ) ) ;
}

HB_FUNC( DELETECLOSEBUTTON )
{
DeleteMenu(GetSystemMenu( (HWND)hb_parnl( 1 ),
FALSE), SC_CLOSE,
MF_BYCOMMAND ) ;
DrawMenuBar( (HWND)hb_parnl( 1 ) );
}
#PRAGMA ENDDUMP



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 14
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 08.06.07 20:33. Заголовок: Re:


Спасибо огромное!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 15
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 10.06.07 12:29. Заголовок: Re:


Пришлось добавить такой цикл:

WHILE ( hWnd:= FindWindow( "Window Title" ) ) == 0
END // WHILE

Почему-то иногда hWnd оказывается == 0 и, естественно DeleteCloseButton( hWnd ) ничего не делает.

И еще: русские имена окон не прокатывают.

Спасибо еще раз!


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2878
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 17:35. Заголовок: Может пригодится ком..


Может пригодится кому

DeleteCloseButton(GetConsoleWindow())


ЗЫ
Mingw

 
#PRAGMA BEGINDUMP

#include "hbapi.h"
#include "Windows.h"

HB_FUNC( DELETECLOSEBUTTON )
{
DeleteMenu(GetSystemMenu( (HWND)hb_parnl( 1 ),
FALSE), SC_CLOSE,
MF_BYCOMMAND ) ;
DrawMenuBar( (HWND)hb_parnl( 1 ) );
}

WINBASEAPI
HWND
APIENTRY
GetConsoleWindow(
VOID
);

HB_FUNC( GETCONSOLEWINDOW )
{
hb_retnl( (LONG)GetConsoleWindow( ) ) ;
}
#PRAGMA ENDDUMP


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 290
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 25.03.13 08:38. Заголовок: Мне отвечали по данн..


Мне отвечали по данному вопросу...

1. Для терминала WIN

 
SetConsoleTitle(Alltrim(cTxt))
hW := FindWindow(Alltrim(cTxt))
DeleteCloseButton(hW)

#PRAGMA BEGINDUMP
#include "hbapi.h"
#include "windows.h"

HB_FUNC(SETCONSOLETITLE)
{
hb_retl( SetConsoleTitle( hb_parc(1) ) );
}

HB_FUNC(FINDWINDOW)
{
hb_retnl( (LONG) FindWindow(NULL,hb_parc(1)) );
}

HB_FUNC(DELETECLOSEBUTTON)
{
DeleteMenu( GetSystemMenu((HWND) hb_parnl(1), FALSE), SC_CLOSE, MF_BYCOMMAND ) ;
DrawMenuBar( (HWND) hb_parnl(1) ) ;
}

#PRAGMA ENDDUMP



Для WVT
 
ANNOUNCE HB_GTSYS
REQUEST HB_GT_WVT
REQUEST HB_GT_WVT_DEFAULT

HB_gtInfo( HB_GTI_CLOSABLE, .F. ) // Блокирую крестик


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2796
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.03.13 14:44. Заголовок: AndreyZh пишет: HB_..


AndreyZh пишет:

 цитата:
HB_gtInfo( HB_GTI_CLOSABLE, .F. )



Я смотрю, в Harbour gtwin тоже реализована эта функция. Так что велосипед можно не изобретать.

2010-03-05 11:11 UTC+0100 Viktor Szakats (harbour syenar.net)
...
* src/rtl/gtwin/gtwin.c
% Simplified the way close button status is retrieved (based
on code posted Saulius Zrelskis)
+ Added code to disable 'close' menu also. This is using
undocumented Windows API call, so by default the logic
is disabled, and can be enabled with HB_GTWIN_USE_UNDOC_WINAPI
macro. (Thanks to Saulius Zrelskis for this API tip)
(NOTE: All 'close' controls are controlled by HB_GTI_CLOSABLE)

т.е. чтобы открыть эту функцию, надо собрать харбор с макросом HB_GTWIN_USE_UNDOC_WINAPI


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2886
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.03.13 14:58. Заголовок: Pasha пишет: т.е. ч..


Pasha пишет:

 цитата:
т.е. чтобы открыть эту функцию, надо собрать харбор с макросом HB_GTWIN_USE_UNDOC_WINAPI


а без пересборки ни как ? ;)
пересобрать под MinGW это шибко долго будет , вчера уже поигрался.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2797
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.03.13 15:00. Заголовок: Dima пишет: а без п..


Dima пишет:

 цитата:
а без пересборки ни как ? ;)



Все-таки пересобирать не надо. Хотя в Changelog HB_GTWIN_USE_UNDOC_WINAPI упоминается, в сырцах его уже нет. Можно просто использовать HB_GTI_CLOSABLE

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2887
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.03.13 15:07. Заголовок: Pasha Да работает о..


Pasha
Да работает однако.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 99
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 12.08.13 12:03. Заголовок: Дабы не плодить темы..


Дабы не плодить темы, спрошу здесь: с удалением "крестика" из текущего окна понятно. Но пытливые умы юзеров не находят лучшего применения, чем напакостить программеру. Нету крестика - вызываем "диспетчер задач" и убиваем приложение. Как с этим бороться ?

Есть ли в Harbour какой-нить обработчик наподобие onExit, onClose и тп - чтобы при закрытии приложения корректно выйти из базы ?

Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 892
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 12.08.13 13:30. Заголовок: Sergy Посмотри прим..


Sergy
Посмотри пример для терминала gtwvt: harbour\tests\wvtext.prg

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 103
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 12.08.13 13:43. Заголовок: PSP пишет: Посмотри..


PSP пишет:

 цитата:
Посмотри пример для терминала gtwvt: harbour\tests\wvtext.prg


Спасибо, посмотрю.

Не могли-бы Вы еще объяснить - что есть по сути "терминал" в понятиях Harbour ?

На Clipper моя программа работает в двух основных режимах: локально на машине с удаленной БД (в офисной сети) и на удаленном сервере, у которого БД локальна (через интернет для иногородних клиентов) через Windows Terminal (удаленный доступ).

Нигде специальных танцев с бубнами и "терминальных" библиотек не нужно было... Может я чего-то нужное упускаю ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3365
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.08.13 13:51. Заголовок: Sergy пишет: Нигде ..


Sergy пишет:

 цитата:
Нигде специальных танцев с бубнами и "терминальных" библиотек не нужно было


А сейчас понадобились ? Должно и так работать

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 893
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 12.08.13 14:12. Заголовок: Sergy При сборке с ..


Sergy
При сборке с помощью hbmk2 можно указать, какой терминал будет использован


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 104
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 12.08.13 15:15. Заголовок: PSP пишет: При сбор..


PSP пишет:

 цитата:
При сборке с помощью hbmk2 можно указать, какой терминал будет использован



Немного непонятно - нужен ли мне вообще он или нет. Из консольного окна в GUI переходить планов пока нет. Какие удобства/преимущества и тп дают терминальные драйверы для программы ?

PS: используется Win2003 как файловый сервер, на нем-же установлен виндовый RDP сервер, т.е. программы, запущенные на нем, видят базу локально. Клиенты - Win XP SP3.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 105
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 12.08.13 15:17. Заголовок: Dima пишет: А сейча..


Dima пишет:

 цитата:
А сейчас понадобились ? Должно и так работать



Да просто несколько раз встречался с этим в описаниях Harbour, да и вот отсылка к нему (по поводу возможности убить процесс через диспетчер задач) возникла.

Может мне это очень нужно, но я не знаю, зачем...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2933
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.08.13 15:22. Заголовок: Не могли-бы Вы еще о..



 цитата:
Не могли-бы Вы еще объяснить - что есть по сути "терминал" в понятиях Harbour ?



Тоже самое, что в клиппере. Это заменяемая библиотека, которая реализует функции ввода/вывода.
Просто в клиппер был сделан только под ms dos, терминалов в нем было мало, и альтернативными терминалами мало кто пользовался.
Харбор же используется под множество платформ, и под каждую есть как правило несколько терминалов.
Что касается windows, это прежде всего gtwin, который работает через консольные средства windows.
Примерно 10 лет назад Peter Rees из Новой Зеландии сделал еще один терминал для windows - gtwvt, которые реализован через стандартные графические средства windows, не использует wincon, и поддерживает 100%-ю функциональность харбора. С ним можно использовать различные шрифты, размеры, есть дополнительная библиотека, позволяющая использовать gui-контролы, что-то вроде псевдо-gui
С тех пор можно говорить, что у харбора есть 2 стандартных терминала для windows: gtwin и gtwvt.
Чтобы их подключить, достаточно опции скрипта для hbmk2. Можно их оба прилинковать к программе, и использовать при необходимости тот или другой.


Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник


Пост N: 894
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 12.08.13 15:41. Заголовок: Sergy пишет: Из кон..


Sergy пишет:

 цитата:
Из консольного окна в GUI переходить планов пока нет.


Дык, как раз "консольное окно" посредством терминала и создается.
По-умолчанию используется gtwin. Мне больше нравится gtwvt, он как-то гибче что ли...
Посмотрите тот пример, что я выше указал. Скомпилируйте его. Сразу станет интересней )))

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 107
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 12.08.13 15:51. Заголовок: Pasha, PSP - спасибо..


Pasha, PSP - спасибо, понял.

Запущу проект, потом обязательно займусь "красивостями" второго терминала.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 108
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 12.08.13 16:38. Заголовок: PSP пишет: Посмотри..


PSP пишет:

 цитата:
Посмотри пример для терминала gtwvt: harbour\tests\wvtext.prg



Посмотрел. Офигенно.

НО: диспетчер задач срубает программу без единого звука.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 248
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 30.08.13 17:30. Заголовок: Вопрос. Вроде все о..


Вопрос.

Вроде все отладил, но кое-где шаловливые руки юзеров "срубают" задачу несмотря на выключенный крестик. Я вижу это по увеличивающемуся значению переменной err_count.
Прихожу, спрашиваю - что да как: в ответ невнятное блеяние что "все зависло, ничего не работало, я вызвал диспетчер задач, снял ее, запустил и снова все заработало".

Как-бы грамотно запротоколировать процесс ? Что они там делают - то-ли винду вырубают не выйдя из программы, то-ли диспетчером срубают, то-ли терминальный сеанс завершают, то-ли вообще обходят какие-то программыне ограничения, введенные для младших сотрудников - х.е.з., но хотелось-бы разобраться...

EXIT PROCEDURE в таком случае точно не срабатывает. Очень помог-бы снимок экрана или хотя-бы стек вызовов процедур на крайний случай...

С какой стороны лучше подступиться и возможно ли это на Harbour ?

Как первый вариант: маленькая программа-обертка(запускатель) для главной программы. Если выход из главной программы произошел без установки кода завершения, допустим, 55 - значит программа завершилась неудачно и нужно сохранить снимок экрана для разбора полетов. Может есть способ элегантнее? И я сомневаюсь, что он отработает в случае завершения работы винды или сеанса.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3495
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.08.13 17:55. Заголовок: Снимок экрана наверн..


Снимок экрана наверное не поможет а вот стек процедур да.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 29
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 30.08.13 17:55. Заголовок: Можно крестик не зап..


Можно крестик не запрещать, использовать под своим контролем
что-то типа(см.ниже)
WN_Notifier - можно вызывать и не при нажатии крестика, только задать nEvent(эмуляция)

Коды возврата (0 или 1) нужно проверять, они разные для hb20 и hb30, h32
также разные коды для nEvent
..
HB_GTINFO( HB_GTI_CLOSABLE , .t. )
HB_GtInfo( HB_GTI_NOTIFIERBLOCK, {|nEvent, ...| WN_Notifier( nEvent, ... ) } )
....
FUNCTION WN_Notifier( nEvent, ... )
Static n_GTE_CLOSE:=0// Номер вхождения
..
DO CASE
CASE nEvent == HB_GTE_SETFOCUS

CASE nEvent == HB_GTE_CLOSE //HB_K_CLOSE
n_GTE_CLOSE++

if n_GTE_CLOSE<=1// условие завершения - необязательное - можно требовать два нажатия на крестик и т.д.
// завершение работы - здесь записать в лог, закрыть таблицы и прочее
return 0
else
n_GTE_CLOSE :=0
return 1
endif

CASE nEvent == HB_GTE_RESIZED
// обработка изменения размера окна
OTHERWISE
ENDCASE
RETURN 0



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 249
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 30.08.13 17:57. Заголовок: petr707 пишет: HB_G..


petr707 пишет:

 цитата:
HB_GTINFO( HB_GTI_CLOSABLE , .t. )



Это ведь с GTWIN не будет работать ? Нужно под GTWIN. Пока проблем от GTWVT для меня больше, чем преимуществ от его красивостей.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 30
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 30.08.13 18:08. Заголовок: завершение сеанса - предыдущий сеанс некорректно завершен


Можно сделать как в самом Windows
При запуске следующего сеанса проверяется неудаленный семафор
предыдущего сеанса, определяется что завершение было нерегламентным,
поднимаются логи и прочее.
Если сеанс свалился по ошибке из ERRORSYS - должен быть файл этого лога.
Если по внутренней ошибке - есть hb_out.log
Можно завести служебную таблицу статистики сеансов
регистировать в нее все сеансы - дата, время -входа, user, комп и дата+время завершения и тд.
и смтреть сколько свалов в каком месте.
Можно - по настройке - включить лог выполнения функций программы.
Можете даже писать это не свои логи, а в журнал приложений Windows(на любителя)


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5690
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.05.16 17:31. Заголовок: petr707 пишет: HB_G..


petr707 пишет:

 цитата:
HB_GtInfo( HB_GTI_NOTIFIERBLOCK, {|nEvent, ...| WN_Notifier( nEvent, ... ) } )


Как поймать событие в функции WN_Notifier что окно свернули ?

PS
Терминал Gtwvt/GtWvg

Проехали , придумал как.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 186
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 13.04.26 07:44. Заголовок: Добрый день, удалени..


Добрый день, удаление возможности закрыть "крестиком" работает в WIN10, перешли на WN11 и эта возможность пропала.
#PRAGMA BEGINDUMP
# include "Hbapi.h"
# include "Windows.h"
# include "Hbapiitm.h"
# include "Shlobj.h"
# include "tlhelp32.h"

// 㤠«¥-¨¥ ¢®§¬®¦-®á⨠§ ªàëâì ªà¥á⨪®¬
HB_FUNC( SETCONSOLETITLE )
{
hb_retl( SetConsoleTitle( hb_parc( 1 ) ) ) ;
}

HB_FUNC( FINDWINDOW )
{
hb_retnl( (LONG)FindWindow( NULL, hb_parc( 1 ) ) ) ;
}

HB_FUNC( DELETECLOSEBUTTON )
{
DeleteMenu(GetSystemMenu( (HWND)hb_parnl( 1 ), FALSE), SC_CLOSE, MF_BYCOMMAND ) ;
DrawMenuBar( (HWND)hb_parnl( 1 ) ) ;
}
что нужно подправить? проект на xHarbour 1.2.3 Intl. (SimpLex) (Build 20201212)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8273
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.04.26 08:26. Заголовок: Oskar_AAA Возможно ..


Oskar_AAA
Возможно там надо юзать установку HB_GTI_CLOSABLE
hbgtinfo.ch
#define HB_GTI_CLOSABLE 50 /* toggles ability to close window (supported by: GTWVT) */

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 187
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 13.04.26 09:57. Заголовок: Dima, спасибо. Но по..


Dima, спасибо. Но подскажи где это проставить?
hbgtinfo.ch в этот CH прописать #define HB_GTI_CLOSABLE 50 /* toggles ability to close window (supported by: GTWVT) */

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 188
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 13.04.26 10:05. Заголовок: вот CH файл: /* * $..


вот CH файл:
/*
* $Id: hbgtinfo.ch 10013 2014-08-11 12:23:09Z lculik $
*/

/*
* Harbour Project source code:
* Header file for the GTINFO API
*
* Copyright 2004 Mauricio Abre <maurifull@datafull.com>
* www - http://www.xharbour.org
* www - http://www.harbour-project.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour. If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way. To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/

#ifndef HB_GTINFO_CH_
#define HB_GTINFO_CH_

#define HB_GTI_ISGRAPHIC 0 /* 1 if GT has graphic support / pixel oriented */
#define HB_GTI_SCREENWIDTH 1 /* Get/set width of application window in pixels */
#define HB_GTI_SCREENHEIGHT 2 /* Get/set height of application window in pixels */
#define HB_GTI_SCREENDEPTH 3 /* Amount of bits used for colors in the application */
#define HB_GTI_FONTSIZE 4 /* Get/set height of application font in pixels */
#define HB_GTI_FONTWIDTH 5 /* Get/set width of application font characters */
#define HB_GTI_DESKTOPWIDTH 6 /* Get width of desktop in pixels */
#define HB_GTI_DESKTOPHEIGHT 7 /* Get height of desktop in pixels */
#define HB_GTI_DESKTOPDEPTH 8 /* Amount of bits used for colors in system */
#define HB_GTI_COMPATBUFFER 9 /* Use DOS CGA/EGA/VGA character/attribute buffer in SAVE/REST SCREEN */
#define HB_GTI_KBDSHIFTS 10 /* Keyboard shift/ctrl/alt, caps/num/scroll & winkeys state */
#define HB_GTI_KBDSPECIAL 11 /* This will get/set the status of the top row
shift state handling. Enable to correct a
documented keyboard handling bug under Win9x.
Enable if the caps-lock key affects the top
row keys. (Alternate language keys are not
handled properly by this temporary fix.
Default is disabled. */
#define HB_GTI_KBDALT 12 /* This will get/set the status of the alt-numpad
key handling.
Default is Enabled. */
#define HB_GTI_ISSCREENPOS 13 /* Is full screen cursor positioning supported by GT driver? */
#define HB_GTI_FULLSCREEN HB_GTI_ISSCREENPOS /* Compatibility. Do not use it. */
#define HB_GTI_KBDSUPPORT 14 /* Is it keyboard input supported? */
#define HB_GTI_CLIPBOARDDATA 15 /* Get/Set clipboard */
#define HB_GTI_CLIPBOARDPAST 16 /* Paste clipboard data into keyboard buffer */
#define HB_GTI_CURSORBLINKRATE 19 /* Get/Set cursor blinking rate in milliseconds */
#define HB_GTI_DESKTOPROWS 20 /* Get Size of desktop in character rows */
#define HB_GTI_DESKTOPCOLS 21 /* Get Size of desktop in character cols */
#define HB_GTI_FONTWEIGHT 22 /* Get/set the weight of the font used in application */
#define HB_GTI_FONTQUALITY 23 /* Get/set quality of font rendering in the appl. */
#define HB_GTI_FONTNAME 24 /* Set-only font name */
#define HB_GTI_CODEPAGE 25 /* codepage */
#define HB_GTI_WINTITLE 26 /* title */
#define HB_GTI_ICONFILE 27 /* icon file */
#define HB_GTI_ICONRES 28 /* icon resource */
#define HB_GTI_MOUSESTATUS 29 /* mouse enabled = 1 mouse disabled = 0 */

#define HB_GTI_INPUTFD 30 /* Get Standard input stream of application/GT */
#define HB_GTI_OUTPUTFD 31 /* Get Standard output stream of application/GT */
#define HB_GTI_ERRORFD 32 /* Get Standard error stream of application/GT */

#define HB_GTI_ESCDELAY 33 /* Get/Set escape key delay */

/* these 2 are used for MaxCol(?) and MaxRow(?) */
#define HB_GTI_VIEWMAXHEIGHT 34 /* Maximum viewable height:for current mode */
#define HB_GTI_VIEWMAXWIDTH 35 /* Maximum viewable width:either win or full scrn */

#define HB_GTI_VIEWPORTHEIGHT 36 /* Current viewport height:for current mode */
#define HB_GTI_VIEWPORTWIDTH 37 /* Current viewport width:either win or full scrn */

#define HB_GTI_STDOUTCON 38 /* redirect STDOUT to console */
#define HB_GTI_STDERRCON 39 /* redirect STDERR to console */

#define HB_GTI_ISCTWIN 40 /* is CTWIN supported? */
#define HB_GTI_ISMULTIWIN 41 /* is multi window supported? */
#define HB_GTI_GETWIN 42 /* get current window handle or screen settings */
#define HB_GTI_SETWIN 43 /* restore window or screen settings */
#define HB_GTI_NEWWIN 44 /* create new window */

#define HB_GTI_ADDKEYMAP 45 /* add key escape sequences */
#define HB_GTI_DELKEYMAP 46 /* del key escape sequences */

#define HB_GTI_ISUNICODE 47 /* is Unicode input/output enabled? */

#define HB_GTI_SELECTCOPY 48 /* toggles screen content selection and copy to clipboard (supported by: GTWVT) */
#define HB_GTI_RESIZABLE 49 /* toggles ability to resize window (supported by: GTWVT) */
#define HB_GTI_CLOSABLE 50 /* toggles ability to close window (supported by: GTWVT) */

/* Additional constants to enhance GT */
#define HB_GTI_NOTIFIERBLOCK 51 /* This optional codeblock gets called whenever certain events occur. See HB_GTE_* */
#define HB_GTI_SCREENSIZE 52 /* Get/Set height/width of application window in pixels */
#define HB_GTI_PALETTE 53 /* Get/Set console colors 1 - 16 given an array of 16 elements containing RGB colors */

#define HB_GTI_RESIZEMODE 54 /* Get/Set console resize mode : HB_GTI_RESIZEMODE_FONT | HB_GTI_RESIZEMODE_ROWS */
#define HB_GTI_SETPOS_XY 55 /* Get/Set current top-left position coordinates of the window by pixels */
#define HB_GTI_SETPOS_ROWCOL 56 /* Set current top-left position coordinates of the window by row/cols */

#define HB_GTI_BOXCP 57 /* Codepage used for box drawing */

#define HB_GTI_CARGO 58 /* Storage of any user defined value */
#define HB_GTI_FONTSEL 59 /* X11 style font selecting */

#define HB_GTI_INKEYFILTER 60 /* Get/Set inkey keycodes filter */
#define HB_GTI_INKEYREAD 61 /* Get/Set inkey read block */

#define HB_GTI_ALTENTER 62 /* Toggles Alt+Enter as full screen switch (supported by: GTWVT) */
#define HB_GTI_ISFULLSCREEN 63 /* Is the GT windows using the full physical display? (supported by: GTWIN, GTWVT) */
#define HB_GTI_ONLINE 64 /* Is terminal connected? */
#define HB_GTI_VERSION 65 /* Get terminal version string */

#define HB_GTI_MAXIMIZED 66 /* Get/Set Window's Maximized status (supported by: GTWVT) */

#define HB_GTI_FONTATTRIBUTE 67 /* Get/set font attribute */

#define HB_GTI_UNITRANS 68 /* set translation table for UNICODE characters */

/* Font weights */
#define HB_GTI_FONTW_THIN 1
#define HB_GTI_FONTW_NORMAL 2
#define HB_GTI_FONTW_BOLD 3

/* Font qualities */
#define HB_GTI_FONTQ_DRAFT 1
#define HB_GTI_FONTQ_NORMAL 2
#define HB_GTI_FONTQ_HIGH 3

/* Font attributes */
#define HB_GTI_FONTA_FIXMETRIC 1
#define HB_GTI_FONTA_CLRBKG 2
#define HB_GTI_FONTA_DRAWBOX 4
#define HB_GTI_FONTA_CTRLCHARS 8

/* Keyboard shifts states */
#define HB_GTI_KBD_SHIFT 1
#define HB_GTI_KBD_CTRL 2
#define HB_GTI_KBD_ALT 4
#define HB_GTI_KBD_LWIN 8
#define HB_GTI_KBD_RWIN 16
#define HB_GTI_KBD_MENU 32
#define HB_GTI_KBD_INSERT 128
#define HB_GTI_KBD_SCROLOCK 256
#define HB_GTI_KBD_NUMLOCK 512
#define HB_GTI_KBD_CAPSLOCK 1024
#define HB_GTI_KBD_INALTSEQ 2048
#define HB_GTI_KBD_ACCENT1 4096
#define HB_GTI_KBD_ACCENT2 8192
#define HB_GTI_KBD_ACCENT3 16384
#define HB_GTI_KBD_ACCENT4 32768

#define HB_GTI_KBD_LSHIFT 65536
#define HB_GTI_KBD_RSHIFT 131072
#define HB_GTI_KBD_LCTRL 262144
#define HB_GTI_KBD_RCTRL 524288
#define HB_GTI_KBD_LALT 1048576
#define HB_GTI_KBD_RALT 2097572

/* Harbour GT callback events - WORK IN PROGRESS */
#define HB_GTE_ACTIVATE 1
#define HB_GTE_SETFOCUS 2
#define HB_GTE_KILLFOCUS 3
#define HB_GTE_CLOSE 4
#define HB_GTE_RESIZED 5

/* Harbour GT Reszing mode constants */
#define HB_GTI_RESIZEMODE_FONT 0 /* Default */
#define HB_GTI_RESIZEMODE_ROWS 1

/* Compatibility #defines.
These codes are deprecated, _don't use them_. Please upgrade to the above versions.
For developers: Don't add any more new codes to this section. */

#ifndef HB_GT_NO_XHB

#define GTI_ISGRAPHIC HB_GTI_ISGRAPHIC
#define GTI_SCREENWIDTH HB_GTI_SCREENWIDTH
#define GTI_SCREENHEIGHT HB_GTI_SCREENHEIGHT
#define GTI_SCREENDEPTH HB_GTI_SCREENDEPTH
#define GTI_FONTSIZE HB_GTI_FONTSIZE
#define GTI_FONTWIDTH HB_GTI_FONTWIDTH
#define GTI_DESKTOPWIDTH HB_GTI_DESKTOPWIDTH
#define GTI_DESKTOPHEIGHT HB_GTI_DESKTOPHEIGHT
#define GTI_DESKTOPDEPTH HB_GTI_DESKTOPDEPTH
#define GTI_COMPATBUFFER HB_GTI_COMPATBUFFER
#define GTI_KBDSHIFTS HB_GTI_KBDSHIFTS
#define GTI_KBDSPECIAL HB_GTI_KBDSPECIAL
#define GTI_KBDALT HB_GTI_KBDALT
#define GTI_FULLSCREEN HB_GTI_FULLSCREEN
#define GTI_KBDSUPPORT HB_GTI_KBDSUPPORT
#define GTI_CLIPBOARDDATA HB_GTI_CLIPBOARDDATA
#define GTI_CLIPBOARDPAST HB_GTI_CLIPBOARDPAST
#define GTI_CURSORBLINKRATE HB_GTI_CURSORBLINKRATE
#define GTI_DESKTOPROWS HB_GTI_DESKTOPROWS
#define GTI_DESKTOPCOLS HB_GTI_DESKTOPCOLS
#define GTI_FONTWEIGHT HB_GTI_FONTWEIGHT
#define GTI_FONTQUALITY HB_GTI_FONTQUALITY
#define GTI_FONTNAME HB_GTI_FONTNAME
#define GTI_CODEPAGE HB_GTI_CODEPAGE
#define GTI_WINTITLE HB_GTI_WINTITLE
#define GTI_ICONFILE HB_GTI_ICONFILE
#define GTI_ICONRES HB_GTI_ICONRES
#define GTI_MOUSESTATUS HB_GTI_MOUSESTATUS
#define GTI_INPUTFD HB_GTI_INPUTFD
#define GTI_OUTPUTFD HB_GTI_OUTPUTFD
#define GTI_ERRORFD HB_GTI_ERRORFD
#define GTI_ESCDELAY HB_GTI_ESCDELAY
#define GTI_VIEWMAXHEIGHT HB_GTI_VIEWMAXHEIGHT
#define GTI_VIEWMAXWIDTH HB_GTI_VIEWMAXWIDTH
#define GTI_VIEWPORTHEIGHT HB_GTI_VIEWPORTHEIGHT
#define GTI_VIEWPORTWIDTH HB_GTI_VIEWPORTWIDTH
#define GTI_STDOUTCON HB_GTI_STDOUTCON
#define GTI_STDERRCON HB_GTI_STDERRCON
#define GTI_ISCTWIN HB_GTI_ISCTWIN
#define GTI_ISMULTIWIN HB_GTI_ISMULTIWIN
#define GTI_GETWIN HB_GTI_GETWIN
#define GTI_SETWIN HB_GTI_SETWIN
#define GTI_NEWWIN HB_GTI_NEWWIN
#define GTI_ADDKEYMAP HB_GTI_ADDKEYMAP
#define GTI_DELKEYMAP HB_GTI_DELKEYMAP
#define GTI_ISUNICODE HB_GTI_ISUNICODE

/* Font weights */
#define GTI_FONTW_THIN HB_GTI_FONTW_THIN
#define GTI_FONTW_NORMAL HB_GTI_FONTW_NORMAL
#define GTI_FONTW_BOLD HB_GTI_FONTW_BOLD

/* Font sizes */
#define GTI_FONTQ_DRAFT HB_GTI_FONTQ_DRAFT
#define GTI_FONTQ_NORMAL HB_GTI_FONTQ_NORMAL
#define GTI_FONTQ_HIGH HB_GTI_FONTQ_HIGH

/* Keyboard shifts states */
#define GTI_KBD_SHIFT HB_GTI_KBD_SHIFT
#define GTI_KBD_CTRL HB_GTI_KBD_CTRL
#define GTI_KBD_ALT HB_GTI_KBD_ALT
#define GTI_KBD_LWIN HB_GTI_KBD_LWIN
#define GTI_KBD_RWIN HB_GTI_KBD_RWIN
#define GTI_KBD_MENU HB_GTI_KBD_MENU
#define GTI_KBD_INSERT HB_GTI_KBD_INSERT
#define GTI_KBD_SCROLOCK HB_GTI_KBD_SCROLOCK
#define GTI_KBD_NUMLOCK HB_GTI_KBD_NUMLOCK
#define GTI_KBD_CAPSLOCK HB_GTI_KBD_CAPSLOCK
#define GTI_KBD_INALTSEQ HB_GTI_KBD_INALTSEQ
#define GTI_KBD_ACCENT1 HB_GTI_KBD_ACCENT1
#define GTI_KBD_ACCENT2 HB_GTI_KBD_ACCENT2
#define GTI_KBD_ACCENT3 HB_GTI_KBD_ACCENT3
#define GTI_KBD_ACCENT4 HB_GTI_KBD_ACCENT4
#endif

#endif /* HB_GTINFO_CH_ */

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8274
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.04.26 12:31. Заголовок: Oskar_AAA пишет: hb..


Oskar_AAA пишет:

 цитата:
hbgtinfo.ch в этот CH прописать #define HB_GTI_CLOSABLE 50


это там и так есть во всяком случае в xHarbour 1.2.3 (то что у меня)
а в проге попробуй
hb_GtInfo( HB_GTI_CLOSABLE, .T. )

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 189
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 13.04.26 12:41. Заголовок: SetConsoleTitle(CTit..


SetConsoleTitle(CTitle)
hWnd:=FindWindow(CTitle)
DeleteCloseButton(hWnd)
hb_GtInfo(HB_GTI_CLOSABLE, .T. )
не помогло....

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8275
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.04.26 12:46. Заголовок: Oskar_AAA пишет: De..


Oskar_AAA пишет:

 цитата:
DeleteCloseButton(hWnd)


наверное это не надо
поиграйся в общем

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8276
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.04.26 12:47. Заголовок: Oskar_AAA пишет: hW..


Oskar_AAA пишет:

 цитата:
hWnd:=FindWindow(CTitle)


hWnd точно не пустое ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8277
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.04.26 12:59. Заголовок: ИИ пишет :sm12: В..


ИИ пишет
 
В xHarbour (и Harbour) функция hb_gtInfo(HB_GTI_CLOSABLE, .F.) используется
для отключения кнопки закрытия ([X]) в графических оконных драйверах,
таких как GTWVT или GTWVG. Однако в Windows 11 поведение этого параметра зависит
от используемого терминала и режима работы приложения



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8278
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.04.26 13:39. Заголовок: ИИ пишет... пробуй ..


ИИ пишет...
пробуй
 
#define SC_CLOSE 61536 // 0xF060
#define MF_BYCOMMAND 0

// 1. Получаем дескриптор системного меню текущего окна
// Предположим, hWnd — это хендл вашего окна
hMenu := DllCall( "user32.dll", 32, "GetSystemMenu", hWnd, .F. )

// 2. Удаляем пункт "Закрыть"
DllCall( "user32.dll", 32, "DeleteMenu", hMenu, SC_CLOSE, MF_BYCOMMAND )

// 3. Обновляем строку меню окна для применения изменений
DllCall( "user32.dll", 32, "DrawMenuBar", hWnd )


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 190
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 13.04.26 14:17. Заголовок: Вопрос снят. Через н..


Вопрос снят. Через настройки окна приложения выбрать консоль запуска Windows10

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8279
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.04.26 17:47. Заголовок: Oskar_AAA Что то ты..


Oskar_AAA
Что то ты быстро сдался
Держи пример.
В Harbour работает , должно и в Xharbor
Терминал обычный не WVT
 
#define SC_CLOSE 61536 // 0xF060
#define MF_BYCOMMAND 0

Hwnd:=GETFOREGROUNDWINDOW() // или по своему вычисляй Hwnd
hMenu := DllCall( "user32.dll", 32, "GetSystemMenu", hWnd, .F. )

DllCall( "user32.dll", 32, "DeleteMenu", hMenu, SC_CLOSE, MF_BYCOMMAND )
DllCall( "user32.dll", 32, "DrawMenuBar", hWnd )



wait "Check [x] ;)"


#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
#include <shlobj.h>
#define VM_CLOSE 16

HB_FUNC( GETFOREGROUNDWINDOW )
{
hb_retnl( (LONG) GetForegroundWindow() );
}

#pragma ENDDUMP



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 191
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 13.04.26 19:57. Заголовок: Dima, добрый вечер. ..


Dima, добрый вечер. Консоль WIN10 - вернула привычный стиль окна программы с возможностью изменить размер шрифта.
Вашей подсказкой воспользуюсь завтра....
Спасибо и обязательно сообщу результат. Офис переходит в административном порядке на WIN11. Я и отдельные пользователи привыкли к WIN7 /10. У себя сделали настройки "под/как WIN10"....

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8280
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.04.26 21:09. Заголовок: Oskar_AAA товарищ ч..


Oskar_AAA
товарищ чекнул на 11 винде , все норм и без предварительных ласок настроек , работает

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 192
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 14.04.26 06:02. Заголовок: Доброе утро, DIMA hW..


Доброе утро, DIMA
hWnd точно не пустое ? - возвращает 0

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 193
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 14.04.26 06:04. Заголовок: Oskar_AAA товарищ че..


Oskar_AAA
товарищ чекнул на 11 винде , все норм и без предварительных ласок настроек , работает
- мы сделали настройками консоль запуска программы как в Win10. С деактивацией "закрытие крестиком" работа продолжается. буду делать и под WIN10 и WIN11

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 194
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 14.04.26 06:10. Заголовок: ИИ прислал совет:har..


ИИ прислал совет:harbour
PROCEDURE Main()
LOCAL hWnd
LOCAL cTitle := "MyAppTitle"

// 1. Устанавливаем уникальный заголовок, чтобы FindWindow не ошибся
SetConsoleTitle( cTitle )

// Небольшая пауза, чтобы Windows успела обновить заголовок окна
hb_idleSleep( 0.1 )

// 2. Ищем дескриптор окна по заголовку
hWnd := FindWindow( cTitle )

IF hWnd != 0
// 3. Отключаем кнопку закрытия
DeleteCloseButton( hWnd )
ENDIF

// ... остальной код программы ...
RETURN
Проставил hb_idleSleep( 0.1 ) - крестик деактивирован

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 195
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 14.04.26 07:20. Заголовок: Вот еще от ИИ совет:..


Вот еще от ИИ совет:
harbour
// После того как получили hWnd через FindWindow:
IF hWnd != 0
DeleteCloseButton( hWnd ) // Крестик (уже работает)
DisableMaximize( hWnd ) // Кнопка развертывания станет серой
DisableMinimize( hWnd ) // Кнопка сворачивания станет серой
ENDIF

проверил на xharobour + WIN 11 работает

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 196
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 14.04.26 07:24. Заголовок: c // Запретить измен..


c
// Запретить изменение размера окна (растягивание мышкой)
HB_FUNC( FIXWINDOWSIZE )
{
HWND hWnd = (HWND) hb_parnl(1);
LONG lStyle = GetWindowLong(hWnd, GWL_STYLE);

// Убираем стиль "толстой рамки" (THICKFRAME) и кнопку развертывания (MAXIMIZEBOX)
// Обычно их отключают парой, чтобы окно стало фиксированным
SetWindowLong(hWnd, GWL_STYLE, lStyle & ~(WS_THICKFRAME | WS_MAXIMIZEBOX));

DrawMenuBar(hWnd);
}
Используйте код с осторожностью.
Как применить это в основном коде:
harbour
IF hWnd != 0
DeleteCloseButton( hWnd ) // Отключаем крестик
FixWindowSize( hWnd ) // Запрещаем растягивание и кнопку "Развернуть"
ENDIF

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8281
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.04.26 16:38. Заголовок: Oskar_AAA пишет: //..


Oskar_AAA пишет:

 цитата:
// 2. Ищем дескриптор окна по заголовку
hWnd := FindWindow( cTitle )


Видимо так быстрее будет
Harbour
Hwnd:=hb_gtInfo( HB_GTI_WINHANDLE )

XHarbour
Hwnd:=hb_gtInfo( HB_GTI_GETWIN )

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 48 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 18
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет