PDA

View Full Version : تشخیص نوع کنترل ویندوز یا وب سایت



mehdi5106
جمعه 17 آبان 1398, 19:09 عصر
امروز هرچی گشتم نتونستم به نتیجه ای برسم و اون اینکه میخوام با یه برنامه سی شارپ و هر جایی که با موس کلیک میکنم مشخصات یا نام اون کنترل رو در محیط ویندوز یا وب سایت بده...
مثل این کد:

private void buyQ_MouseUp(object sender, MouseEventArgs e)
{
string ctrlName = ((Control)sender).Name;
textBox1.Text = ctrlName;
}
کد بالا نام کنترلهای موجود در فرم جاری رو نشون میده. اما من میخوام این دستور برای کل صفحه دسکتاپ کار کنه، مخصوصا توی وب سایت ها... نشون بده که آیا کنترل موردنظر دکمه هست یا تکست باکس یا ....

ASHKANLAEI
شنبه 18 آبان 1398, 06:52 صبح
منظورتون از دسکتاپ چیه؟

mehdi5106
شنبه 18 آبان 1398, 18:18 عصر
منظورتون از دسکتاپ چیه؟

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

Snoopboy
یک شنبه 19 آبان 1398, 19:46 عصر
از توابع API استفاده کن. هندل هر پنجره رو بر میگردونه بعدش میتونی نوع پنجره و هر متن رو برگردونی

samiasoft
یک شنبه 19 آبان 1398, 23:15 عصر
هر برنامه یا نرم افزاری که در محیط ویندوز اجرا شده....
البته هدف بیشتر وب سایت هست و میخوام نام کنترل ها یا لینکهای یه صفحه وب را بدست بیاورم....

درود

در خود ویندوز اگر بخواهید اینکارو کنید ابزارهایی مثل :

WinSpy++
Autolt Window Info
و.... وجود دارند.

اما در وب خیلی راحت به کمک ابزار inspect خود مرورگر

the king
یک شنبه 26 آبان 1398, 20:07 عصر
خیلی از کنترل هایی که در برنامه ها می بینید، مخصوصا برنامه هایی که تعداد کنترل نمایشی زیادی دارند، فرضا اونهایی که با کتابخانه qt ساخته میشه یا موتور گرافیکی OpenGl و DirectX دارند، در حالت عادی فاقد پنجره هستند و Windowless اند.
یعنی برای هر کدوم یک Window استاندارد با Handle اختصاصی وجود نداره که بتوانید Text یا Class شون رو بخونید و حتی متوجه بشید که در موقعیت فلان x و y چه کنترلی قرار داره، چه برسه به نوع شون.
دلیل اصلی اینکه براشون پنجره در نظر نمی گیرند اینه که هم سبکتر میشن و هم قابلیت هایی مثل شفافیت کنترل رو بهتر میشه روشون پیاده سازی کرد.
همچین کنترل هایی که پنجره ندارند رو نمیشه شناسایی کرد مگر اینکه به شیوه شناسایی مناسب شون دسترسی داشته باشید.

فرضا اگر QT_USE_NATIVE_WINDOWS با مقدار 1 در Environment ویندوز (مشابه PATH و WINDIR و TEMP و ...) ثبت بشه، برنامه هایی که با QT کار می کنند (مثل تلگرام نسخه دسکتاپ) زورکی صاحب پنجره های استاندارد ویندوز میشن و می توانید شناسایی شون کنید.
گرچه معمولا کارکرد شون دچار اختلال میشه و دیگه برنامه شون درست کار نمی کنه.
برای کنترل های فاقد پنجره باید بدونید از چه کتابخانه ای استفاده شده و چطور میشه بهشون دسترسی داشت وگرنه فقط پنجره اصلی برنامه رو شناسایی می کنید.

RED-C0DE
دوشنبه 27 آبان 1398, 13:46 عصر
دوستان در خصوص ویندوز گفتن،

اما اگه میخای در صفحه وب بتونی از این کارا بکنی :
اگه میخای فقط یک صفحه وب رو پارس کنی و اطلاعات تمام کنترلها (element ها) رو داشته باشی، یه گزینه
HtmlAgilityPack هست.

اگه بخای یه مرحله جلوتر بری و تعامل هم داشته باشی با کنترلهای روی صفحه، یه گزینه استفاده از Headless Browser ها هست. یه مورد خوب هم، کتابخونه Puppeteer هست که توی جاوااسکریپت استفاده میشه. برای C# هم از PuppeteerSharp می تونی استفاده کنی. میتونی هرنوع تعاملی که خود کاربر واقعی با یک صفحه وب داره رو، از طریق این کتابخونه با صفحه داشته باشی.