使用wincc C脚本查找窗口句柄的方法
阅读原文时间:2023年07月10日阅读:1

关于窗口句柄的用法,网上可以搜到很多相关的文章,本文以windows API接口函数为例,简单介绍一下基本使用,主要包括找到此窗体,在找到的窗体写入数据,对窗体进行关闭,最大化,最小化的操作;

1.利用窗口句柄找到窗体:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "apdefap.h"

HWND wnd;//定义一个窗口句柄变量,用以存储找到的窗口句柄

//网上文章解释; 函数FINDWindow:    HWND WINAPI FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName);

//第一个参数填窗口的类名,第二个填窗口的标题名,其实是不需要同时填两个参数的,也就是说,你只要知道窗口的类名或窗口的标题就可以了,没有的那个就用NULL代替。

wnd=FindWindow(NULL,"1.txt - 记事本");//获得窗口名为"无标题.txt - 记事本"的窗口句柄,名称可通过任务管理器中的应用程序名找到
printf("the wnd value is %d",wnd);

//wnd为0代表未发现此句柄,值>0说明有此句柄
if (wnd==0 )
MessageBox(wnd,"此窗体未打开!","提示",MB_OK);
else
MessageBox(wnd,"已找到此窗体!","提示",MB_OK);

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

2.发送消息或者改变窗体状态

SendMessage(wnd,WM_CLOSE,0,0);//调用SendMessage函数,发送一个WM_CLOSE(关闭)消息给wnd窗口句柄。

函数定义:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
第一个参数是窗口句柄,第二参数个是消息类型,下面的消息表列举了所有消息,第三,四个参数是消息附带信息,解释依赖于消息类型,比如一个字符消息(WM_CHAR),那么第三个参数就储存有一个字符的ASCII码。

ShowWindow(wnd,SW_HIDE);

函数定义BOOL ShowWinow(HWND hWnd,int nCmdShow);
SW_HIDE:隐藏窗口并激活其他窗口。第一个参数hWnd指明了窗口句柄,第二个参数指明了窗口的状态,现在给出第二个参数常用取值范围:
  SW_MAXIMIZE:最大化指定的窗口。
  SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。
  SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定;

窗口句柄的操作方式和操作类型非常多,本文只是简易描述了最简单的找到句柄方法及简单改变窗口的形式供大家了解!