forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Чёрное окошко перед запуском проги на B3D (http://forum.boolean.name/showthread.php?t=7923)

ABTOMAT 04.03.2009 17:11

Чёрное окошко перед запуском проги на B3D
 
Как отключить сабж? Нет, мне сильно не мешает, но просто интересно) Кто-нибудь сиё ковырял?

ARA 04.03.2009 18:34

Ответ: Чёрное окошко перед запуском проги на B3D
 
я в замешательстве - сна лишил!

Randomize 04.03.2009 19:17

Ответ: Чёрное окошко перед запуском проги на B3D
 
Я гдето давно в интернете видел dll для этих целей, но где не помню.
Как вариант использовать Splash Screen поверх окна.
Но тут опятьже надо писать Dll для отлова сообщения от окна B3D.
В принципе этот вопрос может решится только через WinAPI.
Будет время я поковыряюсь и напишу об этом.

IGR 04.03.2009 19:30

Ответ: Чёрное окошко перед запуском проги на B3D
 
в Gile[s] помойму есть Splash Screen, пока прога грузится, если неошибаюсь !!

impersonalis 04.03.2009 19:38

Ответ: Чёрное окошко перед запуском проги на B3D
 
вроде jimon предлагал решение пару лет назад

-=Jack=- 04.03.2009 19:38

Ответ: Чёрное окошко перед запуском проги на B3D
 
Меня тоже когдато интересовал такой вопрос. Окошко появляется ещё до того, как начинает исполнятся код программы. Тоесть убрать его вызовом какой-либо функции из программы - не возможно. Единственный вариант - поковыряться в компиляторе блица и:
1. Убрать из стилей флаг WS_VISIBLE
2. Если такого флага нет, найти вызов ShowWindow и убрать его.

Randomize 04.03.2009 20:00

Ответ: Чёрное окошко перед запуском проги на B3D
 
Алгоритм следующий:
1)запуск приложения (приложения лаунчера)
2)запуск B3D приложения
3)Поиск хендла окна B3D
3)скрытие окна
4)Ожидание сообщений
5)посылка сообщения от B3D приложения
6)Показываем окно

По первому пункту:
Можно написать приложение например на Delphi, которое будет запускать приложение B3D. Чтобы при запуске не получился слишком большой Delay(пауза) выводим незамысловатый Splash screen с чемнибуть забавным.

По третьему пункту:
Надо организовать чёткую взаимосвязь между приложениями.
Я предлагаю на хендлах и SendMessage

По пятому пункту:
Как только приложение B3D осуществляет инициализацию и передаёт управление коду первой строчкой шлём сообщение лаунчеру чтоб он показал окно и благополучно отработав ушол за кулисы.

В процессе родилась идея медленного появления B3D окна "из альфы" . Но на счёт FullScreen oстались вопросы...


Как найду свободное время, перейду к практике.


2IGR:
Незнаю не юзал Gile[s]

2-=Jack=-:
Я в соё время пробывал, B3D окно нормально подвергается всем манипуляциям, тоесть одного ShowWindow будет достаточно.

tormoz 04.03.2009 20:09

Ответ: Чёрное окошко перед запуском проги на B3D
 
Максус убирал это окно еще года 3 назад
через винапи

ABTOMAT 04.03.2009 20:51

Ответ: Чёрное окошко перед запуском проги на B3D
 
Цитата:

Максус убирал это окно еще года 3 назад
через винапи
Тормоз, на каком форуме он писал про это? (Тут я не нашёл ничего) Есть ли шанс наткнуться на сию инфу на Blitzpp?

-=Jack=- 04.03.2009 21:06

Ответ: Чёрное окошко перед запуском проги на B3D
 
Цитата:

Сообщение от Randomize (Сообщение 99543)
Я в соё время пробывал, B3D окно нормально подвергается всем манипуляциям, тоесть одного ShowWindow будет достаточно.

Ну таким манипуляциям поддаётся любое окно, а вот модифицировать компилятор(или Runtime.dll) так, чтобы оно не показывало это окно - это уже сложнее...

Насчёт третего шага: может и WinExec('file.exe',SW_HIDE) прокатит...

ABTOMAT 04.03.2009 21:09

Ответ: Чёрное окошко перед запуском проги на B3D
 
Просто не прьот делать ещё exeшник на сяхе в дополнение к б3дшному

