PDA

View Full Version : خواندن عنوان پنجره های برنامه های در حال اجرا در برنامه خودمون!



محمد زارع
شنبه 09 تیر 1386, 08:26 صبح
سلام بر همگی

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

با تشکر از همگی.:تشویق:

__H2__
شنبه 09 تیر 1386, 11:07 صبح
سلام
باید از API های ویندوز استفاده کنید، اول باید اشاره گر پنجره مورد نظر را بله کمک یکی از API های زیر بدست بیاورید
FindWindow
FindWindowEx
GetWindow
GetNextWindow
GetTopWindow
WindowFromDC
GetDesktopWindow
WindowFromPoint
و...

و سپس به کمک API خواندن متن یعنی GetWindowText متن موجود را بخوانید!
مهم سر به دست اوردن hWnd پنجره مورد نظر است بعد میتوان هر بلایی بر سر آن در اورد، تغییر اندازه، مخفی و فعال و موقعیت و متن و ..... البته باید توجه کنید که از نظر ویندوز هر چهارچوبی یک پنجره است و دکمه Start هیچ فرقی با پنجره اصلی Photoshop ندارد و همه پنجره هستند و قابل دستکاری و...

محمد زارع
شنبه 09 تیر 1386, 12:58 عصر
سلام
باید از API های ویندوز استفاده کنید، اول باید اشاره گر پنجره مورد نظر را بله کمک یکی از API های زیر بدست بیاورید
FindWindow
FindWindowEx
GetWindow
GetNextWindow
GetTopWindow
WindowFromDC
GetDesktopWindow
WindowFromPoint
و...

و سپس به کمک API خواندن متن یعنی GetWindowText متن موجود را بخوانید!
مهم سر به دست اوردن hWnd پنجره مورد نظر است بعد میتوان هر بلایی بر سر آن در اورد، تغییر اندازه، مخفی و فعال و موقعیت و متن و ..... البته باید توجه کنید که از نظر ویندوز هر چهارچوبی یک پنجره است و دکمه Start هیچ فرقی با پنجره اصلی Photoshop ندارد و همه پنجره هستند و قابل دستکاری و...

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

__H2__
شنبه 09 تیر 1386, 14:26 عصر
سلام
من نمیدانم چرا این جوانان رشید بدون کد نمونه کارشان راه نمی افتد!!!! :لبخند:
این کد متن پنجره ای را که جلوی تمام پنجره ها قرار دارد برمیگرداند.


Private Declare Unicode Function GetForegroundWindow Lib"user32.dll" () As Integer
Private Declare Unicode Function GetWindowText Lib"user32.dll" Alias "GetWindowTextW" (ByVal hwnd As Integer, ByVal lpString As String, ByVal cch As Integer) As Integer

Public Shared Function GetForegroundWindowText() As String
Dim hWnd As Integer = GetForegroundWindow
If hWnd <= 0 Then Return""
Dim iLength As Integer = 512
Dim ret As New String(ChrW(0), iLength)

iLength = GetWindowText(hWnd, ret, iLength)
If iLength <= 0 Then Return""
Return ret.Substring(0, iLength)
End Function


البته اگر کارهای دیگری هم خواستی انجام دهید، میتوانم یک dll دات نت وطنی! معرفی کنم که ماژولی مخصوص دستکاری پنجره های بومی ویندوز دارد.

VisualStudio
شنبه 09 تیر 1386, 14:54 عصر
البته اگر کارهای دیگری هم خواستی انجام دهید، میتوانم یک dll دات نت وطنی! معرفی کنم که ماژولی مخصوص دستکاری پنجره های بومی ویندوز دارد.
میشه معرفی کیند

__H2__
یک شنبه 10 تیر 1386, 10:32 صبح
سلام
چند ماهی است که تمام نمونه کدهای پراکنده خودم را دارم جمع، دسته بندی، و دوباره نویسی میکنم و در قالب یک dll واحد بسته بندی میکنم و چون در حال تکمیل نشده، نمیخواهم لینک عمومی بدهم.
ایمیل دهید نسخه ای را که تا حالا کامل شده و شامل یک کلاسس با متدهای مختلف برای کار بر روی پنجره های بومی هم است برایتان میفرستم.

البته مجداً تکرار میکنم که اگر صرفاً قصد گرفتن متن عنوان باشد به راحتی میتوانید با همین API ها کارتان را انجام دهید.
موفق باشید.

