获取弹出框的句柄,关闭弹出框

大家可能有过这样的需求,有的弹出框可能需要手动关闭,这样非常麻烦,我参考相关资料,用C# 程序自动关闭弹出框的例子,供大家参考

 1 //获取弹出框的句柄,并隐藏函数。
 2 using System.Runtime.InteropServices;//这个是必须的命名空间。
 3 class SearchWindow
 4     {
 5
 6         private const int WM_Close = 0x0010;
 7         [DllImport("User32.dll ", EntryPoint = "FindWindow")]
 8         private static extern IntPtr FindWindow(string lpClassName,
 9         string lpWindowName);
10         [DllImport("user32.dll", EntryPoint = "SendMessageA")]
11         private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, string lParam);
12         public SearchWindow()
13         {
14
15         }
16         public void closeWindow(string lpClassName, string lpWindowName)
17         {
18
19            IntPtr  Mhandle= FindWindow(null, lpWindowName);
20            if (Mhandle != IntPtr.Zero)
21                SendMessage(Mhandle, WM_Close, IntPtr.Zero, null);
22            else
23            {
24                return;
25            }
26         }
27     }
28 ////隐藏控制台
29
30 using System.Runtime.InteropServices;//这个是必须的命名空间。
31
32
33 class ShadeConsole
34     {
35         [DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)]
36         static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);
37         [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
38         public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
39         public void shade()
40         {
41             Console.Title = "consoleWin";
42             IntPtr cwInptr = FindWindow("ConsoleWindowClass", "consoleWin");
43             if (cwInptr != IntPtr.Zero)
44             {
45                 ShowWindow(cwInptr, 0);
46             }
47         }
48     }
49
50 ///多线程的实现,关闭到messagebox或者其他的窗体;
51
52 using System.Threading;//多线程必要的。
53
54 public static class MultiThread
55     {
56         public static void dowork()
57         {
58
59             ThreadPool.QueueUserWorkItem(new WaitCallback(s => {
60                 while (true)
61                 {
62                     SearchWindow sss = new SearchWindow();
63                     // Thread.Sleep(200);
64                     s = null;
65                     sss.closeWindow("DidiSoft.Pgp.PGPLib", "DidiSoft OpenPGP Library for .NET");
66                 }
67             }));
68         }
69 }

/////用法简介:

1》调用 MultiThread. Dowork();

2》       这弹出框前调用     Messagebox.show(“message”,”title”));

3》      因为弹出框会阻塞主线程。所以其他的线程调用要在主线程之前启动,让他一直垂询主线程。去获得句柄。

Tip: 这是使用开源的的pgp加密文件,它有个时间验证,特别麻烦,所以就想了,一招来关闭弹出框。谢谢!

时间: 2024-10-17 17:24:00

获取弹出框的句柄,关闭弹出框的相关文章

layer 打开关闭弹出窗口与获取父窗口值

一.首先引用js文件 <script src="../../js/common/layer/layer.js"></script> 二.全屏调用以下代码 var index = layer.open({                       type: 2,                       content: url,                       area: ['300px', '195px'],                 

点击datagrid弹出ldhdialog,点击弹出框的按钮,关闭且刷新datagrid

datagrid里的js这么写 //点击添加按钮触发 function superadd(title,addurl,gname,width,height) { gridname=gname; createwindow(title, addurl,width,height); }//点击修改按钮触发function superupdate(title,url, id,width,height,isRestful) { gridname=id; var rowsData = $('#'+id).da

javascript只弹出一次框 再次刷新不弹出

.打开页面自动弹出  当关闭弹框的时候  设置cookie生存时间  再次刷新页面判断cookie是否失效 <html> <head> <meta charset="utf-8" /> <title>LIGHTBOX EXAMPLE</title> <style> .black_overlay{ display: none; position: absolute; top: 0%; left: 0%; width:

ios11,弹出层内的input框光标错位 键盘弹出时,输入信息,光标一直乱跳

之前开发了一个微信项目,维护期中苹果手机突然出现光标错位现象,经过排查,发现是最新的ios11系统的锅. 具体情况:弹出层使用position: fixed:弹出层内附带input/textarea输入框,ios11系统的苹果机用户在点击输入框,出现键盘后,弹出层被顶上去,而光标还停留在原处,即出现错位情况. 解决思路: 解决光标错位:弹出层设置为position: absolute:body添加position: fixed; 弹出层重新定位:获取滚动条高度,设置为弹出层Top值: funct

layer实现关闭弹出层刷新父界面功能详解

方案一: 在layer弹出层中调用父界面重新加载函数 ? 1 2 3 window.parent.location.reload(); varindex = parent.layer.getFrameIndex(window.name); parent.layer.close(index); 方案二: 调用layer插件的end回调方法: end - 层销毁后触发的回调 类型:Function,默认:null 无论是确认还是取消,只要层被销毁了,end都会执行,不携带任何参数. 父窗口打开lay

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中(一)

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中,这个问题分一下几步走 1.将弹出框真分页后复选框选择的数据保存. 2.将弹出框保存的数据传到父页面上. 3.将数据在父页面上显示. 4.点击保存将信息存入数据库中. 首先来第一步将弹出框真分页后复选框选择的数据保存. 思路很简单就是先真分页,然后在点击下一页的时候扫描这一页所有点击复选框的数据保存到一个变量数组中.下面就是主要代码: ASP代码: <%@ Page Language="C#" AutoEventWire

实现移动端弹出层弹出的时候页面不能滑动,关闭弹出层时页面恢复滑动

思路是:显示弹层时,禁用触摸事件 在你显示弹出框的时候:添加: function ShowDiv() { window.ontouchmove = function(e) { e.preventDefault && e.preventDefault(); e.returnValue = false; e.stopPropagation && e.stopPropagation(); return false; } } 在关闭弹层时,添加: function CloseDiv

按esc键关闭弹出层

jquery中获取键盘按键 测试浏览器:IE6/IE7/IE8,FireFox,Chrome,Opera $(document).keyup(function(e){ var key =  e.which; if(key == 27){ alert('按下了ESC键,关闭弹出层'); } }); 或者(这个只在:IE8,FireFox,Chrome测试过) $(document).keyup(function(e){ if (e.keyCode == 27) { alert('按下了ESC键,关

javascript关闭弹出窗口时刷新父窗口和居中显示弹出窗

居中显示用到了moveTO()方法: 关闭弹出窗时刷新父窗口用到了window.opener方法: 父窗口代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="弹出窗口.aspx.cs" Inherits="弹出窗口" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti