VB.NET自动操作其他程序(1)--相关引用及常量定义

对于一直觉得科技就是要提高生产力的我这个硬件工程师来说,要编写这些更复杂的程序,真是件吃力不讨好的事,好在,我不需要赶时间,有空兴趣就搞一下,没空没心情完全可以不用理,最近,因为工作上又有了相关需要(非必要的需要、完全出于个人爱好),才又拾起心情,继续之前一直未完成的事情,这次,总算有了进展,一直未解决的问题,得到了解决。
本次实现如下功能:
1、捕获其他程序窗口句柄
2、单击其他程序的菜单
3、读取其他软件listview控件的内容
4、设置其他程序的下拉框的选择
5、设置其他程序Edit框的值
6、单击其他程序按钮
 
1、添加相关引用:
Imports System.Collections.Generic 
Imports System.ComponentModel 
Imports System.Data 
Imports System.IO 
Imports System.Drawing 
Imports System.Linq 
Imports System.Text 
‘Imports System.Threading.Tasks 
Imports System.Threading.Thread 
Imports System.Windows.Forms 
Imports System.Runtime.InteropServices

2、首先定义相关常量(相关常量的定义,可以从c语言的头文件windows.h 、winbase.h 、commdlg.h 、commctrl.h 、winuser.h 等中找到):
     Private Const LVIS_SELECTED As UInteger = &H2 
    Private Const LVM_FIRST As UInteger = &H1000 
    Private Const HDM_FIRST As UInteger = &H1200 ‘// Header messages 
    Private Const HDM_GETITEMA As UInteger = (HDM_FIRST + 3) 
    Private Const HDM_GETITEMW As UInteger = (HDM_FIRST + 11) 
    Private Const HDM_GETITEM As UInteger = HDM_GETITEMW 
    ‘获取列表头内的内容 
    Private Const LVM_GETHEADER As UInteger = LVM_FIRST + 31 
    Private Const LVM_GETITEMCOUNT As UInteger = LVM_FIRST + 4 
    ‘获取列表行数 
    Private Const LVM_GETITEMTEXT As UInteger = LVM_FIRST + 45 
    ‘获取列表内的内容 
    Private Const LVM_GETITEMW As UInteger = LVM_FIRST + 75

Private Const LVM_SETITEMSTATE As UInteger = LVM_FIRST + 43

Private Const HDM_GETITEMCOUNT As UInteger = &H1200 
    ‘获取列表列数 
    Private Const PROCESS_VM_OPERATION As UInteger = &H8 
    ‘允许函数VirtualProtectEx使用此句柄修改进程的虚拟内存 
    Private Const PROCESS_VM_READ As UInteger = &H10 
    ‘允许函数访问权限 
    Private Const PROCESS_VM_WRITE As UInteger = &H20 
    ‘允许函数写入权限 
    Private Const MEM_COMMIT As UInteger = &H1000 
    ‘为特定的页面区域分配内存中或磁盘的页面文件中的物理存储 
    Private Const MEM_RELEASE As UInteger = &H8000 
    Private Const MEM_RESERVE As UInteger = &H2000 
    ‘保留进程的虚拟地址空间,而不分配任何物理存储 
    Private Const PAGE_READWRITE As UInteger = 4 
    Public WithEvents ListView1 As System.Windows.Forms.ListView 
    Friend WithEvents Button1 As System.Windows.Forms.Button

Private LVIF_TEXT As Integer = &H1 
    Private LVIF_IMAGE As Integer = &H2 
    Private LVIF_PARAM As Integer = &H4 
    Private LVIF_STATE As Integer = &H8

Private Const HDI_TEXT = &H2

Private Const LVM_SETITEMTEXTA As UInteger = LVM_FIRST + 46 
    Private Const LVM_SETITEMTEXTW As UInteger = LVM_FIRST + 116 
    Private Const LVM_SETITEMTEXT As UInteger = LVM_SETITEMTEXTW 
    Friend WithEvents Button2 As System.Windows.Forms.Button 
    Friend WithEvents Button3 As System.Windows.Forms.Button 
    Private Const LVIS_STATEIMAGEMASK As UInteger = &HF000 
    ‘#define LVM_SETITEMTEXTA        (LVM_FIRST + 46) 
    ‘#define LVM_SETITEMTEXTW        (LVM_FIRST + 116)

‘#ifdef UNICODE 
    ‘#define  LVM_SETITEMTEXT        LVM_SETITEMTEXTW 
    ‘#else 
    ‘#define  LVM_SETITEMTEXT        LVM_SETITEMTEXTA 
    ‘#End If

Private Const WM_SYSCOMMAND = &H112 
    Friend WithEvents Timer1 As System.Windows.Forms.Timer 
    Private components As System.ComponentModel.IContainer 
    Private Const WM_COMMAND = &H111 
    Private Const WM_SETTEXT = &HC 
    Private Const BM_CLICK = &HF5 
    Private Const CB_SETCURSEL = &H14E

