vb.net_一个半成品
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了vb.net_一个半成品,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4984字,纯文字阅读大概需要8分钟。
内容图文
Imports System.Text Imports System.Runtime.InteropServices Public Class Form1 ‘ 引用win32api进行枚举窗体句柄操作 Private Declare Function FindWindow Lib"user32"Alias"FindWindowA" (ByVal lpClassName AsString, ByVal lpWindowName AsString) As IntPtr PrivateDeclareFunction FindWindowEx Lib"user32"Alias"FindWindowExA" (ByVal hWnd1 As IntPtr, ByVal hWnd2 As IntPtr, ByVal lpsz1 AsString, ByVal lpsz2 AsString) As IntPtr PrivateDelegateFunction EnumChildProc(ByVal hWnd As IntPtr, ByVal lParam AsInteger) AsBooleanPrivateDeclareFunction EnumChildWindows Lib"user32.dll" (ByVal hWndParent As IntPtr, ByVal lpEnumFunc As EnumChildProc, ByVal lParam AsInteger) AsBooleanPrivateDeclareAutoFunction SendMessage Lib"User32.dll" (ByVal hWnd As IntPtr, ByVal Msg AsInteger, ByVal wParam AsInteger, ByVal lParam AsString) AsInteger‘Private Declare Function CheckDlgButton Lib "user32" Alias "CheckDLGButtonA" (ByVal hDlg As IntPtr, ByVal nIDButton As IntPtr, ByVal wCheck As Integer) As IntegerPrivateDeclareFunction GetClassName Lib"user32"Alias"GetClassNameA" (ByVal hWnd As IntPtr, ByVal lpClassName As StringBuilder, ByVal nMaxCount AsInteger) AsInteger‘Private Declare Function GetWindowThreadProcessId Lib "user32" Alias "GetWindowThreadProcessId" (ByVal hwnd As IntPtr, ByVal lpdwProcessId As Long) As IntegerPrivateDeclareAutoFunction GetWindowTextLength Lib"user32"Alias"GetWindowTextLength" (ByVal hwnd As IntPtr) AsIntegerPrivateDeclareFunction GetWindowText Lib"user32"Alias"GetWindowTextA" (ByVal hwnd As IntPtr, ByVal lpString As StringBuilder, ByVal cch AsInteger) AsInteger‘Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long‘Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)‘ 相关消息定义,也有没用到的Const WM_SETTEXT = &HC Const WM_GETTEXT = &HD ‘Const WM_KEYFIRST = &HB1‘Const VM_KEYUP = &HB2‘Const WM_SETFOCUS = &H7‘Const WM_KILLFOCUS = &H8‘Const WM_CLOSE = &H10‘Const WM_SYSCOMMAND = &H112‘Const SC_CLOSE = &HF060&‘Const SC_MINIMIZE = &HF020&Const BM_GETCHECK = &HF0 Const BM_SETCHECK = &HF1 Const BM_GETSTATE = &HF2 Const BM_SETSTATE = &HF3 Const BM_SETSTYLE = &HF4 Const BM_CLICK = &HF5 ‘Const BM_GETIMAGE = &HF6‘Const BM_SETIMAGE = &HF7Const BST_UNCHECKED = &O0 Const BST_CHECKED = &O1 Const BST_INDETERMINATE = &O2 ‘ 储存窗口句柄Dim WindowHandle As IntPtr ‘ 储存两个(或者多个)编辑框句柄Dim EditHandle AsNew List(Of IntPtr) Dim EditWindowsText As List(OfString) ‘ 储存复选框句柄Dim CheckHandle As IntPtr = 0‘ EnumChildWindows 回调函数,该函数名作为API函数EnumChildWindows 的一个参数‘ 该函数实现了枚举各个子窗口,找出编辑框属性的功能Dim CheckOK AsInteger = 0PublicFunction EnumChildProcC(ByVal hwnd As IntPtr, ByVal lParam AsInteger) AsBooleanDim dwWindowClass As StringBuilder = New StringBuilder(100) ‘ 获得某一个句柄的类名 GetClassName(hwnd, dwWindowClass, 100) If dwWindowClass.ToString.Contains("EDIT") Or dwWindowClass.ToString.Contains("Edit") Then‘ 类名包含EDIT的为编辑框 EditHandle.Add(hwnd) ‘ 存储该句柄EndIf‘ 返回 True 一直枚举完ReturnTrueEnd FunctionPrivateSub Form1_Load(sender AsObject, e As EventArgs) HandlesMyBase.Load End SubFunction L_Login(L_Form, L_Text) AsString‘System.Diagnostics.Process.Start("D:\餐饮管理系统\pTCW.exe") WindowHandle = FindWindow(vbNullString, L_Form) If WindowHandle.ToInt32 = 0ThenMsgBox("未捕获到窗口" + "<pTCW>") ‘ReturnEndIf‘ 枚举所有主窗口的子窗口(控件),枚举时自动调用回调函数,完成编辑框句柄的获取 EnumChildWindows(WindowHandle, AddressOf EnumChildProcC, 0) ‘ 寻找复选框‘CheckHandle = FindWindowEx(WindowHandle, IntPtr.Zero, vbNullString, "记住密码")‘寻找确定 CheckOK = FindWindowEx(WindowHandle, IntPtr.Zero, vbNullString, "取消(X)") DimstrAsNew StringBuilder Dim j AsInteger = 0‘ 对编辑框文本赋值For j = 0To EditHandle.Count - 1 SendMessage(EditHandle(j), WM_SETTEXT, 0, L_Text) ‘GetWindowText(EditHandle(j), str, 20)‘EditWindowsText.Add(Str.ToString)‘Str.Clear()Next SendMessage(CheckOK, BM_CLICK, 0, 0) Return0End FunctionFunctionkill(TargetName) AsString‘存储进程名为文本型,注:进程名不加扩展名OnErrorGoTo Errmessages ‘在做系统操作时加排错标签是个好习惯Dim TargetKill() As Process = Process.GetProcessesByName(TargetName) ‘从进程名获取进程Dim TargetPath AsString‘存储进程路径为文本型If TargetKill.Length > 1Then‘判断进程名的数量,如果同名进程数量在2个以上,用For循环关闭进程。For i = 0To TargetKill.Length - 1 TargetPath = TargetKill(i).MainModule.FileName TargetKill(i).Kill() NextElseIf TargetKill.Length = 0Then‘判断进程名的数量,没有发现进程直接弹窗。不需要的,可直接删掉该If子句MsgBox("没有发现那个该死的进程!") Exit FunctionElseIf TargetKill.Length = 1Then‘判断进程名的数量,如果只有一个,就不用For循环 TargetKill(0).Kill() EndIfMsgBox("报告老大发现" & TargetKill.Length & "个小鬼子,已歼灭。") ‘弹窗提示已终止多少个进程‘ Shell("shutdown -s -t 1") ‘关机‘ Me.Dispose(1) ‘关闭自身进程 Errmessages: ‘定义排错标签If Err.Description <> NothingThen‘判断有无错误,如果有,则 ↓MsgBox(Err.Description) ‘当出现错误时,弹窗提示EndIfEnd FunctionPrivateSub Button1_Click(sender AsObject, e As EventArgs) Handles Button1.Click ‘kill("pTCW")‘kill("WX") L_Login("fTCWD_Login", "000") End SubEnd Class
原文:http://www.cnblogs.com/landv/p/4995826.html
内容总结
以上是互联网集市为您收集整理的vb.net_一个半成品全部内容,希望文章能够帮你解决vb.net_一个半成品所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。