|
2D-программирование Вопросы, касающиеся двумерного программирования |
28.03.2007, 14:44
|
#1
|
AnyKey`щик
Регистрация: 05.03.2007
Сообщений: 10
Написано 0 полезных сообщений (для 0 пользователей)
|
резидентная программа или как?
Привет всем!
Вопрос не по теме, но вы тут парни продвинутые, думаю кто-нибуть поможет.
Смотрите, есть допустим стрелялка на блитзе, управление прицелом и выстрелом мышкой. Запускается эта стрелялка из другой программы на бейсике, которая запускается раньше и задает координаты выстрела, перехватывает управление мышью и имитируется выстрел в окне стрелялки. Вопрос: как сделать так, чтоб активным все время оставалось окно стрелялки, а запускающая программа продолжала задавать координаты, т.е. генерила их резиденто?
О как загнул! Мысли есть?
|
(Offline)
|
|
28.03.2007, 15:03
|
#2
|
Знающий
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений (для 70 пользователей)
|
Re: резидентная программа или как?
Мысли есть - создать поток (Thread) и из него передавать данные в Блиц.
|
(Offline)
|
|
28.03.2007, 16:23
|
#3
|
AnyKey`щик
Регистрация: 05.03.2007
Сообщений: 10
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: резидентная программа или как?
А можно подробнее, а то я с потоками еще ничего не делал. Наводящий пример, ссылочку принципа работы.
|
(Offline)
|
|
29.03.2007, 19:47
|
#4
|
|
Re: резидентная программа или как?
Ну лично я считаю, что обмен данными между приложениями удобнее всего проводить через сокеты. Многие не согласны.
|
|
|
30.03.2007, 01:37
|
#5
|
|
Re: резидентная программа или как?
Chrono Syndrome
я тоже не согласен
|
|
|
30.03.2007, 02:34
|
#6
|
Зануда с интернетом
Регистрация: 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
|
AnyKey`щик
Регистрация: 05.03.2007
Сообщений: 10
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: резидентная программа или как?
Спасибо конечно вам, хотя все чего-то предлагают метод передачи данных. А он задан в условии - перехват мышки и симуляция нажатия ее кнопки. А задача в том, как из 1-го приложения на бейсике запустить приложение 2 на блитзе и не ждать его завершения, а сразу продолжать генерить координаты. Вторая задача - как запустить окно2 блитза в нужном месте экрана и без "шапки" где пишется название окна.
Вот теперь помогайте
|
(Offline)
|
|
30.03.2007, 13:16
|
#8
|
|
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
|
AnyKey`щик
Регистрация: 05.03.2007
Сообщений: 10
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: резидентная программа или как?
Ок, жду
|
(Offline)
|
|
30.03.2007, 18:22
|
#10
|
|
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
|
|
Re: резидентная программа или как?
я ниче не утверждал не надо
я просто сказал что средставами самого блица нельзя изменить форму окна
|
|
|
31.03.2007, 06:09
|
#12
|
Знающий
Регистрация: 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
|
|
Re: резидентная программа или как?
ой,winapi ужс
|
|
|
31.03.2007, 14:47
|
#14
|
|
Re: резидентная программа или как?
Сообщение от jimon
я ниче не утверждал :) не надо
я просто сказал что средставами самого блица нельзя изменить форму окна :)
|
Да ? Ну, значит я тебя просто неправильно поняла -_- ...
|
|
|
31.03.2007, 18:51
|
#15
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
Re: резидентная программа или как?
ого!вот это интересные приемы всплывают
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:04.
|