-=Jack=- 04.03.2009 21:31

Ответ: Чёрное окошко перед запуском проги на B3D
 
Вот и я об этом. Надо калечить компилятор ;)

ABTOMAT 04.03.2009 21:40

Ответ: Чёрное окошко перед запуском проги на B3D
 
Я так понял до старта программы вызывается Graphics 400,300 чтобы команды типа Print Write Cls (т.е. обычные безиковые) работали без чего-то ещё дополнительного
Может в runtime.dll эта фигня прописана?
З.Ы. Нашёл в гугле такую херню: http://www.blitzforum.de/showcase/165/
Щас посмотрю шо она умеет. Кто-нить шпрехает, что на ней написано?
Вот кстати ещё: http://www.blitzforum.de/forum/viewtopic.php?t=24932
Только нихт ферштайн :(

NitE 04.03.2009 22:37

Ответ: Чёрное окошко перед запуском проги на B3D
 
короче говоря черь там о том что -
1. проблема в рантайм.длл
2. патч убирает это окошко из всех программ которые работают не в дебаг моде
3. программа изменяет exe файл
4. если после патча надо чтоб в какойто проге опять было окно надо:

Цитата:

Userlib

Код:

.lib "user32.dll"
ShowWindow( hwnd%, show% )

после инициализаций графики

Код:

ShowWindow( SystemProperty( "AppHWND" ), True )

сам лично не разобрался как она работает )))

ABTOMAT 04.03.2009 22:42

Ответ: Чёрное окошко перед запуском проги на B3D
 
Я тоже... хз куда её пихать

NitE 04.03.2009 23:09

Ответ: Чёрное окошко перед запуском проги на B3D
 
нда понял как работает - кидаем exe или runtime.dll на окошко, и оно патчицо, но окошко пропадает совсем.
сначала кинул exe, окошко пропало но прога работала (проверил movemouse'ом), кинул dll и всё - ниодна прога ни в одном режиме не компилится (тоест компилится но окна проги невидно)... так что видно для старых версий...

а я се блиц запакал :-D

-=Jack=- 04.03.2009 23:41

Ответ: Чёрное окошко перед запуском проги на B3D
 
Просто после этого нужно ещё и показать окно, после того, как оно было скрыто. Пока вы разбирались с этой прогой, я сделал аналог. Эффект тот же - окошка нет и не появляется. Нужно просто писать ShowWindow в начале. Хотя есть у меня одна идейка...

Randomize 05.03.2009 00:16

Ответ: Чёрное окошко перед запуском проги на B3D
 
Народ!
Вы не по тому пути пошли.
Прошу ознакомится.
Decls :
PHP код:

.lib "user32.dll" 
ShowWindowhwnd%, show% ) 

Код программы:
PHP код:

ShowWindowSystemProperty"AppHWND" ), False )
Delay(3000)
ShowWindowSystemProperty"AppHWND" ), True )
Print 
"Hello!"
WaitKey() 

Какой мы имеем результат?
Окно появляется(мы успеваем его заметить), пропадает, ждём 3000 мс и оно появляется.
Отсюда видно что в B3D управление коду программиста передаётся не сразу. Такчто варианта кроме лаунчера не вижу.

Но растраиватся не стоит.
Буду капать дальше и глубже.

-=Jack=- 05.03.2009 00:28

Ответ: Чёрное окошко перед запуском проги на B3D
 
>Окно появляется(мы успеваем его заметить)
А для того, чтоб не успавали и есть та прога ;)

Randomize 05.03.2009 00:59

Ответ: Чёрное окошко перед запуском проги на B3D
 
Вложений: 1
Почти доделал!
Оказалось что создатели блица сделали своему окну отдельный тип
Blitz Runtime Class
По нему можно выцепить любое Blitz3D окно и захайдить его.
Немного подождать и показать!

:wallbash: Чёрт! никак не послать SendMessage блицом
Чёрт!

