Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 28.03.2007, 14:44   #1
sergeych
AnyKey`щик
 
Регистрация: 05.03.2007
Сообщений: 10
Написано 0 полезных сообщений
(для 0 пользователей)
резидентная программа или как?

Привет всем!
Вопрос не по теме, но вы тут парни продвинутые, думаю кто-нибуть поможет.
Смотрите, есть допустим стрелялка на блитзе, управление прицелом и выстрелом мышкой. Запускается эта стрелялка из другой программы на бейсике, которая запускается раньше и задает координаты выстрела, перехватывает управление мышью и имитируется выстрел в окне стрелялки. Вопрос: как сделать так, чтоб активным все время оставалось окно стрелялки, а запускающая программа продолжала задавать координаты, т.е. генерила их резиденто?
О как загнул! Мысли есть?
(Offline)
 
Ответить с цитированием
Старый 28.03.2007, 15:03   #2
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: резидентная программа или как?

Мысли есть - создать поток (Thread) и из него передавать данные в Блиц.
(Offline)
 
Ответить с цитированием
Старый 28.03.2007, 16:23   #3
sergeych
AnyKey`щик
 
Регистрация: 05.03.2007
Сообщений: 10
Написано 0 полезных сообщений
(для 0 пользователей)
Re: резидентная программа или как?

А можно подробнее, а то я с потоками еще ничего не делал. Наводящий пример, ссылочку принципа работы.
(Offline)
 
Ответить с цитированием
Старый 29.03.2007, 19:47   #4
Chrono Syndrome
 
Сообщений: n/a
Re: резидентная программа или как?

Мысли есть?
Ну лично я считаю, что обмен данными между приложениями удобнее всего проводить через сокеты. Многие не согласны.
 
Ответить с цитированием
Старый 30.03.2007, 01:37   #5
jimon
 
Сообщений: n/a
Re: резидентная программа или как?

Chrono Syndrome
я тоже не согласен
 
Ответить с цитированием
Старый 30.03.2007, 02:34   #6
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: резидентная программа или как?

если сверх сложный анализ не нужен, да и в целом может иногда может понадобиться для работы между окнами и не только - S0M - Sign 0f Misery.
Из извращённых вариантов (т.к. адекватные уже перечислены) могу предложить DirectPlay (или подобное) по 127.0.0.1; работу через общий файл или блок памяти...
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.03.2007, 11:27   #7
sergeych
AnyKey`щик
 
Регистрация: 05.03.2007
Сообщений: 10
Написано 0 полезных сообщений
(для 0 пользователей)
Re: резидентная программа или как?

Спасибо конечно вам, хотя все чего-то предлагают метод передачи данных. А он задан в условии - перехват мышки и симуляция нажатия ее кнопки. А задача в том, как из 1-го приложения на бейсике запустить приложение 2 на блитзе и не ждать его завершения, а сразу продолжать генерить координаты. Вторая задача - как запустить окно2 блитза в нужном месте экрана и без "шапки" где пишется название окна.
Вот теперь помогайте
(Offline)
 
Ответить с цитированием
Старый 30.03.2007, 13:16   #8
Chrono Syndrome
 
Сообщений: n/a
Re: резидентная программа или как?

А задача в том, как из 1-го приложения на бейсике запустить приложение 2 на блитзе и не ждать его завершения, а сразу продолжать генерить координаты.
Ну, примерно так (PB4.0):
SInfo.STARTUPINFO : PInfo.PROCESS_INFORMATION
CreateProcess_(@"Путь_до_запускаемого_приложения", @"коммандная_строка", 0, 0, 0, 0, 0, 0, SInfo, PInfo)

Вторая задача - как запустить окно2 блитза в нужном месте экрана и без "шапки" где пишется название окна.
Можно попробовать найти окно Blitz'евского приложения через FindWindow, после чего скрыть его, передвинуть, отключить отображение заголовка, а потом снова отобразить. Как будет свободное время - скину примерный код.
 
Ответить с цитированием
Старый 30.03.2007, 15:15   #9
sergeych
AnyKey`щик
 