VisualStudio
یک شنبه 10 تیر 1386, 19:48 عصر
سلام
چند ماهی است که تمام نمونه کدهای پراکنده خودم را دارم جمع، دسته بندی، و دوباره نویسی میکنم و در قالب یک dll واحد بسته بندی میکنم و چون در حال تکمیل نشده، نمیخواهم لینک عمومی بدهم.
ایمیل دهید نسخه ای را که تا حالا کامل شده و شامل یک کلاسس با متدهای مختلف برای کار بر روی پنجره های بومی هم است برایتان میفرستم.

البته مجداً تکرار میکنم که اگر صرفاً قصد گرفتن متن عنوان باشد به راحتی میتوانید با همین API ها کارتان را انجام دهید.
موفق باشید.

با تشکر از شما اگر مقدور می باشد
mj.astronomy@yahoo.com

__H2__
دوشنبه 11 تیر 1386, 10:20 صبح
سلام
چشم فردا میفرستم، البته به عنوان اشانتیون چند ماژول دیگر هم دارد!!!!!!!!!!!!!!!!!!
مثلاً بیشترین چیزی که وقتم را گرفت و واقعاً از نتیجه اش لذت بردم وجود یک Parser بسیار قوی است که میتواند هر تاریخ String شمسی را به Date تبدیل کند.!!!
مثلاً "25 اردیبهشت 1385" یا "25/2/1385" یا ....

محمد زارع
سه شنبه 12 تیر 1386, 09:07 صبح
_H2_ عزیز، سلام

اگر مقدوره برای من هم بفرستید.
Mohammad.zarea@Yahoo.com
با تشکر.

روح اله معینی زاده
سه شنبه 12 تیر 1386, 12:05 عصر
rmoinyzadeh@yahoo.com
ruhollah.moeenizedeh@gmail.com
سلام
به طور کلی چه جوری می شه لیست همه‌ی «ای پی آی» ها رو در دات نت به دست آورد؟

در «وی بی 6» این کار امکان پذیر بود، این روش در دات نت چیست؟
خدانگهدار

programmermp
سه شنبه 12 تیر 1386, 12:50 عصر
سلام
چند ماهی است که تمام نمونه کدهای پراکنده خودم را دارم جمع، دسته بندی، و دوباره نویسی میکنم و در قالب یک dll واحد بسته بندی میکنم و چون در حال تکمیل نشده، نمیخواهم لینک عمومی بدهم.
ایمیل دهید نسخه ای را که تا حالا کامل شده و شامل یک کلاسس با متدهای مختلف برای کار بر روی پنجره های بومی هم است برایتان میفرستم.

البته مجداً تکرار میکنم که اگر صرفاً قصد گرفتن متن عنوان باشد به راحتی میتوانید با همین API ها کارتان را انجام دهید.
موفق باشید.


سلام عزیز دل

برای من هم که می فرستی دیگه

salehi_programmer@yahoo.com

با تشکر فراوان

__H2__
سه شنبه 12 تیر 1386, 15:24 عصر
سلام
اولاً به شدت شرمنده که دیر شد، چون گفتم یک نمونه برنامه هم باش درست کنم (چون حال و حوسله تایپ توضیحات فارسی را ندارم، گفتم یک sample داشته باشد تا مسئله روشن شود)، و توانستم یک برنامه window spy با کد بسیار کوتاه و خیلی جالب و قوی بسازم که توانایی قفل شدن روی پنجره با هدف گیری را دارد!!! و میتوان بین پنجره ها جلو و عقب و داخل و خارج شد و در آنها تغییر داد، مثلاً میتوان دکمه Statt را Maxtimaze کرد!!!!!!!!!!!!!!!!! یا اندازه اش را تغغیر داد یا نوشته اش یا موقییتش !!!!!! (چون از نظر هر کنترلر و کلاً چهارچوبی از نظر سیستم عامل Wiundows یا Window محصوب میشود!!!!!!!!!!)
راستی به خصویت ClassName دقت بیشتری کنید، چون این معیار اصلی تفکیک پنجره ها از هم است. و میتوانید متوجه شوید الآن روی چه چیزی قفل کگرده اید.

گرچه dll کامل نیست ولی فعلاً برای دانلود عمومی گذاشتم، البته در غالب همان برنامه. (نه به نام dll)
ضمناً برنامه نمونه خیلی سریع تهیه شده و فقط از یک سری از متدهای کلاسس مورد نظر استفاده میکند، پس طبیعی است که اگر دوستان وقت بیشتری بگذارند میتوانند چیز کامل تری در بیاورند ......

http://www.h02.ir/download.aspx?File=WindowSpy.zip