name="hWnd" 窗口句柄 /...

作者:澳门娱乐

调用user32.dll展现其余窗口,调用user32.dll窗口

 1 /// 该函数设置由不同线程产生的窗口的显示状态
 2         /// </summary>
 3         /// <param name="hWnd">窗口句柄</param>
 4         /// <param name="cmdShow">指定窗口如何显示。查看允许值列表,请查阅ShowWlndow函数的说明部分</param>
 5         /// <returns>如果函数原来可见,返回值为非零;如果函数原来被隐藏,返回值为零</returns>
 6         [DllImport("User32.dll")]
 7         private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
 8         /// <summary>
 9         ///  该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。
10         ///  系统给创建前台窗口的线程分配的权限稍高于其他线程。 
11         /// </summary>
12         /// <param name="hWnd">将被激活并被调入前台的窗口句柄</param>
13         /// <returns>如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,返回值为零</returns>
14         [DllImport("User32.dll")]
15         private static extern bool SetForegroundWindow(IntPtr hWnd);
16 
17 private void BringToFront(IntPtr hWnd)
18         {
19             //Process currentProcess = Process.GetCurrentProcess();
20             //Process process = Process.get(id);
21             //if (process != null)
22             //{
23             //    ShowWindowAsync(process.MainWindowHandle, 1);//显示
24             //    SetForegroundWindow(process.MainWindowHandle);//当到最前端
25             //}
26             Process[] Processes = Process.GetProcesses();// GetProcessesByName(currentProcess.ProcessName);
27             foreach (Process process in Processes)
28             {
29                 //process.Start();
30                 //if (process.Id != currentProcess.Id)
31                 //{
32                 //                    if (Assembly.GetExecutingAssembly().Location.Replace("/", "\")
33                 //34                 //                    {
35                 //                        return process;
36                 //                    }
37                 if (process.MainWindowHandle.ToString() == "0")
38                 {
39                     continue;
40                 }
41                 if (process.MainWindowHandle == hWnd)
42                 {
43                     ShowWindowAsync(process.MainWindowHandle, 1);//显示
44                     SetForegroundWindow(process.MainWindowHandle);//当到最前端
45                 }
46                 //}
47             }
48         }

 

1 /// 该函数设置由区别线程发生的窗口的显示状态 2 /// /summary 3 /// param name="hWnd" 窗口句柄 /...

Win32 API概念:即为Microsoft 33人平台的应用程序编制程序接口(Application Programming Interface)。所有在Win32阳台上运维的应用程序都足以调用那一个函数。

Win32 API作用:应用程序能够尽量开掘Windows的三19位操作系统的潜质。 Mircrosoft的全数三10个人平台都扶持统意气风发的API,满含函数、结构、音信、宏及接口。使用 Win32 API不光能够支付出在各个平台上都能成功运转的应用程序,并且也得以足够利用各类平台湾特务有的法力和属性。

Win32 API分:1、窗口管理 2、窗口通用调整3、Shell性情 4、图表设备接口 5、系统服务 6、国际天性 7、网络服务 

 

Win32 API使用:**C#中央银行使DllImport关键字引进包蕴非托管方法的 DLL 的名号。举例user32.dll。

 

user32.dll概念:user32.dll是Windows客商分界面相关应用程序接口,用于包括Windows管理,基本客商分界面等天性,如创制窗口和殡葬音信。

 

由此案例演示怎么着运用user32.dll关闭“MyLove”那个程序,首先引进命名空间

1 using System.Windows.Forms;
2 using System.Runtime.InteropServices;

因此DllImport引进user32.dll,那是基本代码

 1 [DllImport("User32.dll", EntryPoint = "FindWindow")]
 2 private static extern int FindWindow(string lpClassName, string lpWindowName);
 3 private static void CloseWin()
 4 {
 5     const int WM_CLOSE = 0x10;   //关闭
 6     const uint WM_DESTROY = 0x02;
 7     const uint WM_QUIT = 0x12;
 8     const int BM_CLICK = 0xF5;  //单击
 9     IntPtr Window_Handle = (IntPtr)FindWindow(null, "MyLove");//查找所有的窗体,看看想查找的句柄是否存在,Microsoft Word  句柄              
10     if (Window_Handle == IntPtr.Zero)   //如果没有查找到相应的句柄
11     {
12         MessageBox.Show("没有找到窗体");
13     }
14     else    //查找到相应的句柄
15     {
16         SendMessage(Window_Handle, WM_CLOSE, 0, 0);   //关闭窗体
17     }
18 }

调节台住函数入口处进行调用

1 static void Main(string[] args)
2 {
3     Console.Title = "关闭其他窗体";
4     CloseWin();
5 }

参考澳门娱乐6165,:.Net中C#的DllImport的使用、user32.dll

 

 

 

 

本文由澳门娱乐6165发布,转载请注明来源

关键词: