网站首页 > 文章中心 > 其它

vb.net输入法句柄_易语言无法获得输入法句柄

作者:小编 更新时间:2023-09-23 13:21:01 浏览量:168人看过

求vb.net句柄实例,实现操作其他程序窗口.如我给的例子

Imports?System.Text

Imports?System.Runtime.InteropServices

Public?Class?Form1

'?相关API函数声明,注释掉的这里没用到,但是也比较常用吧,这些函数的功能都能搜到.

Private?Delegate?Function?EnumChildProc(ByVal?hWnd?As?IntPtr,?ByVal?lParam?As?Integer)?As?Boolean

'?相关消息定义,也有没用到的

Const?WM_SETTEXT?=?HC

Const?WM_GETTEXT?=?HD

'Const?WM_CLOSE?=?H10

Const?BM_GETCHECK?=?HF0

Const?BM_SETCHECK?=?HF1

Const?BST_UNCHECKED?=?O0

Const?BST_CHECKED?=?O1

'?储存窗口句柄

Dim?WindowHandle?As?IntPtr

Dim?EditHandle?As?New?List(Of?IntPtr)

Dim?EditWindowsText?As?List(Of?String)

'?储存复选框句柄

Dim?CheckHandle?As?IntPtr?=?0

Private?Sub?Form1_Load(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.Load

Button1_Click(sender,?e)

End?Sub

'?EnumChildWindows?回调函数,该函数名作为API函数EnumChildWindows?的一个参数

Public?Function?EnumChildProcC(ByVal?hwnd?As?IntPtr,?ByVal?lParam?As?Integer)?As?Boolean

Dim?dwWindowClass?As?StringBuilder?=?New?StringBuilder(100)

'?获得某一个句柄的类名

GetClassName(hwnd,?dwWindowClass,?100)

EditHandle.Add(hwnd)????'?存储该句柄

End?If

'?返回?True?一直枚举完

Return?True

End?Function

Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click

WindowHandle?=?FindWindow(vbNullString,?"登陆")

MsgBox("未捕获到窗口"?◆?"登陆")

Return

EnumChildWindows(WindowHandle,?AddressOf?EnumChildProcC,?0)

'?寻找复选框

CheckHandle?=?FindWindowEx(WindowHandle,?IntPtr.Zero,?vbNullString,?"记住密码")

Dim?str?As?New?StringBuilder

Dim?j?As?Integer?=?0

For?j?=?0?To?EditHandle.Count?-?1

SendMessage(EditHandle(j),?WM_SETTEXT,?0,?"Text")

'EditWindowsText.Add(Str.ToString)

'Str.Clear()

Next

If?EditHandle.Count?=?0?Then

MsgBox("未找到输入框!")

End?If??

'CheckDlgButton(WindowHandle,?id,?1)

'?对复选框进行鼠标单击操作

SendMessage(CheckHandle,?BM_CLICK,?0,?0)

'SendMessage(CheckHandle,?BM_SETCHECK,?True,?0)

End?Class

vb.net 获取键盘输入的字符

参考方法如下,具体解释已经注解在代码中;

/定义变量

static int hKeyboardHook = 0;

HookProc KeyboardHookProcedure;

/*************************

* 声明API函数

* ***********************/

// 安装钩子 (using System.Runtime.InteropServices;)

public static extern int SetWindowsHookEx(int idHook,HookProc lpfn, IntPtr hInstance, int threadId);

// 卸载钩子

public static extern bool UnhookWindowsHookEx(int idHook);

// 继续下一个钩子

// 取得当前线程编号(线程钩子需要用到)

static extern int GetCurrentThreadId();

//钩子子程:就是钩子所要做的事情

{

if (nCode = 0)

/****************

//线程键盘钩子判断是否按下键

Keys keyData = (Keys)wParam;

// 键盘按下

}

// 键盘抬起

****************/

//全局键盘钩子判断是否按下键

wParam = = 0x100 // 键盘按下

wParam = = 0x101 // 键盘抬起

KeyMSG m = (KeyMSG) Marshal.PtrToStructure(lParam, typeof(KeyMSG));//键盘

// 今天这一节添加你想要做是事情(比如把键盘nCode记录下来,搞个邮件发送程序发到自己的邮箱去)

return 0;//如果返回1,则结束消息,这个消息到此为止,不再传递.如果返回0或调用CallNextHookEx函数则消息出了这个钩子继续往下传递,也就是传给消息真正的接受者

return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);

//键盘结构

public struct KeyMSG

public int vkCode; //键值

public int scanCode;

public int flags;

public int time;

public int dwExtraInfo;

// 安装钩子

public void HookStart()

if(hKeyboardHook == 0)

// 创建HookProc实例

KeyboardHookProcedure = new HookProc(KeyboardHookProc);

// 设置线程钩子

//************************************

//键盘线程钩子

//键盘全局钩子,需要引用空间(using System.Reflection;)

//

//关于SetWindowsHookEx (int idHook, HookProc lpfn, IntPtr hInstance, int threadId)函数将钩子加入到钩子链表中,说明一下四个参数:

//lpfn 钩子子程的地址指针.如果dwThreadId参数为0 或是一个由别的进程创建的线程的标识,lpfn必须指向DLL中的钩子子程. 除此以外,lpfn可

//以指向当前进程的一段钩子子程代码.钩子函数的入口地址,当钩子钩到任何消息后便调用这个函数.

//hInstance应用程序实例的句柄.标识包含lpfn所指的子程的DLL.如果threadId 标识当前进程创建的一个线程,而且子程代码位于当前

//进程,hInstance必须为NULL.可以很简单的设定其为本应用程序的实例句柄.

//threadedId 与安装的钩子子程相关联的线程的标识符.如果为0,钩子子程与所有的线程关联,即为全局钩子.

// 如果设置钩子失败

if(hKeyboardHook == 0 )

HookStop();

throw new Exception("SetWindowsHookEx failed.");

public void HookStop()

bool retKeyboard = true;

if(hKeyboardHook != 0)

retKeyboard = UnhookWindowsHookEx(hKeyboardHook);

hKeyboardHook = 0;

if (!( retKeyboard))

throw new Exception("UnhookWindowsHookEx failed.");

vb.net如何找到一个网页中的按钮的句柄

找到按钮不难,查找input,id是那个按钮的话就用DOM获取到,然后发送.click方法

VB.NET里怎么得到 当前应用程序句柄?

Visual Basic .NET 中 App 对象的更改

在vb.net中什么是窗口句柄 高手用通俗语言解释

句柄是 Windows 系统中的概念,和VB.NET无关.

通俗地讲,句柄就是一个数字,也就是一个编号.

比如说,你电脑中有10个窗口,每个窗口都会有一个编号,这是操作系统区分各个窗口的依据

vb.net 获取窗口文本输入框句柄怎么弄?

可以说下你要干哈吗?

我看了一下这个框框,里面只有一个类名为edit的,也就是你要获取的框框,应该比较简单的,只要你能找到他的爸爸就可以了.

以上就是土嘎嘎小编为大家整理的vb.net输入法句柄相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章