PDA

View Full Version : دسترسی و تشخیص پنجره فعال در ویندوز



Hossis
دوشنبه 24 بهمن 1390, 23:32 عصر
چجوری می شه یک برنامه ای که فعال هست و فوکس رو در اختیار داره, از میان برنامه ها و پروسه های در حال اجرا تشخیص داد
مثلا فرض کنید شما برنامه های زیادی در حال اجرا دارید ولی فعلا با همین پنجره که عنوانش هست: فایرفاکس -برنامه نویس, کار می کنید
برنامه ای بنویسید که این پنجره رو معرفی کنه و عنوان پنجره رو برگردونه

Hossis
چهارشنبه 26 بهمن 1390, 20:08 عصر
کسی جوابش رو بلد نیست؟؟

فرید نجفلو
چهارشنبه 26 بهمن 1390, 21:11 عصر
سلام اینو می تونی استفاده کنی:

' Imports
<Runtime.InteropServices.DllImport("user32.dll")> _
Private Function GetForegroundWindow() As IntPtr
End Function
<Runtime.InteropServices.DllImport("user32.dll")> _
Private Function GetWindowText(ByVal hWnd As IntPtr, ByVal lpWindowText As Text.StringBuilder, _
ByVal nMaxCount As Integer) As Integer
End Function
' /Imports
''' <summary>
''' Get's the handle and text of the foreground window
''' </summary>
Public Function GetWindowText() As Window
Dim title As New Text.StringBuilder(255)
Dim titleLength As Integer = GetWindowText(GetForegroundWindow(), title, title.Capacity + 1)
title.Length = titleLength
Dim w As New Window
w.Text = title.ToString()
w.Handle = GetForegroundWindow()
Return w
End Function
''' <summary>
''' Represents an open, visible window
''' </summary>
Public Structure Window
Public Handle As IntPtr
Public Text As String
End Structure

Hossis
شنبه 29 بهمن 1390, 08:57 صبح
این کد تو vs 2010 کار نمی کنه و خطا میده
این ها همون کد های API هستند؟/

فرید نجفلو
شنبه 29 بهمن 1390, 12:46 عصر
این کد تو vs 2010 کار نمی کنه و خطا میده/

من همین کد رو تو VS 2010 تست کردم و به خوبی کار می کرد
شما خطا رو بگو ببینیم مشکل از کجاست
یادتون باشه که شما باید این کد ها رو توی یک ماژول کپی کنید


این ها همون کد های API هستند؟
بله اینها API هستند و API هم بسیار قدرتمند هستند فقط وقتی شما ازشون استفاده کردی آزادی پلتفرمتو از دست می دی!