Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2012, 03:19   #1
buraymk2
Пользователь
 
Регистрация: 09.05.2012
Сообщений: 18
Восклицание Напишите Программу

Посоветавали данный форум - что тут отличные и знающие люди

По сути , нужно сделать программу:
( для вас вроде легкая) ( для меня - невозможное)
Суть:
ПояснюВ онлайн играх - нужен фарм вещей ( выбивание предметов из монстров , для дальнейшей продажи предметов за игровые деньги) , ну так вот , очень не удобно одним и тем же персонажем убивать и собирать выпавшие из монстра предметы (это занимает в два раза больше времени)

Чтобы решить эту проблему умные игроки делают так:
Заводят на место фарма(место убийство монстров) 2х персонажей ( на 1 компьютере в два окна (игра 2 раза включена )).

Проблема:
Вещи собираются на клавишу провел , и только в том окне , в которое активно , конечно есть автолутеры - но они все на оба окна ( на активное и неактивное) , но это не удобно - т.к собирают вещи два персонажа - а нужно чтоб собирал 1 , 1- который в неактивном окне( тесть когда в активное окне персонаж убивает монстра - неактивное - начало собирать вещи( с помощью написанной программы)

Задача: написать программу , с помощью которой в неактивном окне - будет зажата клавиша пробел(SPASE) - (благодаря ей будут собираться вещи ), но главное - чтоб в активном окне - клавиша пробел - ни была зажата )


Для тех кто ни понял тупой пример:


Открываем 2 текстовых документа на рабочем столе , с помощью написанной программы - в неактивном окне все время ставится пробил - а в активное спокойно мы работаем )
buraymk2 вне форума Ответить с цитированием
Старый 09.05.2012, 04:45   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну все время пробел зажимать нельзя - рано или поздно переполните буфер клавиатуры.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 09.05.2012, 05:52   #3
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Да держи, жалко что-ли...
Немало дури я написал, будет еше...
Тестировал конечно же на блокноте.
Как поведет себя в игре - без понятия.
Код:
#define _WIN32_WINNT 0x0500
#include <windows.h>
HWND target = 0; 
LRESULT CALLBACK KbProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	static sp = 0; 
	static es = 0; 
	LPKBDLLHOOKSTRUCT pkb = (LPKBDLLHOOKSTRUCT) lParam; 
	if (WM_KEYDOWN == wParam)
	{
		if (pkb->vkCode == VK_SPACE)
		{
			es = 0;		sp++;
			if (sp>4)
			{
				HWND hfrgnd = GetForegroundWindow();
				GUITHREADINFO gu;
				gu.cbSize = sizeof(GUITHREADINFO);
				GetGUIThreadInfo(GetWindowThreadProcessId(hfrgnd,0), &gu);
				target = gu.hwndFocus;
			}
		}
		else if (pkb->vkCode == VK_ESCAPE)
		{
			sp = 0;		es++;
			if (es > 4)	target = NULL;
		}
		else
		{
			es = 0;		sp = 0;
		}

	}
 	return CallNextHookEx(NULL, nCode, wParam, lParam);
}

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
	HWND hwnd = CreateWindow (TEXT("#32768"), 0, WS_VISIBLE|WS_OVERLAPPEDWINDOW,0, 0, 200, 200, 0, 0, 0, 0); 
	HHOOK hhook = SetWindowsHookEx(WH_KEYBOARD_LL, KbProc, hInstance, 0);
	SetTimer(0, 1, 300, 0);
	MSG msg;
	while (IsWindow(hwnd) && GetMessage (&msg, NULL, 0, 0))
	{
		if (target && msg.message == WM_TIMER)
			PostMessage(target, WM_KEYDOWN, VK_SPACE, 0);
		DispatchMessage (&msg);
	}
	UnhookWindowsHookEx(hhook);
	return 0;
}

Жмешь 5 раз подряд на пробел в нужном окне, он будет повторяться постоянно.
Отмена - 5 раз подряд на escape в любом окне.
Вложения
Тип файла: zip postspace2.zip (16.1 Кб, 42 просмотров)

Последний раз редактировалось EUGY; 09.05.2012 в 16:53. Причина: поправил размер файла
EUGY вне форума Ответить с цитированием
Старый 09.05.2012, 11:36   #4
buraymk2
Пользователь
 
Регистрация: 09.05.2012
Сообщений: 18
По умолчанию

Cпасибо конечно огромное за старание , но Эта программа лишь на 1 окно ,
При включении ее в окне - и на переключении на другое окно - в первом окне пробел перестает быть зажатым - лишь когда делаем его опять активным он начинает работать =(

Тестил на блокноте
buraymk2 вне форума Ответить с цитированием
Старый 09.05.2012, 16:52   #5
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

А что хотели от халявы.. у меня на win7 работает.
Я конечно перезалью, изменив пару скользких моментов..
EUGY вне форума Ответить с цитированием
Старый 10.05.2012, 07:58   #6
buraymk2
Пользователь
 
Регистрация: 09.05.2012
Сообщений: 18
По умолчанию

СПС )
Жду с нетерпением
buraymk2 вне форума Ответить с цитированием
Старый 13.05.2012, 17:53   #7
buraymk2
Пользователь
 
Регистрация: 09.05.2012
Сообщений: 18
По умолчанию

Все еще актуально)
buraymk2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напишите программу на С++ Neonik Visual C++ 0 10.11.2011 19:20
напишите программу Георгий Лолаев Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 11.06.2011 12:33
Напишите программу artem2011 Помощь студентам 0 23.06.2010 23:56
Напишите программу Kolyan56577 Помощь студентам 4 18.06.2010 18:51
напишите программу nyncuk Помощь студентам 3 19.06.2008 14:39