博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

2009年11月13日

摘要: 设计初衷: 公司为了便于网络管理,使用了IEEE 802.1X的网络访问控制,这样每次开机需要输入两次登录密码,于是我就研究了一下用C#来帮我输入第二此登录的密码 设计思想: 主要是通过调用Windows API中的一些方法,主要使用的也就是FindWindow,FindWindowEx和SendMessage这三个函数,循环遍历当前的所有窗口,找到目标窗口和进程以后把保存在特定位置的用户名密码以及域信息自动填入输入框中,然后再触发一下button事件,最后程序本身退出。 环境: 在Windows 2000中文版 + sp4,VS.net 2003中文版下开发 在Windows 2000中文版 阅读全文

posted @ 2009-11-13 23:48 codingsilence 阅读(241) 评论(0) 推荐(0) 编辑

摘要: WinForm 下我们可以调用MessageBox.Show 来显示一个消息对话框,提示用户确认等操作。在有些应用中我们需要通过程序来自动关闭这个消息对话框而不是由用户点击确认按钮来关闭。然而.Net framework 没有为我们提供自动关闭MessageBox 的方法,要实现这个功能,我们需要使用Window API 来完成。 首先我们需要找到这个消息对话框的窗口句柄,一个比较简单的方法就是用 FindWindow API 来查找对应的窗体句柄。 [DllImport("user32.dll", SetLastError = true)] static extern I 阅读全文

posted @ 2009-11-13 23:38 codingsilence 阅读(197) 评论(0) 推荐(0) 编辑

摘要: 最近发现我参与开发的基于.NET WinForm + WebService的呼叫中心应用程序如果客户端打开一个以上窗口的时候会出现非预期的异常.这促使我将我们的应用程序改进成同一时间内只允许有一个进程运行. 基本的原理上Google一搜一大把,无非是利用System.Diagnostics.Process.GetProcess()方法获取当先系统所有运行着的进程信息来进行判断.但是我们有一个特殊的要求,那就是如果发现已经有进程在运行着就把这个运行中进程的主窗体显示出来. 既然要获取当前进程的主窗体,那么就从Process类的属性着手, Process类有一个名为MainWindowHandl. 阅读全文

posted @ 2009-11-13 23:37 codingsilence 阅读(370) 评论(0) 推荐(0) 编辑

摘要: 最近写了一个随机模拟的计算程序,因为计算耗时很长,所以运算中要输出一些信息,以方便用户随时了解运算的进度以及其他信息。最初打算写一个log窗口类,使用textbox控件以及 progressbar,后来发现挺麻烦,远不及console窗口下的console.write和console.writeline方便。于是尝试直接将信息输出到控制台窗口。 1、 在winform程序中调用console窗口。这个使用Win32 API来完成。关于AllocConsole函数和FreeConsole函数的详细信息可以参见这里和这里。VB.NET的代码如下:Form程序调用和释放Console窗口Code . 阅读全文

posted @ 2009-11-13 23:29 codingsilence 阅读(4000) 评论(0) 推荐(0) 编辑

摘要: [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); public const int WM_SYSCOMMAND = 0x0112; public const int SC_MOVE = 0xF010; public const int HTCAP 阅读全文

posted @ 2009-11-13 23:27 codingsilence 阅读(215) 评论(0) 推荐(0) 编辑

摘要: 添加引用:using System.Diagnostics;using System.Runtime.InteropServices;定义: Process process = null; IntPtr appWin; private string exeName = ""; [DllImport("user32.dll", EntryPoint = "GetWindowThreadProcessId", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = t 阅读全文

posted @ 2009-11-13 23:00 codingsilence 阅读(2143) 评论(0) 推荐(0) 编辑

摘要: 其实很简单,就一个ToolTip控件就完成了.1.设置ToolTip的IsBalloon属性为true2.设置ToolTip所属的控件3.设置要显示的信息代码可参考如下:如在做用户登录时.//气泡提示登录名已经存在ttMsg.SetToolTip(txtLoginName, "该登录名已存在");//ttMsg为ToolTip控件,txtLoginName为文本框ttMsg.Show("该登录名已存在", txtLoginName); 阅读全文

posted @ 2009-11-13 22:45 codingsilence 阅读(6080) 评论(1) 推荐(0) 编辑