Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.12.2007, 22:43
Аватар для twix47
twix47 twix47 вне форума
Прохожий
 
Регистрация: 15.12.2007
Адрес: Киев
Сообщения: 28
Репутация: 10
По умолчанию Помогите решить проблему...

Триста лет не шпилил в игрушки. Сегодня взял у соседа джойстик, и решил установив старенькую гоночьку. Узнал что джойстики игра не поддержует. Решил написать на делфи прогу которая сможет решить эту проблему. Принцип работы такой: программа определяет нажатия клавиш на джойстике, затем с помощью компонента sendkeys посылает соответственные кнопки игре... В общем программу я сделал, протэстил на блокноте - все клавиши посылаются верно. Проблема вот в чём. Когда дело доходит до игры, стоит мне нажать какую либо клавишу джойстика, как игра тут же сворачивается и выскакивает форма с программой. Пробовал просто скрыть форму с помощью:
showwindow(Application.handle, SW_HIDE);
showwindow(Frorm1.handle, SW_HIDE);
В этом случае игра просто сворачивается.
Затем пробовал пользоваться всякого рода ДЖОЙНЕРАМИ для склейки двух EXE в один. Понял что они пригодны только для рассылки троянов, так как в процессах всё равно висит две проги... Мой друг посоветовал мне с помощью дисасемблера просто добавить код одного EXE в другой, но это сложно, долго и тупо.... Пожалуйста, подскажите как можна справится с этой проблемой. Заранее благодарен.
Ответить с цитированием
  #2  
Старый 28.12.2007, 01:38
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Восклицание

Тогда пиши сервис:
File -> New -> Other -> Service Application

и там уже делай обработку.
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием
  #3  
Старый 31.12.2007, 15:18
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

А не проще просто поискать программу такого типа и не писать на Delphi ничего? В нете где-то видел такие программы, поищи.
__________________

Ответить с цитированием
  #4  
Старый 31.12.2007, 20:40
Аватар для twix47
twix47 twix47 вне форума
Прохожий
 
Регистрация: 15.12.2007
Адрес: Киев
Сообщения: 28
Репутация: 10
Радость

Сервис таки написал. Всё пашет. Правда, как всегда, пошпилил в игрушку 5 минут и надоело... Зато узнал как сервисы создавать... Вобщем спасибо, и с новым годом!
__________________
Программист это тоже самое что и шаман: целими днями бормочет чего-то, в бубен бет, а потом и сам не знает как оно работает...
Ответить с цитированием
  #5  
Старый 10.01.2008, 10:58
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Плз, выложите исходник! Очень нужно!
__________________
00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110
Ответить с цитированием
  #6  
Старый 10.01.2008, 17:38
Аватар для twix47
twix47 twix47 вне форума
Прохожий
 
Регистрация: 15.12.2007
Адрес: Киев
Сообщения: 28
Репутация: 10
По умолчанию

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
ExtCtrls, MMSYSTEM;

type
TService1 = class(TService)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;

var
Service1: TService1;
Label1,Label2,Label3,Label4:string;
radiobuttonA,radiobuttonB,radiobuttonC,radiobutton X,radiobuttonY,radiobuttonZ,radiobutton7,radiobutt on8: Boolean;
hWnd: THandle;
implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller(CtrlCode);
end;

function TService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;


procedure TService1.Timer1Timer(Sender: TObject);
var
myjoy: tjoyinfo;
p: TPoint;
begin
joygetpos(joystickid1,@myjoy);
Label1:=inttostr(myjoy.wxpos);
Label2:=inttostr(myjoy.wypos);
Label3:= inttostr(myjoy.wZpos);


radiobuttonA:= (myjoy.wbuttons and joy_button1)>0;
radiobuttonB:= (myjoy.wbuttons and joy_button2)>0;
radiobuttonC:= (myjoy.wbuttons and joy_button3)>0;
radiobuttonX:= (myjoy.wbuttons and joy_button4)>0;
radiobuttonY:= (myjoy.wbuttons and joy_button5)>0;
radiobuttonZ:= (myjoy.wbuttons and joy_button6)>0;
radiobutton8:= (myjoy.wButtons and JOY_POVLEFT)>0;



if strtoint(Label3)<35000 then
begin
if Label2='65535' then
begin
keybd_event(VK_DOWN,0,0,0);
keybd_event(VK_DOWN,0,KEYEVENTF_KEYUP,0);
end;
if Label2='0' then
begin
keybd_event(VK_UP,0,0,0);
keybd_event(VK_UP,0,KEYEVENTF_KEYUP,0);
end;


if Label1='0' then
begin

keybd_event(VK_LEFT,0,0,0);
keybd_event(VK_LEFT,0,KEYEVENTF_KEYUP,0);
end;
if Label1='65535' then
begin
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0);
end;
end;
if strtoint(Label3)>35000 then
begin

if Label2='65535' then


begin
if GetCursorPos(p)=true then
SetCursorPos(p.X,p.Y+20);
end;
if Label2='0' then

begin
if GetCursorPos(p)=true then
SetCursorPos(p.X,p.Y-20);
end;


if Label1='0' then
begin
if GetCursorPos(p)=true then
SetCursorPos(p.X-20,p.Y);
end;
if Label1='65535' then

begin
if GetCursorPos(p)=true then
SetCursorPos(p.X+20,p.Y);
end;




end;





if (RadioButtonA=true) then
begin
keybd_event(VK_RETURN ,0,0,0);
keybd_event(VK_RETURN ,0,KEYEVENTF_KEYUP,0);
end;
if (RadioButtonB=true) then
begin
keybd_event(VK_tab,0,0,0);
keybd_event(VK_tab,0,KEYEVENTF_KEYUP,0);
end;
if (RadioButtonC=true) then
begin
keybd_event(VK_MENU ,0,0,0);
keybd_event(VK_MENU ,0,KEYEVENTF_KEYUP,0);
end;
if (RadioButtonX=true) then
begin
keybd_event(VK_BACK,0,0,0);
keybd_event(VK_BACK,0,KEYEVENTF_KEYUP,0);
end;

if (RadioButtonY=true) then
begin
keybd_event(VK_LWIN ,0,0,0);
keybd_event(VK_LWIN ,0,KEYEVENTF_KEYUP,0);
end;
if (RadioButtonZ=true) then
begin
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
end;
if (RadioButton8=true) then
begin
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
end;
end;
end.
__________________
Программист это тоже самое что и шаман: целими днями бормочет чего-то, в бубен бет, а потом и сам не знает как оно работает...
Ответить с цитированием
  #7  
Старый 10.01.2008, 17:39
Аватар для twix47
twix47 twix47 вне форума
Прохожий
 
Регистрация: 15.12.2007
Адрес: Киев
Сообщения: 28
Репутация: 10
По умолчанию

Вот. Если есть вопросы - задавай...
__________________
Программист это тоже самое что и шаман: целими днями бормочет чего-то, в бубен бет, а потом и сам не знает как оно работает...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter