PDA

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



sara66
سه شنبه 23 آذر 1389, 11:45 صبح
سلام.توی دلفی امکان داره با نرم افزار های دیگه که سورسشون را نداریم کار کنیم ؟
مثلا برنامه من با برنامه یاهو مسنجر کار کنه و نام کاربری و پسورد را وارد یاهو مسنجر کنه و بعد یک شرتکات را توی یاهو مسنجر اجرا کنه یا یکی از دکمه های یاهو مسنجر را فشار بده یا منو ها را باز کنه و کلی چیز دیگه.

vcldeveloper
سه شنبه 23 آذر 1389, 11:59 صبح
این به دلفی ربطی نداره، بلکه به اون نرم افزار بستگی داره که آیا رابطی برای کنترل شدن توسط سایر نرم افزارها ارائه میکنه یا نه؟ به عنوان مثال، نرم افزارهای مجموعه Office همگی از طریق MS COM یک رابط برنامه نویسی در اختیار سایر نرم افزارها قرار میدند، حالا هر زبان برنامه نویسی که بتونه با COM کار کنه، میشه باهاش برنامه ایی نوشت که با یکی از این نرم افزارهای Office ارتباط برقرار کنه، و ازش استفاده کنه.

برای یاهو مسنجر؛ خودش یک رابط COM ارائه میکنه، ولی رابط COM اش مستندات رسمی نداره، یعنی شرکت یاهو علاقه ایی نداره سایر برنامه ها از اون رابط استفاده کنند. شما ممکنه با جستجو در اینترنت و پیدا کردن یک سری منابع غیر رسمی و سعی و خطای خودتون، بتونید باهاش کار کنید.

البته ممکنه بشه با هر نرم افزاری رو بنا بر شرایط، از طریق روش های هک-مانند به کارهایی وادار کرد، مثلا براش پیام های خاصی فرستاد، یا کدی را به فضای آدرسش تزریق کرد، و غیره؛ ولی این کارها جنبه رسمی و مشخص ندارند، و کارهای ابتکاری هستند.

sara66
سه شنبه 23 آذر 1389, 12:33 عصر
مرسی ، اما یاهو مسنجر مثال بود فقط ، یک کد داشتم قدیم که با استفاده از هندل برنامه میتونست یوزر و پسورد را بخونه ! کدش اینجوری بود که اول با FindWindow هندل برنامه را پیدا میکرد بعد یک تابع دیگه بود که میشد باهاش مثلا کل Edit ها یا Button های روی اون نرم افزار را پیدا کرد

vcldeveloper
سه شنبه 23 آذر 1389, 12:52 عصر
یک کد داشتم قدیم که با استفاده از هندل برنامه میتونست یوزر و پسورد را بخونه ! کدش اینجوری بود که اول با FindWindow هندل برنامه را پیدا میکرد بعد یک تابع دیگه بود که میشد باهاش مثلا کل Edit ها یا Button های روی اون نرم افزار را پیدا کرد
اینها هم جزو همون روش های ابتکاری هستند. برنامه نویس میره با ابزارهایی بررسی میکنه که در برنامه مورد نظرش از چه کنترل های استانداردی استفاده شده، بعدش سعی میکنه با ارسال پیام های ویندوز مرتبط با اون کنترل ها، رفتار کاربر را برای آن کنترل ها شبیه سازی کنه.

sara66
سه شنبه 23 آذر 1389, 13:24 عصر
مرسی ، من اون کد قدیم را ندارم میشه یک نمونه قرار بدین ؟ با فرض اینکه برنامه رابطی برای برنامه نویس ها نذاشته باشه

vcldeveloper
سه شنبه 23 آذر 1389, 13:33 عصر
میشه یک نمونه قرار بدین ؟
یک نمونه از چه کاری رو قرار بدم؟ شما می تونید با استفاده از EnumChildWindows به لیست پنجره های فرزند یک پنجره دسترسی داشته باشید، و با استفاده از GetClassName کلاس هر پنجره رو مشخص کنید، و با استفاده از SendMessage یا PostMessage، به اون پنجره خاص پیام خاصی برای انجام کار خودتان ارسال کنید.