PDA

View Full Version : دریافت داده از کیبورد همزمان با برنامه دیگر



alcocino
دوشنبه 25 آبان 1388, 13:38 عصر
سلام
من یک برنامه نوشتم که کاربر هر چیز که تایپ می کنه را در یک فایل TXT ذخیره می کنه حالا می خواستم این برنامه حساس به برنامه های دیگه باشه یعنی مثلا اگه من توی Word یک چیزی تایپ میکنم خود به خود در اون برنامه من هم تایپ بشه بدون اینکه کاربر متوجه بشه و در فایل مورد نظر من ذخیره بشه و این کار فقط مختص Word نباشه بلکه برنامه های مورد نظر من این خاصیت رو داشته باشند .
من خودم حس می کنم با Thread بشه لطفا راهنمایی کنید ممنون

merced
دوشنبه 25 آبان 1388, 14:59 عصر
درباره Hook كردن key Board تحقيق كنيد . در همين سايت

alcocino
دوشنبه 25 آبان 1388, 16:14 عصر
من گشتم چیزی به درد بخور پیدا نکردم یعنی برای کیبورد چیزی دستگیر نشد فقط یک تاپیک بود در مورد Hook موس که اونم فایده ای نداشت .
اگه با این حساب بشه این کار رو با hook انجام داد یک مثال ساده که فقط یک کلید کیبرد رو hook کنه کافیه

Felony
دوشنبه 25 آبان 1388, 18:33 عصر
کافی بود 1 دقیقه وقت بزارید و تو گوگل بگردید : لینک (http://www.google.com/search?hl=fa&source=hp&q=how+to+hook+keyboard+key+by+delphi&btnG=%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%D9%8A+Google&lr=)

alcocino
سه شنبه 26 آبان 1388, 00:18 صبح
آقا اگه بلد نیستین بگید بلد نیستیم هی ما رو حواله به دیگران ندید من اینجا پرسیدم حتما گشتم تو Google نفهمیدم باید چی کار کنم که اینجا پست زدم وگرنه اگه قرار بود تو گوگل پیدا کنم که دیگه از شما خواهش نمی کردم که کمک کنید .

tdkhakpur
سه شنبه 26 آبان 1388, 00:57 صبح
عجله نكن.


unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
hook : HHOOK ;
hwnd : longint;
implementation
{$R *.dfm}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnhookWindowsHookEx(hook);
end;
function hookproc( ncode: integer;
wparam : WPARAM;
lparam :LPARAM) : integer stdcall;
begin
if ncode>=0 then
begin
PostMessage(hwnd, WM_CHAR, wparam, lparam);
end;
result := CallNextHookEx(hook, ncode, wparam, lparam);
end;
//---------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
hook := 0;
hwnd := Edit1.Handle;
hook := SetWindowsHookEx( WH_KEYBOARD,
hookproc,
HInstance,// ãÔÇÑå ÊÑÏ ÈÑäÇãå Çíå ßå ãíÎæÇåíÏ íÛÇãåÇí ßíÈæÑÏ ÇÒÔ ÑÈæÏå ÈÔæÏ
0);
if hook=0 then
MessageBox( 0,
'Unable to install hook',
'Error!',
MB_OK);
end;
end.

نمونه بالا كليه پيغامهاي مربوط به HInstance صفحه كليد برنامه جاري را براي شما قلاب يا همان hook ميكند.

Mahmood_M
سه شنبه 26 آبان 1388, 04:47 صبح
مطالب این تاپیک (http://barnamenevis.org/forum/showthread.php?t=184405) رو دنبال کنید کمکتون خواهد کرد ، سئوال مطرح شده در اون تاپیک در مورد موس هست اما راه حل ارایه شده برای موس و کیبرد هست ....
اگر نیاز به توضیح بیشتری بود بگید تا ارایه بشه ...

اینجا (http://delphi.about.com/od/kbwinshell/a/delphi_hook.htm) هم مطالبی ارایه شده هماره با سورس نمونه که مطمئنا مفید هست ...

موفق باشید ...

Felony
سه شنبه 26 آبان 1388, 05:41 صبح
آقا اگه بلد نیستین بگید بلد نیستیم هی ما رو حواله به دیگران ندید من اینجا پرسیدم حتما گشتم تو Google نفهمیدم باید چی کار کنم که اینجا پست زدم وگرنه اگه قرار بود تو گوگل پیدا کنم که دیگه از شما خواهش نمی کردم که کمک کنید .
بحث بلد بودن من و دوستان دیگه نیست ، بحث این هست که این جور سوالات که به راحتی میشه برای جست و جوشون کلمه ی کلیدی پیدا کرد دیگه پرسیدن نداره ، دوستانی که تازه عضو میشن همیشه تا چند وقت که دستشون تو جست و جو در این ضمینه راه بیافته این کار همیشگیشون میشه که در هر موردی که به ذهنشون میرسه میان اینجا همون سوال رو میپرسن .

الان اون نمونه کدی که آقای tdkhakpur در اختیارتون گزاشتن به ه دردتون خورد ؟ مشکل این هست که شما پیشنیاز های Hook رو نمیدونید و با توابعی که توش به کار رفته آشنا نیستید و توقع دارید ازش سر در بیارید .

merced
سه شنبه 26 آبان 1388, 15:09 عصر
آقا اگه بلد نیستین بگید بلد نیستیم هی ما رو حواله به دیگران ندید من اینجا پرسیدم حتما گشتم تو Google نفهمیدم باید چی کار کنم که اینجا پست زدم وگرنه اگه قرار بود تو گوگل پیدا کنم که دیگه از شما خواهش نمی کردم که کمک کنید .

من Hook بلد نيستم . ولي با وقت گذاشتن و مطالعه سايت حداقل مي دونم اگه يه موردي پيش اومد دنبال چي بگردم.
جواب خلاصه من هم به اين خاطر بود كه شما راه رو پيدا كني و ادامه بدي نه اينكه منتظر وايستي تا يكي برات كد بذاره.
اصلاً در شأن شما نيست كه كمك اينجوري (درخواست كد) بخواي .

درضمن جواب بلد نبودن جواب ندادنه و اگه جوابت رو كسي نده داد و هوار راه مي ندازي كه اين چه سايتيه كه يكي جواب ما رو نمي ده

http://www.SiteVacuum.com/publisher/GoogleSearchIconShadow.gifhttp://www.SiteVacuum.com/publisher/SuperSearchIconShadow.gif