Показать сообщение отдельно

  #2202  
Старый 28.09.2008, 19:37
Twiddle
Познающий
Регистрация: 06.09.2006
Сообщений: 94
С нами: 10356548

Репутация: 15
По умолчанию

Попробывал сделать с хотки но все бы хорошо но с игрой не работает. Блокнот закрывает. Все закрывает, но как только запускаешь игру - не хочет работать. Вообще ни как не реагирует.
В чем может быть дело? подскажите или придется все же делать хук? Тогда помогите с хуком ибо уже неделю не могу сделать.
PHP код:
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
Dialogs,
  
Tlhelp32;



type
  TForm1 
= class(TForm)
    
procedure FormCreate(SenderTObject);
    
procedure FormDestroy(SenderTObject);

  private
    { Private 
declarations }
      
procedure WMHotKey(var MsgTWMHotKey); 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
  
Form1TForm1;



implementation

{$R *.dfm}


function 
KillTask(ExeFileNamestring): integer;
const
  
PROCESS_TERMINATE=$0001;
var
  
ContinueLoopBOOL;
  
FSnapshotHandleTHandle;
  
FProcessEntry32TProcessEntry32;
begin
  result 
:= 0;

  
FSnapshotHandle := CreateToolhelp32Snapshot
                     
(TH32CS_SNAPPROCESS0);
  
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  
ContinueLoop := Process32First(FSnapshotHandle,
                                 
FProcessEntry32);

  while 
integer(ContinueLoop) <> do
  
begin
    
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
         
UpperCase(ExeFileName))
     or (
UpperCase(FProcessEntry32.szExeFile) =
         
UpperCase(ExeFileName))) then
      Result 
:= Integer(TerminateProcess(OpenProcess(
                        
PROCESS_TERMINATEBOOL(0),
                        
FProcessEntry32.th32ProcessID), 0));
    
ContinueLoop := Process32Next(FSnapshotHandle,
                                  
FProcessEntry32);
  
end;

  
CloseHandle(FSnapshotHandle);
end;

    function 
EnumMiniProc (WdHWndParamLongInt): Booleanstdcall// Îáÿçàòåëüíî stdcall !!! 
Begin
 
If  Wd<>Form1.Handle then // åñëè ýòî íå íàøà ïðîãðàììà 
        
If  IsWindowVisible(WDthen  // åñëè îêíî âèäèìî
            
If  not IsIconic(WDthen      // åñëè îêíî íå ñâåðíóòî
              
If  isWindow(WDthen      // è âîîáùå ýòî - îêíî.
                 
ShowWindow(WDSW_MINIMIZE); // ñâåðíåì åãî.

end;

procedure TForm1.WMHotKey(var MsgTWMHotKey);
  
begin
  EnumWindows 
(@EnumMiniProc0); // îòðàáàòûâàåì ñâîðà÷èâàíèå îêîí.
 
Sleep(1000);
KillTask('CabalMain.exe');

end;

procedure TForm1.FormCreate(SenderTObject);
begin
  RegisterHotKey
(Form1.Handle1,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey1);
  
RegisterHotKey(Form1.Handle2,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey2);
    
RegisterHotKey(Form1.Handle3,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey3);
      
RegisterHotKey(Form1.Handle4,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey4);
        
RegisterHotKey(Form1.Handle5,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey5);
          
RegisterHotKey(Form1.Handle6,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey6);
            
RegisterHotKey(Form1.Handle7,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey7);
              
RegisterHotKey(Form1.Handle8,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey8);
                
RegisterHotKey(Form1.Handle9,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey9);
                
RegisterHotKey(Form1.Handle10,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey10);

end;

procedure TForm1.FormDestroy(SenderTObject);
begin
  UnRegisterHotKey
(Form1.Handle,1);
   
RegisterHotKey(Form1.Handle2,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey2);
    
RegisterHotKey(Form1.Handle3,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey3);
      
RegisterHotKey(Form1.Handle4,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey4);
        
RegisterHotKey(Form1.Handle5,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey5);
          
RegisterHotKey(Form1.Handle6,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey6);
            
RegisterHotKey(Form1.Handle7,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey7);
              
RegisterHotKey(Form1.Handle8,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey8);
                
RegisterHotKey(Form1.Handle9,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey9);
                
RegisterHotKey(Form1.Handle10,MOD_SHIFT  MOD_ALT MOD_CONTROL,hotkey10);

end;

end
 
Ответить с цитированием