|
Познающий
Регистрация: 06.09.2006
Сообщений: 94
С нами:
10356548
Репутация:
15
|
|
Попробывал сделать с хотки но все бы хорошо но с игрой не работает. Блокнот закрывает. Все закрывает, но как только запускаешь игру - не хочет работать. Вообще ни как не реагирует.
В чем может быть дело? подскажите или придется все же делать хук? Тогда помогите с хуком ибо уже неделю не могу сделать.
PHP код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,
Tlhelp32;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
public
{ Public declarations }
end;
const
hotkey1 = ord ('1');
hotkey2 = ord ('2');
hotkey3 = ord ('3');
hotkey4 = ord ('4');
hotkey5 = ord ('5');
hotkey6 = ord ('6');
hotkey7 = ord ('7');
hotkey8 = ord ('8');
hotkey9 = ord ('9');
hotkey10 = ord('0');
var
Form1: TForm1;
implementation
{$R *.dfm}
function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle,
FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
function EnumMiniProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Îáÿçàòåëüíî stdcall !!!
Begin
If Wd<>Form1.Handle then // åñëè ýòî íå íàøà ïðîãðàììà
If IsWindowVisible(WD) then // åñëè îêíî âèäèìî
If not IsIconic(WD) then // åñëè îêíî íå ñâåðíóòî
If isWindow(WD) then // è âîîáùå ýòî - îêíî.
ShowWindow(WD, SW_MINIMIZE); // ñâåðíåì åãî.
end;
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
EnumWindows (@EnumMiniProc, 0); // îòðàáàòûâàåì ñâîðà÷èâàíèå îêîí.
Sleep(1000);
KillTask('CabalMain.exe');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Form1.Handle, 1,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey1);
RegisterHotKey(Form1.Handle, 2,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey2);
RegisterHotKey(Form1.Handle, 3,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey3);
RegisterHotKey(Form1.Handle, 4,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey4);
RegisterHotKey(Form1.Handle, 5,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey5);
RegisterHotKey(Form1.Handle, 6,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey6);
RegisterHotKey(Form1.Handle, 7,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey7);
RegisterHotKey(Form1.Handle, 8,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey8);
RegisterHotKey(Form1.Handle, 9,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey9);
RegisterHotKey(Form1.Handle, 10,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey10);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Form1.Handle,1);
RegisterHotKey(Form1.Handle, 2,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey2);
RegisterHotKey(Form1.Handle, 3,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey3);
RegisterHotKey(Form1.Handle, 4,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey4);
RegisterHotKey(Form1.Handle, 5,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey5);
RegisterHotKey(Form1.Handle, 6,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey6);
RegisterHotKey(Form1.Handle, 7,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey7);
RegisterHotKey(Form1.Handle, 8,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey8);
RegisterHotKey(Form1.Handle, 9,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey9);
RegisterHotKey(Form1.Handle, 10,MOD_SHIFT + MOD_ALT + MOD_CONTROL,hotkey10);
end;
end.
|