Dim headerhwnd As Integer 
    ‘listview控件的列头句柄 
    Private hwnd As Integer 
    ‘窗口句柄 
    Private process As Integer 
    ‘进程句柄 
    Private pointer As Integer

时间: 2024-08-19 10:17:03

VB.NET自动操作其他程序(1)--相关引用及常量定义的相关文章

VB.NET自动操作其他程序(3)--捕获窗口句柄、单击菜单、按钮、COMBOBOX、EditBox

4.1.捕获其他程序窗口句柄要对其他程序进行操作,首先要捕获其他程序的窗口句柄.‘查找标题栏包含“inWindowText  ”  的窗口,窗口标题内容不确定的可以使用,例如动态变化标题的窗口,如果标题固定,直接用FindWindowEx()就可以了.Public Function MyFindWindow(ByVal className As String, ByVal inWindowText As String) As Integer   '查找标题栏包含“inWindowText”的窗口

VB.NET自动操作其他程序(4)--读取、设置其他软件listview控件的内容

4.3.读取其他软件listview控件的内容 4.3.0.根据窗口句柄,获取进程Id,打开并插入进程,申请代码的内存区,返回申请到的虚拟内存首地址        Dim processId As Integer         '进程pid           hwnd = FindWindow("#32770", "Windows 任务管理器")       '获取任务管理器窗口句柄,注释By Lyh         hwnd = FindWindowEx(hw

C# 系统应用之鼠标模拟技术及自动操作鼠标

游戏程序的操作不外乎两种--键盘输入控制和鼠标输入控制,几乎所有游戏中都使用鼠标来改变角色的位置和方向,本文主要是讲述如何使用C#调用Windows API函数实现鼠标模拟操作的功能.首先通过结合FindWindow和FindWindowEx寻找到窗体的按钮,在通过SetCursorPos或mouse_event函数操作鼠标,同时涉及到通过spy++工具获取窗体消息的信息. 一. Windows API函数介绍 .NET没有提供改变鼠标指针位置.模拟单机操作的函数,但是可以通过调用Windows

[渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序更新相关数据

这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第六篇:为ASP.NET MVC应用程序更新相关数据 原文: Updating Related Data with the Entity Framework in an ASP.NET MVC Application 译文版权所有,谢绝全文转载--但您可以在您的网站上添加到该教程的链接. 在之前的教程中您已经成功显示了相关数据.在本教程中

使用MyBatis-Gererator自动生成Dao.Model.Mapping相关文件

一.在MyEclipse中使用Maven项目下使用MyBatis-Gererator自动生成Dao.Model.Mapping相关文件 1.关于Mybatis-Generator的下载可以到这个地址:https://github.com/mybatis/generator/releases 2.查找能够匹配maven的下载配置文件,将匹配的相关文件配置到maven项目下的pom.xml文件中 3.复制以下二中的generatorConfig.xml文件,到myEclipse中创建的maven项目

[转]C# 系统应用之鼠标模拟技术及自动操作鼠标

原文网址: C# 系统应用之鼠标模拟技术及自动操作鼠标        游戏程序的操作不外乎两种——键盘输入控制和鼠标输入控制,几乎所有游戏中都使用鼠标来改变角色的位置和方向,本文主要是讲述如何使用C#调用Windows API函数实现鼠标模拟操作的功能.首先通过结合FindWindow和FindWindowEx寻找到窗体的按钮,在通过SetCursorPos或mouse_event函数操作鼠标,同时涉及到通过spy++工具获取窗体消息的信息. 一. Windows API函数介绍 .NET没有提

[渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据

这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第六篇:为ASP.NET MVC应用程序读取相关数据 原文:Reading Related Data with the Entity Framework in an ASP.NET MVC Application 译文版权所有,谢绝全文转载--但您可以在您的网站上添加到该教程的链接. 在之前的教程中您已经完成了学校数据模型.在本教程中你将

VBS脚本和HTML DOM自动操作网页

VBS脚本和HTML DOM自动操作网页 2016-06-16 10:24 1068人阅读 评论(0) 收藏 举报  分类: Windows(42)  版权声明:本文为博主原创文章,未经博主允许不得转载. 本来是想通过JS实现对其他页面的控制,发现跨域无法获取页面DOM来操作.接着考虑bat,发现也实现不了,于是想到vbs.vbs还是很强大啊,病毒之类很多都是vbs脚本啊.vbs打开浏览器,然后通过dom来操作页面,可以实现自动填写内容和按钮点击等.摸索了几个常用的,代码如下: 1.网页文本框赋

Excel文档间的数据替换 ---电脑版APP 自动操作魔法师

http://www.won-soft.com/macro/solution/excel-data-replace.htm 介绍: 在我们的日常工作中, 可能经常需要使用同各种数据表格打交道.比如财务工作中各种数据表格, 生产管理上的各种生产数据统计表,以前人力资源部的工资表等等.在处理这些数据的过程中, 我们可能经常会遇到要做一张表,但这张表的数据需要从另一张表上取,每个数据间有一些相关联的规则,举例来说: 年底一般都会做工资统计表,列出所有员工的全年的各种奖金总计.全年应发工资.实发工资.扣