PDA

View Full Version : غیر فعال کردن always on top یه برنامه دیگر



kiuhnmgtrdcv
دوشنبه 07 اردیبهشت 1388, 19:11 عصر
سلام به همه
من یه برنامه رو سیستم نصب کردم که همیشه always on top هست و برنامه نویسش یه جوری اینو تنظیم کرده که این خصوصیت نمیشه تغییر داد! (خیلی اذیت میکنه یه چیزی هست که همیشه هم باید رو سیستم در حال اجرا باشه)
خواستم ببیننم میشه برنامه ای نوشت که خاصیت always on top بودن این برنامه رو غیرفعال کنه ؟ برای این کار به چه چیزی نیاز داریم ؟ ایده ای ندارید

kiuhnmgtrdcv
سه شنبه 08 اردیبهشت 1388, 11:31 صبح
من به یه جاهایی رسیدم لطفا اگر در ادامه نظری دارید بگید




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace TWD
{


public partial class Form1 : Form
{
[DllImport("user32.dll")]
static extern int GetForegroundWindow();

[DllImport("user32.dll")]
static extern int GetWindowText(int hWnd, StringBuilder text, int count);

[DllImport("user32.dll")]
static extern IntPtr GetTopWindow(IntPtr hWnd);

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);




public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
//int x = FindWindow("UsingAPI", true);
//Console.WriteLine(x.ToString());


string lpszParentClass = "Notepad";
string lpszParentWindow = "Untitled - Notepad";
string lpszClass = "Edit";

IntPtr ParenthWnd = new IntPtr(0);
IntPtr hWnd = new IntPtr(0);
ParenthWnd = FindWindow(lpszParentClass, lpszParentWindow);
if (ParenthWnd.Equals(IntPtr.Zero))
MessageBox.Show("Notepad Not Running");
else
{
MessageBox.Show("notepad is running");
}


}
}
}


الان تو اینجا برنامه Notepad پیدا میکنه حالا فرض کنید بجای notepad برنامه X همیشه always on top هست چطوری این خصوصیت top بودنشو ازش بگیریم ؟

lpWindowName که همون caption پنجره برنامه است ، lpszParentClass تابع FindWindow از کجا پیدا کنیم ؟