View Full Version : به دست آوردن پنجره ی فعال ویندوز
sirvan-me
جمعه 13 مرداد 1391, 12:32 عصر
سلام به همه ی دوستان . می خواستم بدونم چطور و با چه توابع API می تونم عنوان پنجره ی فعال ویندوز رو به دست بیارم ... یعنی به محض اینکه به طور مثال برنامه ی Notepad اجرا شد عنوان پنجره ی این برنامه نمایش داده بشه ...
مهرداد صفا
جمعه 13 مرداد 1391, 14:03 عصر
سلام
از توابع GetActiveWindow و GetWindowText در user32 استفاده کنید. تابع اول handle مربوط به پنجره فعال را بر میگرداند و تابع دوم با گرفتن handle و یک رشته و یک عدد به عنوان طول رشته عنوان پنجره را در رشته ارسالی بر میگرداند. به این صورت:
//in the name of god
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication2
{
class User32
{
[System.Runtime.InteropServices.DllImport("user32.DLL", EntryPoint = "GetActiveWindow", SetLastError = true, CharSet = CharSet.Unicode, ThrowOnUnmappableChar = true)]
public static extern Int32 GetActiveWindow();
[System.Runtime.InteropServices.DllImport("user32.DLL", EntryPoint = "GetWindowText", SetLastError = true, CharSet = CharSet.Unicode, ThrowOnUnmappableChar = true)]
public static extern Int32 GetWindowText(Int32 hwnd, string lpString, Int32 cch);
public static String GetActiveWindowText()
{
string ActiveWindowText = "";
GetWindowText(GetActiveWindow(), ActiveWindowText, 200);
return ActiveWindowText;
}
}
}
موفق باشید.
sirvan-me
جمعه 13 مرداد 1391, 16:16 عصر
دوست من این کدی که شما قرار دادین فقط زمانی که پنجره ی برنامه ی خودمون فعال باشه عنوان پنجرهی فرممون رو نشون میده ... تو بقیه موارد و برنامه های دیگه ( یعنی زمانی که کنترل از برناممون گرفته میشه ) رشته ی خالی برمی گردونه ... میشه راهنمایی کنید !!!!!!
sirvan-me
جمعه 13 مرداد 1391, 16:21 عصر
ممنون از راهنماییت در رابطه با کد اول خودم به جواب رسیدم .... این طور بنویسیم درست میشه ...
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
private string GetActiveWindowTitle()
{
const int nChars = 256;
IntPtr handle = IntPtr.Zero;
StringBuilder Buff = new StringBuilder(nChars);
handle = GetForegroundWindow();
if (GetWindowText(handle, Buff, nChars) > 0)
{
return Buff.ToString();
}
return null;
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.