Регистрация: 05.03.2007
Сообщений: 10
Написано 0 полезных сообщений
(для 0 пользователей)
Re: резидентная программа или как?

Ок, жду
(Offline)
 
Ответить с цитированием
Старый 30.03.2007, 18:22   #10
Chrono Syndrome
 
Сообщений: n/a
Re: резидентная программа или как?

Так, значит у меня плохая новость: я так и не нашла способа скрыть заголовок уже созданного окна. Jimon утверждает, что это вообще невозможно... В остальном же все просто:
HWnd = FindWindow_(@"Blitz Runtime Class", @"Заголовок_окна_Blitz-приложения")
SetWindowPos_(HWnd, 0, Желаемая_координата_X, Желаемая_координата_Y, 0, 0, #SWP_NOSIZE | #SWP_NOZORDER)
 
Ответить с цитированием
Старый 31.03.2007, 00:32   #11
jimon
 
Сообщений: n/a
Re: резидентная программа или как?

я ниче не утверждал не надо
я просто сказал что средставами самого блица нельзя изменить форму окна
 
Ответить с цитированием
Старый 31.03.2007, 06:09   #12
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: резидентная программа или как?

Нет ничего невозможного
Уберает рамку и заголово и перемещает окно в позицию Px, Py
Function ModifyWindow(Px, Py)
	hWnd = SystemProperty("AppHWND")
	WINAPI_SetWindowLong(hWnd, -16, WINAPI_GetWindowLong(hWnd, -16) Xor (12582912 Or 8388608))
	WINAPI_MoveWindow(HWnd, Px, Py, GraphicsWidth(), GraphicsHeight(), 1)
End Function
можно еще убрать заголовок и рамку вот таким способом:
WINAPI_SetWindowRgn(SystemProperty("AppHWND"), WINAPI_CreateRectRgn(4, 24, GraphicsWidth() + 2, GraphicsHeight() + 22), True)
Обе функции вызывать после Graphics()

В папке userlibs надо создать текстовый файл под именем "Winapi.decls", с таким содержанием:
.lib "user32.dll"
WINAPI_MoveWindow(hWnd%, x%, y%, width%, height%, repaint%):"MoveWindow"
WINAPI_SetWindowLong%(hWnd%, nIndex%, dwNewLong%):"SetWindowLongA"
WINAPI_GetWindowLong%(hWnd%, nIndex%):"GetWindowLongA"
WINAPI_SetWindowRgn%(hWnd%, hRegion%, Redraw%):"SetWindowRgn"
.lib "gdi32.dll"
WINAPI_CreateRectRgn%(x%, y%, x2%, y2%):"CreateRectRgn"
(Offline)
 
Ответить с цитированием
Старый 31.03.2007, 10:45   #13
jimon
 
Сообщений: n/a
Re: резидентная программа или как?

ой,winapi ужс
 
Ответить с цитированием
Старый 31.03.2007, 14:47   #14
Chrono Syndrome
 
Сообщений: n/a
Re: резидентная программа или как?

Сообщение от jimon
я ниче не утверждал :) не надо
я просто сказал что средставами самого блица нельзя изменить форму окна :)
Да ? Ну, значит я тебя просто неправильно поняла -_- ...
 
Ответить с цитированием
Старый 31.03.2007, 18:51   #15
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Re: резидентная программа или как?

ого!вот это интересные приемы всплывают
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mauNgerS (25.04.2012)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа говорящая текст abcdef Проекты на MidletPascal 17 01.11.2009 22:14
Программа для текстур axel186 Создание текстур 40 19.08.2009 13:31
Программа для 3d max на тему анимация CRASHER Болтовня 17 27.10.2007 13:33
Программа на других компах evel 3D-программирование 8 12.10.2007 17:30


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com