ساخت یه برنامه مثلAutoTyping

شروع موضوع توسط i_lover3000 ‏11 آگوست 2008 در انجمن منطق و الگوریتم برنامه‌نویسی

کلمات کلیدی:
  1. i_lover3000

    i_lover3000 Member

    ارسال‌ها:
    153
    تشکر شده:
    86
    امتیاز دستاورد:
    16
    سلام :wink:
    کسی میتونه یه یه برنامه کوچیک مثل این برنامه ای که در زیر گذاشتم بنویسه ، یه راهنمایی کوچیک هم کافیه :D
    vb.net 2005
    برنامه رو می تونید از سایت زیر دانلود کنید. :rose:

    [​IMG]


    [​IMG]


    http://www.wamasoft.com
     
    آخرین ویرایش: ‏11 آگوست 2008
    نوشته شده توسط i_lover3000 در ‏11 آگوست 2008
  2. Sampro

    Sampro Member

    ارسال‌ها:
    254
    تشکر شده:
    201
    امتیاز دستاورد:
    16
    برنامه جالبیه
    اینو می خواید برای برنامه های ویندوزی بنویسید یا برای برنامه خودتون .
     
    نوشته شده توسط Sampro در ‏13 آگوست 2008
  3. i_lover3000

    i_lover3000 Member

    ارسال‌ها:
    153
    تشکر شده:
    86
    امتیاز دستاورد:
    16
    راستش می خواستم کلا با نحوه ساختش آشنا بشم . بعد برای برنامه هایی که خودمون مینویسیم بکار میاد هم می تونیم یه برنامه جالب مثل خوده AutoTyping بسازیم البته با امکانات فارسی چون این برنامه AutoTyping از زبان فارسی پشتیبانی نمی کنه !!

    با تشکر
     
    نوشته شده توسط i_lover3000 در ‏14 آگوست 2008
  4. Sampro

    Sampro Member

    ارسال‌ها:
    254
    تشکر شده:
    201
    امتیاز دستاورد:
    16
    قبلا یه جایی خودنم که اپن آفیس یه جوری هستش که هر چی تایپ می کنی رو یه جا ذخیره می کنه
    بعد هر جا تو متن چیزی وارد می کنی دنبال اون کلمه تو پایگاه داد می گرده
    و اگر پیداش کرد پیشنهاد می کنه
    و کاربر بعد از زدن اینتر اونو به سرعت درج می کنه
    من دنبال یه همچین برنامه ای هستم چون واقعا به درد می خوره
    اگه بشه می خوام بنویسمش:wink:
     
    نوشته شده توسط Sampro در ‏14 آگوست 2008
  5. i_lover3000

    i_lover3000 Member

    ارسال‌ها:
    153
    تشکر شده:
    86
    امتیاز دستاورد:
    16
    --

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

    مثلا این برنامه که گذاشتم ببینیت
    تو این برنامه از هیچ کد نویسی استفاده نکردم فقط از Properties است
     

    پیوست ها:

    نوشته شده توسط i_lover3000 در ‏15 آگوست 2008
  6. Sampro

    Sampro Member

    ارسال‌ها:
    254
    تشکر شده:
    201
    امتیاز دستاورد:
    16
    این چیز خاصی نیست
    خود کمپوننت ها این خاصیت رو دارند
    بهش می گن اتو تایپینگ
    با وی بی نوشتیش
    متاسفانه من با وی بی کار نمی کنم
    می دونی چون از اول با دلفی کار کردم پروژه های مورد علاقمو با همون می نویسم
    دستم توش باز تره
     
    نوشته شده توسط Sampro در ‏15 آگوست 2008
  7. i_lover3000

    i_lover3000 Member

    ارسال‌ها:
    153
    تشکر شده:
    86
    امتیاز دستاورد:
    16
    بله با vb.net 2005 نوشتمش و همون طوری که گفتید از خاصیت اتو تایپینگ استفاده کردم

    ولی اون برنامه ای که تو پست اول گذاشتم ، فکر نمی کنم از این خاصیت استفاده کرده باشه چون تو همه برنامه ها می تونی ازش استفاده کنی ( بجز فتوشاپ !!! )

    با تشکر
    موفق باشید
     
    نوشته شده توسط i_lover3000 در ‏16 آگوست 2008
  8. Sampro

    Sampro Member

    ارسال‌ها:
    254
    تشکر شده:
    201
    امتیاز دستاورد:
    16
    سلام.
    ببین لاور جان این برنامه میاد هندل برنامه ای توش تایپ می کنی رو می گیره
    بعد توش دنبال چیزی مثل ادیت باکس می گرده .
    بعد می فهمه اونجا داری تایپ می کنی و برات نمونه می یاره.
    تو فتوشاپ به نظرم چون از شیوه های خاصی استفاده می کنه این جوریه .
    اونجا دیگه از کنترلای پیش فرض ویندوز استفاده نمی کنه.
    چون می دونی معمولا همه ادیت باکسا از یه فرم ویندوزی پیشفرض استفاده می کنن مثل همون اکتیوی ایسک تو وی بی
    دلیلشم اینه که وقتی تم ویندوز رو عوض می کنی تقریبا همه برنامه ها هم تم ادیت و باتنا و ... عوض می شه .
     
    نوشته شده توسط Sampro در ‏16 آگوست 2008
    i_lover3000 از این پست تشکر کرده است.
  9. i_lover3000

    i_lover3000 Member

    ارسال‌ها:
    153
    تشکر شده:
    86
    امتیاز دستاورد:
    16
    خیلی خوبه !

    حالا چطوری میتونم هندلش رو بدست بیارم ؟؟؟
    من تازه کارم اگه میتونید بهم کمک کنید.


    با تشکر
    موفق باشید.
     
    نوشته شده توسط i_lover3000 در ‏17 آگوست 2008
  10. Sampro

    Sampro Member

    ارسال‌ها:
    254
    تشکر شده:
    201
    امتیاز دستاورد:
    16
    تعریفش کاری نداره
    یه سرچ بزنی حتما پیداش می کنی
     
    نوشته شده توسط Sampro در ‏17 آگوست 2008
    i_lover3000 از این پست تشکر کرده است.
  11. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,895
    تشکر شده:
    11,007
    امتیاز دستاورد:
    113
    یک نمونه اش را ساختم که یکسری از کلمات زبان ویزوال بیسیک رو در بانک اطلاعاتی اش داره (درون فایل List.txt)
    و وقتی اجرایش می کنید در کنترلهای استاندارد ویژوال بیسیک (ThunderEditBox) و کنترلهای استاندارد سی (Edit)
    و کنترلهای بورلند (TEdit) و کنترلهای استاندارد VS.Net درون هر برنامه در حال اجرا ظاهر می شود :

    [​IMG]

    رنگ لیست را زرد گرفتم تا با لیست های عادی اشتباهی گرفته نشه. این برنامه با کنترلهای استاندارد Internet Explorer
    سازگار است ولی در برنامه هایی مثل Opera و FireFox و Photoshop از یک نوع خاص TextBox استفاده شده که پنجره
    اختصاصی ندارند و بصورت استاندارد و عمومی نمیشه کدی را برای آنها نوشت.

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

    البته این کد هنوز جای کار زیاد داره ولی برای اساس یک طرحی اصولی و اهداف آموزش مناسبه.

    کد برنامه به همراه فایل اجرایی exe ضمیمه این پست می باشد.
     

    پیوست ها:

    • AutoTyping.zip
      اندازه فایل:
      کیلوبایت 22.5
      نمایش ها:
      6
    نوشته شده توسط the_king در ‏17 آگوست 2008
    ms_vb، m_mx2009، EsShahab و 2 نفر دیگر از این ارسال تشکر کرده اند.
  12. Sampro

    Sampro Member

    ارسال‌ها:
    254
    تشکر شده:
    201
    امتیاز دستاورد:
    16
    اون برنامه فکر کنم تو موزیلا می آورد . من بقیه رو تست نکردم .
    احتمالا باید هندل اونا رو هم جداگانه گیر بیاریم .

    اگه بشه کلمه ای که کاربر انتخاب می کنه رو بهمیم خیلی خوبه .
    مثلا می شه مثله بابی 7 یه لیست هیستوری علاوه بر لیست خودش نشون داده بشه (تو همون دراپ دون).
     
    نوشته شده توسط Sampro در ‏18 آگوست 2008
  13. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,895
    تشکر شده:
    11,007
    امتیاز دستاورد:
    113
    مشکل اصلی اینجا است که خود اون TextBox درون Address Bar یک Handle مجزا نداره (لااقل اینطور به نظر میاد)
    در واقع گویا از نوع Windowless است و در نتیجه با پیغام های استانداردی که به یک پنجره می می فرستند
    (مثلا WM_GETTEXT) نمیشه ارتباط برقرار کرد.

    من اول با ابزار ++Microsoft Spy که جزو Visual Studio است، پنجره TextBox ها رو جستجو کردم تا در صورت امکان
    اسم ClassName کنترلهای جدید رو به لیست اضافه کنم (همانطور که در مورد Edit و TEdit و ThunderTextBox انجام دادم).

    ولی متاسفانه نه Opera و نه FireFox و نه Photoshop (صرفا ابزار نوشتن Text فتوشاپ، چون با بقیه قسمتهای آن
    - مثل TextBox درون References قسمت Plug Ins - سازگار است) از کنترلهای استاندارد Edit استفاده نمی کنند.

    البته کد برنامه رو واسه کنترلهای RichEdit مثل Wordpad و همینطور ویرایشگر Yahoo Messenger (که با نام کلاس
    YIMInputWindow ثبت شده) میشه تکمیل کرد چون پنجره شان مشخص و مجزا است.
    ولی واسه مواردی مثل Opera و FireFox بایستی توی مستندات سازندگانشون بگردیم، بلکه یک راه حل اختصاصی براشون
    پیدا بشه.
     
    نوشته شده توسط the_king در ‏18 آگوست 2008
    EsShahab از این پست تشکر کرده است.
  14. Sampro

    Sampro Member

    ارسال‌ها:
    254
    تشکر شده:
    201
    امتیاز دستاورد:
    16
    یه چیزی می خواستم بدونم
    ما نمی تونیم مثل کاربر که داخلشون تایپ می کنه یه جوری چیزایی که داخلشون تایپ می شن رو بفهمیم ؟
    یا مثل کاربر که پیست می کنه ما هم داخلشون چیزی بریزیم ؟
     
    نوشته شده توسط Sampro در ‏18 آگوست 2008
    EsShahab از این پست تشکر کرده است.
  15. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,895
    تشکر شده:
    11,007
    امتیاز دستاورد:
    113
    البته که میشه، توی یکی از گفتگو ها من همینکار رو برای ارسال متن از ویژوال بیسیک به داخل Command Prompt
    انجام دادم ولی چند نکته وجود داره که واسه این مورد خاص باید در نظر بگیریم :

    اول اینکه ما نمی دونیم موقعیت پنجره TextBox کجای صفحه است و در پیدا کردن و نمایش کادر لیست مشکل داریم.
    این مشکل بر می گرده به همون نداشتن پنجره اختصاصی.

    دومین مشکل اینه که واسه موقع تایپ کردن قابلیت Copy Paste رو از کاربر می گیریم چون خودمون لازمش داریم.

    سومین مشکل اینه که اگه کاربر سریع متن رو تایپ و ویرایش کنه، برنامه ما به دلیل کندی مراحل Copy و Paste جا می مونه.

    چهارمین مشکل اینه که ما پنجره ای نداریم که ترکیب کلیدی Ctrl + C و یا مثلا پیغام WM_COPY رو فقط به اون پنجره ارسال
    کنیم. در نتیجه مجبوریم SendKey کنیم که توی همه پنجره ها دریافت میشه.
    اشکال این ارسال عمومی اینه که اگه کاربر سریع سراغ یک برنامه دیگه بره متن های ارسالی ما توی اون برنامه دیگه
    دریافت می شوند و قابل پیشبینی نیست که چه نتیجه ای ممکنه داشته باشه.
     
    نوشته شده توسط the_king در ‏18 آگوست 2008
    EsShahab از این پست تشکر کرده است.
  16. DANG3R

    DANG3R Member

    ارسال‌ها:
    657
    تشکر شده:
    373
    امتیاز دستاورد:
    16
    میشه نقص همین برنامه رو بگید !؟
     
    نوشته شده توسط DANG3R در ‏18 آگوست 2008
  17. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,895
    تشکر شده:
    11,007
    امتیاز دستاورد:
    113
    کدی که من نوشتم این چند تا مورد رو در نظر نمی گیره :

    مورد اول اینکه از یک پنجره و ListBox عادی استفاده می کنه، نه یک List واقعی که در هر ComboBox ای وجود داره.
    وقتی شما روی یک ListBox عادی Click کنید Focus از کنترلهای دیگه پس گرفته میشه مثلا اگه چشمکزن (Cursor)
    داخل یک ویرایشگر فعال باشه و شما روی ListBox کلیک کنید، حداقل برای یک لحظه اون چشمکزن ناپدید میشه
    و Focus منتقل میشه روی ListBox ما.

    البته من کد رو طوری نوشتم که سعی کنه دوباره Focus رو به ویرایشگر اصلی برگردونه ولی در برخی موارد این مساله
    نتیجه دلخواه رو نداره. این مساله ارتباط مستقیمی داره با کدی که در برنامه مقصد نوشته شده و من شخصا نمی تونم
    کار خاصی برایش انجام بدم، در واقع ویژوال بیسیک به من اجازه ساختن پنجره ای که Focusable نباشه رو نمی ده.
    البته ساختن چنین پنجره ای که Focus نداشته باشد به طریقی عملی است و روش دشواری دارد و خیلی حرفه ای.

    مورد دوم اینکه با کنترلهای RichEdit سازگار نیست. مثلا Wordpad و یکسری ابزارهای ویرایشگر
    از کنترلهای RichEdit استفاده می کنند. مهمترین نشونه شناسایی کنترلهای RichEdit اینه که متن داخلشون می تونه
    چند رنگی باشه و یا با چند قلم متفاوت در کنار هم نوشته بشه. البته این عدم سازگاری با اضافه کردن کدهای مربوط به
    پیغام ها برطرف میشه و برایش راه حل مشخصی داریم.

    مورد سوم اینکه نمی تونه با متن های فارسی به درستی کار کنه. مشکل اصلی اینجا است که نه راست به چپ
    شدن ListBox رو در نظر گرفتم و نه از کنترلهای Unicode استفاده کردم. ایندو مورد حداقل نکاتی است که برای درج کلمات
    فارسی باید رعایت بشه. البته این مشکل رو هم می توانیم برطرف کنیم.

    مورد چهارم اینکه در برنامه هایی مثل Opera و Firefox کنترل TextBox ای پیدا نمی کنه. در این مورد فعلا راه حلی
    سراغ ندارم چون ظاهرا با اصول برنامه ما باید هر TextBox ای یک پنجره مستقل داشته باشه که گویا در این دو برنامه نداره.

    مورد پنجم در پیاده سازی سیستم جستجوی متن اش خیلی موارد و نکته ها رو در نظر نگرفتم و قابلیت محدودی داره
    مثلا فقط برای تک کلمات طراحی شده، مثلا اگر در بانک اطلاعاتی اش عبارت auto type رو تعریف کنید و خودتان عبارت
    auto را به طور کامل وارد نمایید، دیگه فقط عبارت type رو جستجو می کنه و عبارت auto type رو نشون نمیده.
    این مشکل رو با تغییر سیستم جستجو اش میشه به راحتی برطرف کرد.

    مورد ششم اصلا کاربر پسند نیست، البته فقط یک مثال آموزشی است ولی به هر حال باید مواردی مثل نمایش در
    SysTray و امکان تغییر بانک اطلاعاتی به قابلیت ها اضافه بشه.

    مورد هفتم من صرفا کدهای کلیدهای مکان نما به سمت بالا (Up) و پایین (Down) و فاصله (Space) و Enter و
    نقطه (.) و تساوی (=) رو برای لیست تعریف کردم. باید کلیدهای مثل Home و End و Page Up و Page Down هم
    اضافه بشه.

    فعلا همین هفت تا مورد کافیه، خیلی زیاد که بشوند برنامه نویس رو از شوق برطرف کردنشون می اندازه.
     
    آخرین بار توسط مدیر ویرایش شد: ‏19 آگوست 2008
    نوشته شده توسط the_king در ‏19 آگوست 2008
    EsShahab و i_lover3000 از این پست تشکر کرده اند.
  18. Sampro

    Sampro Member

    ارسال‌ها:
    254
    تشکر شده:
    201
    امتیاز دستاورد:
    16
    این طور که معلومه باید دنبال هون داکیمنتاشون بگردیم چون این راه مشکلات زیادی داره .

    نقصش اینه که اپن سورس نیست و قابلیتایی که می خوایم رو نداره.
     
    نوشته شده توسط Sampro در ‏19 آگوست 2008
    i_lover3000 از این پست تشکر کرده است.
  19. Sampro

    Sampro Member

    ارسال‌ها:
    254
    تشکر شده:
    201
    امتیاز دستاورد:
    16
    سلام
    مثل همون لیست دا خل کمبو بکس یه سری کد هایی هست که پیام های رسیده به یه لیست رو تغییر می دن مثلا به پیامی که فوکوس رو می خواد به اون بده پیغام منفی می دن یا اون برگشت می دن .

    می شه تغییراتی ایجاد کردن که اون کنترل اصلا فوکوس نگیره . چون رد بدل کردن فوکوس هم وقت می گیره و برنامه باید از هر جهت سریع باشه .

    تو دلفی می شه با ایجاد یه تابع مسیج های رسیده به یه کنترل رو مدیریت کرد مثلا تو دلفی من می تونم پیغامی که کاربر مثلا روی صفحه برنامه کلیک کرده رو به تایتل بار انتقال بدم . یعنی کاربر می تونه بدون استفاده از تایتل بار فرو رو بکشه . قاعدتا مسیج های دیگه ای هم هستند که به راحتی می شه مدیریتشون کرد .

    ورد از جه نوع ویرایشگری استفاده می کنه ؟احتمالا یه چیزی به غیر از این هاست!!؟

    به نظرم بهتره تا این دو رو از لیست خودمون حذف کنیم . چون فایرفوکس خودش یه اتوتایپ خیلی پیشرفته داره . دیدید که نسخه 3 واقعا اتوتایپش عالیه حتی عکس اون ساسیت رو بهتون نشون می ده . و وقتی چیزی تایپ می کنید فقط دنبال اونایی نیست که کلمه تایپ شده با اون شروع بشه . بلکه تو قمت های مختلف URL دنبال اون کلمه می گرده . احتمالا یه کمپوننت خاص برا این کار نوشتن .

    اگر بتونیم این کار رو شروع کنیم . این موارد همون طور که گفتی چیز خاصی نیستند .

    این لیست ها معمولا یه تعداد محدودی کلمه رو نشون می دن مثلا 10 تا و این کلیدا لازمم هم نیست .
    در ضمن تو برنامه بابی 7 من تست کردم کلید های Hone و End و ... فقط برای خود تکسباکس کار می کنن نه برای لیست

    ممنون به خاطر نکات
     
    نوشته شده توسط Sampro در ‏19 آگوست 2008
    i_lover3000 از این پست تشکر کرده است.

به اشتراک بگذارید