Чёто не пойму как сообщить лаунчеру что инициализация состоялась.
И ещё одна проблема...
Не поспевю схайдить... :(((
При создании блиц окна оно имеет странный класс походу

Выкладываю пока что есть.
Может кто поможет.

Программа Project2.exe запускает Game.exe потом
ищет окно по классу(с любым текстом) и прячет его на две секунды.


Код:

Файл:
Вложение 5486


ViNT 05.03.2009 01:38

Ответ: Чёрное окошко перед запуском проги на B3D
 
Ну, по-моему, написать программу-загрузчик куда проще, чем ковырять компилятор...

Randomize 05.03.2009 01:46

Ответ: Чёрное окошко перед запуском проги на B3D
 
Ну да...
Но чёт я запарился.
Создатели блица отожгли.
Мне надо быть реактивным чтоб понять.
Класс Blitz Runtime Window получает окно только когда оно на стадии Runtime. Когда передалось управление коду.
Но до этого какаой оно имеет класс остаётся загадкой.
Выход один: Запуск приложения под калпаком и полный анализ.
Займусь.

ViNT 05.03.2009 01:53

Ответ: Чёрное окошко перед запуском проги на B3D
 
Можно WinSight'ом поковырять, или попробовать поймать окно функцией GetForegroundWindow.

Randomize 05.03.2009 03:13

Ответ: Чёрное окошко перед запуском проги на B3D
 
Ксо!
Blitz3D`шное окно не принимает никаких сообщений во время инициализации! Оно игнорит любые обращения.
Единственное что с ним можно сделать это прикрыть грудью(SplashScreen) или сесть за дизассемблер и крафтить патч.

* Бугога бугога я сажусь за IDA

Мда... Не силён я в крякинге

ЧЁРТ! Я в экзешнике вот что нашол:
PHP код:

_begin
_leave
_DATAh
_LIBS
_MAIN
_bbRestore
_bbLoadLibs
_begin
_leave
_fgraphics3d
_fcreatecamera
_fcreatecube
_fcreatelight
_fpositionentity
_fturnentity
_frenderworld
_fflight
_fkeyhit
_fend
_DATA
_LIBS 

Смотрите внимательно сорец проги:

PHP код:

Graphics3D 800,600,32,2

cam
=CreateCamera()
cube=CreateCube()
CreateLight()
PositionEntity cam,0,0,-10

Repeat
    
    TurnEntity cube
,5,0,5
RenderWorld
Flip
Until KeyHit
(1)
End 

Интересно что это такое... :mda:
Ладно буду дальше ковырять :moil:

HolyDel 05.03.2009 03:25

Ответ: Чёрное окошко перед запуском проги на B3D
 
далось вам это окошко...

Randomize 05.03.2009 03:34

Ответ: Чёрное окошко перед запуском проги на B3D
 
Цитата:

Сообщение от HolyDel (Сообщение 99598)
далось вам это окошко...

Да мне это мне самому просто интересно :)

jimon 05.03.2009 09:27

Ответ: Чёрное окошко перед запуском проги на B3D
 
Randomize
программы на blitz3d в некоторой степени можно декомпилировать обратно в код b3d

NitE 05.03.2009 09:32

Ответ: Чёрное окошко перед запуском проги на B3D
 
так эт самое - когда прогу запускаешь она создает окошко и потом применяет твой настройки графики или оно удаляется и появляется другое ?

-=Jack=- 05.03.2009 09:39

Ответ: Чёрное окошко перед запуском проги на B3D
 
>так эт самое - когда прогу запускаешь она создает окошко и потом применяет твой настройки графики или оно удаляется и появляется другое ?
Нет. То же самое, только меняется размер.

Randomize, да всё ж ясно. Я сам за идой вчера посидел, нашел создание окна, изменил ему стиль(убрал WS_VISIBLE). Как я понимаю, та прога делает то же самое. Теперь это окно - невидимое. Но прикол в том, что и после начала выполнения кода блица оно не появляется. Вот тут то и нужно использовать ShowWindow (или посылку WM_SHOW) для окна. И не нужно смотреть его класс. Для определения окна есть функция SystemProperty("AppHWND").

ABTOMAT 05.03.2009 12:51

Ответ: Чёрное окошко перед запуском проги на B3D
 
Вложений: 2
У меня по ходу получилось :) Всё намного проще
Сначала в коде программы показываем наше окошко при помощи WinAPI. Это можно сделать как писалось выше (прописать в свой decls), но у меня тут уже готовый есть (см. аттач).
0. decls из аттача ставим на Блиц
1. Итак, после объявления граф. режима прописываем показывание окошка юзеру:
Цитата:

api_ShowWindow ( SystemProperty( "AppHWND" ), 1 )
2. Компилим в ехешник не в дебаг моде.
3. Запускаем прогу с немецкого форум (в аттаче поклал тож)
4. На неё перетаскиваем ехешник, она патчит

Пока ещё не всё проверил, но похоже патченный ехешник работает норм. :super: У меня версия блица 1.98.
УПД: Перепроверил на рпгшке, всё работает как следует! Кстати, если используется полноэкранный режим, то юзать api_ShowWindow необязательно: окна-то нет ;)

Спасибо гансам за убитое окошко. ;)

З.Ы. Вроде можно так же пропатчить runtime.dll и тогда все ехешники будут так компилиться. Только чё-то лениво мне везде прописывать показ окна...
Но для конечной версии проги подходит отлично!

З.З.Ы. Для Ксорса же вообще идеально - ничего не надо прописывать для показа окна... Объясняется просто: Ксорс создаёт собственное окно, и данный фикс на него не воздействует ;)

Alex_Noc 05.03.2009 13:18

Ответ: Чёрное окошко перед запуском проги на B3D
 
РАБОТАЕТ 100% пудоф :)

-=Jack=- 05.03.2009 17:20

Ответ: Чёрное окошко перед запуском проги на B3D
 
Цитата:

Сообщение от ABTOMAT (Сообщение 99609)
режим, то юзать api_ShowWindow необязательно: окна-то нет ;)

Проверял?
Цитата:

Сообщение от ABTOMAT (Сообщение 99609)
З.Ы. Вроде можно так же пропатчить runtime.dll и тогда все ехешники будут так компилиться. Только чё-то лениво мне везде прописывать показ окна...
Но для конечной версии проги подходит отлично!

Ну подписывать ШовВиндов то нужно будет только при компиляции в ехешник ;)

Randomize 05.03.2009 17:41

Ответ: Чёрное окошко перед запуском проги на B3D
 
2ABTOMAT:
Круто! Работает на все 100%.
Мда оказывается что без патчера у меня ничего бы не вышло :(
Управлять Blitz3D окном во время загрузки невозможно...
Фрицы жгут!

Я бы их патчер локализировал да лень.
Надо всё в архив и выложеть везде где только можно, чтоб народ не парился с этим.



Мда... Всётаки создаиели блица молодцы!
Их приложение даже не смотрит с какими параметрами его запускают.
Пофигисты блин! Но их тоже можно понять, в 3D игре это незачем.
Не нужно там окно.


impersonalis 05.03.2009 18:06

Ответ: Чёрное окошко перед запуском проги на B3D
 
Цитата:

Сообщение от Randomize (Сообщение 99597)
Интересно что это такое... :mda:
Ладно буду дальше ковырять :moil:

http://forum.boolean.name/showthread.php?t=4213

Цитата:

Идея, собственно, старая - многие независмо друг от друга обнаружили интересные незашифрованные "вксуности" внутри ехе-ов.
(Jimon подтвердит - как мы развлекались).

Randomize 05.03.2009 18:13

Ответ: Чёрное окошко перед запуском проги на B3D
 
2 impersonalis:
Сурово! Я о подобном даж не думал.

ABTOMAT 05.03.2009 22:31

Ответ: Чёрное окошко перед запуском проги на B3D
 
Цитата:

режим, то юзать api_ShowWindow необязательно: окна-то нет
да, проверял
Цитата:

Ну подписывать ШовВиндов то нужно будет только при компиляции в ехешник
теоретически да, но не проверял

Baisangur 11.03.2009 18:19

Ответ: Чёрное окошко перед запуском проги на B3D
 
В итоге как понял АПИ применять не надо? Достаточно кинуть ехе-шник на патчер и все.

ABTOMAT 11.03.2009 21:12

Ответ: Чёрное окошко перед запуском проги на B3D
 
http://forum.boolean.name/showpost.p...9&postcount=30

надо применять.
вынес в 1-й пост ссылку на 30-й, а то я смотрю решение в топике найти могут не все

Baisangur 13.03.2009 19:35

Ответ: Чёрное окошко перед запуском проги на B3D
 
А ну да все правильно, просто я юзал прогу с немецкого форума для приложения работающего в режиме фулл скрин. =)


Часовой пояс GMT +4, время: 15:15.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot