تبليغاتX
بیایید با هم دلفی یاد بگیریم - آموزش يک لنگوييج چنجر (۱ )
کد های مفید به زبان دلفی در دلفی کد

با سلام دوباره !

آيا تا به حال در حال تایپ مطلبی ويا در حال چت کردن در اين حالت قرار گرفته ايد که :

کلی مطلب را تایپ کرديد و تازه وقتی سرتان را بالا مياوريد متوجه ميشويد که تمام حروف و جملات به زبان انگيسی تایپ شدهو يا جملات انگليسی را اشتباهی فارسی تایپ کرديد

اين بزرگترين مشکل هر تایپيست هست اما راه حل چيست ؟

خب من هم در همين فکر بودم که نا گهان يه فکر توپ به سرم رسيد : نوشتن يه نرم افزار که فينگليش را به فارسی و فارسی را به فينگليش تبديل کنه

البته نوشتن چنين برنامه ای نياز به فکر کردن برای افراد متخصص نداره هيچ فکری  من در دو مبحث نوشتن اين برنامه را آموزش می دهم

۱= يه قسمت که ارسال متن به نرم افزار های ديگه را به عهده داره ( به طور مثال ياهو مسنجر) که الان آموزش ميدهم

۲= قسمت بعدی که تبديل حروف انجام ميشه که خيلی خيلی ساده هست و از طريق آرايه ها کار می کنيم ( فردا يا در مبحث بعدی آموزش می دهم)

خب حالا شروع می کنيم 

ابتدا برای ارسال يه متن به يه نرم افزار نياز به چند تا تابع آی پی آی داريم

  • فايند ويندوز ( برای پيدا کردن پنجره برنامه )
  • فايند ويندوز ای اکس ( برای پيدا کردن کادر متن در پنجره)
  • سند مسيج ( برای ارسال متن به برنامه )
  • پست مسيج ( برای ارسال کليد های کيبرد مثل اسپيس و اينتر در برنامه )

خب حالا می توانيد کار را با اين داده ها شروع کنيم :

دلفی رو باز کنيد و بر روی فرم تان يه ممو  و يا يک اديت قرار دهيد و هم چنين يک دگمه ( باتن) حالا ما به فرض می خواهيم متن مورد نظرمون به ياهو مسنجر ( کسی که با اون چت می کنيم و يا در حال چت هستيم ) ارسال کنيم . روی باتن دو بار کليک کنيد و سپس در روال باتن کد زير را وارد کنيد

procedure TForm1.Button1Click(Sender: TObject);
var
  wnd: HWND;
  i: Integer;
  s: string;
begin
  wnd := FindWindow('IMClass', nil);
  if wnd <> 0 then
  begin
    wnd := FindWindowEx(wnd, 0, 'RichEdit20A', nil);
    s := Memo۱.Text;
    for i := 1 to Length(s) do
      SendMessage(wnd, WM_CHAR, Word(s[i]), 0);
     PostMessage(wnd, WM_KEYDOWN, VK_RETURN, 0);
    PostMessage(wnd, WM_KEYDOWN, VK_SPACE, 0);
  end;

end ;

خب حالا کد با لا را مورد بررسی قرار ميدهيم

قسمت اول که سه تا متغير تعريف کرديم که  wnd و s و i نام دارند . در روال پروسيجر ابتدا  متغير دبيلو ان دی را برابر با کلاس  IMClass قرار داديم . اين کلاس مربوط به پنجره چت می باشد که با استفاده از تابع فايند ويندوز وجود اين کلاس را ( باز بودن پنجره چت کردن ) را چک ميکنيم سپس تعريف می کنيم که اگر اين پنجره باز بود دنبال کلاس    RichEdit20A  در پنجره مذکور بگردد . ( اين کلاس معادل همون تکست باکسی استکه جملات را برای فرستادن پی ام يا چت در آن تایپ ميکنيم)

بعد هم متغير اس را برابر با متن موجود در ممو ۱ مقدار دهی می کنيم . بعد هم می گوييم که در يک دستور حلقه ای فر ( For ) تا زمانی انجام بده که تمامکارکتر ها ارسال شوند

حالا در داخل دستور فر با استغاده از تابع سند مسيج يکی يکی کار کتر ها رو به تکسکت باکس ياهو مسنجر ارسال می کنيم . بعد هم با تابع پست مسيج فشردن کليد اينتر و فشردن کليد و فشردن کليد اسپيس را شبيه سازی می کنيم .

خب ديد که چه قدر راحت ميشه يه متن را ارسال کرد و يا فشردن کليد های کيبورد رو شبيه سازی کرد  

فقط کافيه که کلاس برنامه ای را که می خواهيم به آن متن ارسال کنيم بدانيم .

در ضمن اگه شما همين ارسال متن رو در برنام های ديگه به جز ياهو مسنجر می خواهيد بفهيمد يا بهتر بگم کلاس مربوط به برنامه را برای پارامتر دهی های تابع فايند ويندوز ياد بگيريد در قسمت نظر سنجی ها مطرح کنيد تا در پست بعدی نرم افزار ها و کلاس های مربوط به تکست و پنجره آنها را برايتان شرح دهم.

 

خب اين سخت ترين بخش کار برای نرم افزار لنگوييج چنجر ما بود بخش بعدی تغيير زبان بسيار ساده تر می باشد  پس تا پست بعدی

خدا نگه دار

+ نوشته شده در  یکشنبه هفتم فروردین 1384ساعت 18:11  توسط وحید  |