易语言如何取出父窗口句柄下的子句柄??FindWindowEx函数功能:该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配 。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始 。在查找时不区分大小写 。函数原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow);参数;hwndParent:要查找子窗口的父窗口句柄 。如果hwndParent为NULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口 。Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口 。hwndChildAfter :子窗口句柄 。查找从在Z序中的下一个子窗口开始 。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口 。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始 。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口 。lpszClass:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针 。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员 。该成员为16位,必须位于lpClassName的低16位,高位必须为0 。lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串 。如果该参数为 NULL,则为所有窗口全匹配 。返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄 。如果函数失败,返回值为NULL 。
如何用findwindowex遍历某个窗口里的所有子窗口for (HWND hChildWnd = ::GetTopWindow(m_hWnd); hChildWnd != NULL; hChildWnd = ::GetNextWindow(hChildWnd, GW_HWNDNEXT)) { CWnd* pWnd = CWnd::FromHandle(hChildWnd); if (pWnd != NULL) { //... } }
如何使用FindWindowEx获取窗体内控件句柄一般用FindWindow 。。。
Delphi中获取其它进程的窗口句柄,在Delphi中获取其它进程的窗口句柄,绝大部分人首先想到的会使用:FindWindow或者用GetWindow来遍历查找,如:
Delphi/Pascal code?
handle := FindWindow(nil,PChar('窗口的标题'));
或者:
Delphi/Pascal code?
procedure TForm1.Button1Click(Sender: TObject);
var
hCurrentWindow: HWnd;
WndText:String;
begin
hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);
while hCurrentWindow0 do
begin
WndText:=GetWndText(hCurrentWindow);
if UpperCase(WndText)='窗口的标题' then begin
...
...
end;
hCurrentWindow:=GetWindow(hCurrentWindow, GW_HWNDNEXT);
end;
end;
因为目前网络上绝大部分的代码都是介绍用这两种方法取得其它进程的窗口句柄 。虽这两种方法都可以达到查找其它进程的窗口句柄的目的,但本人认为这两都方法存在较大的弊端 。因为这两种方法都是根据其它进程的标题来查找的,如果其它进程的标题在运行时不断的发生变化,那么这两种方法就无法没办法用了 。
介绍第三种通过进程的文件名来查找窗口句柄 。首先通过进程快照得到要查找的进程ID(ProcessId),其次,再跟据ProcessId获取进程的窗口句柄 。以下为本文章的代码:
Delphi/Pascal code?
uses TLHelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
ProcessName : string; //进程名
FSnapshotHandle:THandle; //进程快照句柄
FProcessEntry32:TProcessEntry32; //进程入口的结构体信息
ContinueLoop:BOOL;
MyHwnd:THandle;
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //创建一个进程快照
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32); //得到系统中第一个进程
//循环例举
while ContinueLoop do
begin
ProcessName := FProcessEntry32.szExeFile;
if(ProcessName = '要找的应用程序名.exe') then begin
MyHwnd := GetHWndByPID(FProcessEntry32.th32ProcessID);
...
...
end;
ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);//释放快照句柄
end;
//跟据ProcessId获取进程的窗口句柄
function TForm1.GetHWndByPID(const hPID: THandle): THandle;
type
PEnumInfo = ^TEnumInfo;
TEnumInfo = record
ProcessID: DWORD;
HWND: THandle;
end;
function EnumWindowsProc(Wnd: DWORD; var EI: TEnumInfo): Bool; stdcall;
var
PID: DWORD;
begin
GetWindowThreadProcessID(Wnd, @PID);
Result := (PIDEI.ProcessID) or
(not IsWindowVisible(WND)) or
(not IsWindowEnabled(WND));
if not Result then EI.HWND := WND;
end;
function FindMainWindow(PID: DWORD): DWORD;
var
EI: TEnumInfo;
begin
EI.ProcessID := PID;
EI.HWND := 0;
EnumWindows(@EnumWindowsProc, Integer(@EI));
Result := EI.HWND;
end;
begin
if hPID0 then
Result:=FindMainWindow(hPID)
else
Result:=0;
end;
我说的是组件的句柄,不是窗体的句柄
findwindowex();获取指定句柄窗口下的子控件,当然是有句柄的控件
窗体的句柄都知道,还能不知道里面组件的句柄?——windows标准组件
procedure TForm1.Button2Click(Sender: TObject);
var
canvas1: TCanvas;
begin
Canvas1 := TCanvas.Create;
//这是OK 。这真要感谢baidu,google
canvas1.Handle:= GetDc(panel1.Handle);
canvas1.TextOut(1,1,'hello');
canvas1.Free ;
Form1.Canvas.TextOut(10,10,'fff');
end;
有的组件是没有句柄的
ShowMessage(IntToStr(TWinControl(Form1.FindChildControl('Panel1')).Handle));
易语言如何取窗口句柄(不用模块)FindWindowExA
怎么使用FindWindowEx获取窗体内控件句柄如果不用鼠标获取,可以先知道窗口的类名,用函数GetClassName,然后用FindWindow来取句柄
获得文本框中的文本的句柄的方法,请高手指示 VC++&&WINAPI文本的句柄?文本还有句柄,如果是要得到文本框的句柄可以用GetDlgItem函数;
如果你想得到里面的文本内容可以这样:
MFC的方法:
CString str;
GetDlgItem(IDC_EDIT)->GetWindowText(str); //str里就是文本的内容了
这样就可以了 。
补充:
你补充的描述,我还是不是太明白,最后的目的不就是为了得到文本框或编辑框中的字符吗,如果是这样的话,用我上面的方法完全就可以了 。
首先如果有一个编辑框,你在其中输入的大量的字符,而你不执行任何操作的话,程序是无法获得这些字符的 。使用GetWindowText函数后,就把这些字符全部存放到了变量str中 。str是一个CString类型的变量,它的内存大小是根据字符串的多少自动分配的,这样还省了你自己分配内存呢 。
如果想得到这些字符串的大小,可以使用CString类的GetLength函数:
int nLength = str.GetLengeh();//得到输入的字符串长度
另外CString类中还有很多字符串处理的函数方便你的调用 。
如何获得一个文本框的句柄?最好用VC来做,因为要写钩子 。
建议先用SPY++试试,应该能找到你要的Text,然后写一个钩子就可以啦
vb 知道了文本框控件句柄,如何将焦点设置于该文本框之上?FunctionSetActiveWindowLib"user32.dll"(ByValhwndAsLong)AsLong
SetActiveWindow (Phwnd)
SetForegroundWindow (Phwnd)
在新线程中怎么获取文本框的控制句柄?DWORD WINAPI initSocker(LPVOID lpvoid) {
CMySocketDlg* pWnd = (CMySocketDlg*)lpvoid;
XXX xxx = pWnd->m_MSG;//m_MSG究竟是什么东西,控制句柄?楼主没解释明白,这里用XXX表示,貌似:HWND hWndEdit = pWnd->m_MSG;???
//如果要修改m_MSG,请使用“&”操作符--->XXX& xxx = pWnd->m_MSG;
...
}
CMySocketDlg::CMySocketDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMySocketDlg::IDD, pParent)
{
...
CreateThread(NULL, NULL, initSocker, (LPVOID)this, NULL, NULL);
...
}
如何获得对话框中编辑框句柄hEdit1 = GetDlgItem(GUI_ID_EDIT1)->m_hWnd;
VB中findwindowex函数的用法 。。FindWindowEx函数
函数功能:在窗口列表中寻找与指定条件相符的第一个子窗口。
该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配 。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始 。在查找时不区分大小写 。
参数:(1)hwndParent:要查找的子窗口所在的父窗口的句柄(如果设置了hwndParent,则表示从这个hwndParent指向的父窗口中搜索子窗口) 。
如果hwndParent为 0,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口 。
Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口 。
(2)hwndChildAfter :子窗口句柄 。查找从在Z序中的下一个子窗口开始 。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口 。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始 。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口 。
(3)lpszClass:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针 。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员 。该成员为16位,必须位于lpClassName的低16位,高位必须为0 。
(4)lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串 。如果该参数为 NULL,则为所有窗口全匹配 。
返回值:Long,找到的窗口的句柄 。如未找到相符窗口,则返回零 。会设置GetLastError
如果函数成功,返回值为具有指定类名和窗口名的窗口句柄 。如果函数失败,返回值为NULL 。
若想获得更多错误信息,请调用GetLastError函数 。
声明:1.VB 声明
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
2.C# 声明
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);
3.VB .NET 声明
_
Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _
ByVal childAfter As IntPtr, _
ByVal lclassName As String, _
ByVal windowTitle As String) As IntPtr
End Function
相关例子:
'Example Name: Changing a VB Toolbar to a Rebar-Style Toolbar
BAS Moduel Code
Option Explicit
Public Const WM_USER= &H400
Public Const TB_SETSTYLE = WM_USER + 56
Public Const TB_GETSTYLE = WM_USER + 57
Public Const TBSTYLE_FLAT = &H800
Public Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Public Declare Function FindWindowEx Lib "user32" _
Alias "FindWindowExA" _
(ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
'--end block--'
' Form Code
Option Explicit
Private Sub Form_Load()
With Combo1
.Width = Toolbar1.Buttons("combo1").Width
.Top = (Toolbar1.Height - Combo1.Height) \ 2
.Left = Toolbar1.Buttons("combo1").Left
.AddItem "Black" ' Add colours for text.
还是findwindowex问题,能详细说一下各参数用法吗啊?谢谢FindWindowEx
函数功能:该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配 。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始 。在查找时不区分大小写 。
函数原型:HWND FindWindowEx(HWND1 hwndParent,HWND2 hwndChildAfter,LPCTSTR1 lpszClass,LPCTSTR2 lpszWindow);
参数;
hwndParent:要查找子窗口的父窗口句柄 。如果hwndParent为NULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口 。Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口 。
hwndChildAfter :子窗口句柄 。查找从在Z序中的下一个子窗口开始 。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口 。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始 。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口 。
lpszClass:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针 。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员 。该成员为16位,必须位于lpClassName的低16位,高位必须为0 。
lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串 。如果该参数为 NULL,则为所有窗口全匹配 。返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄 。如果函数失败,返回值为NULL 。若想获得更多错误信息,请调用GetLastError函数 。
在窗口列表中寻找与指定条件相符的第一个子窗口
返回值:Long,找到的窗口的句柄 。如未找到相符窗口,则返回零 。会设置GetLastErrorhWnd1 Long,在其中查找子的父窗口 。如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找)
hWnd2 Long,从这个窗口后开始查找 。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口 。如设为零,表示从第一个子窗口开始搜索
lpsz1 String,欲搜索的类名 。零表示忽略
lpsz2 String,欲搜索的窗体名 。零表示忽略
易语言中api findwindowEx 用法第一个参数填写你要寻找的子窗口 的父窗口句柄
第二个参数填写0 表示从第一个子窗口开始寻找
第三个参数填写你要寻找的子窗口的类名
第四个参数填写你要寻找的子窗口的标题
FindWindowExW这个函数是干什么用的? 然后它的参数都是什么含义?跟FindWindow的功能一样,就是根据窗口名字和窗口类找窗口句柄 。具体用法参见百度百科 。
在VB中,已知主窗口句柄,如何用FindWindowEx找到第二个文本框的句柄首先,一个窗口的句柄根本不是固定的,所以用常量来表示一个窗口句柄是不合适的 。VB的窗体都有一个名为hWnd的属性,这个属性里保存的就是这个窗口的句柄 。其次,“#32770”是普通窗体的窗口类名,如果要找这样的窗口,可以用handle = FindWindow(窗口类名, 窗口名)来寻找它 。如果要寻找子窗口的句柄,假设父窗口的句柄为phandle,那么可以用chandle = FindWindowEx(phandle, 0, 子窗口类名, vbNullString)来完成 。此时,找到的是父窗口内第一个类名为“子窗口类名”的子窗口 。如果要找到下一个子窗口,需要用chandle2 = FindWindowEx(phandle, chandle, 子窗口类名, vbNullString)来完成 。现在,已经知道了第一个子窗口的句柄为h1,子窗口类名为"EDIT",那么我们可以用如下语句来寻找第二个子窗口:h2 = FindWindowEx(874523, h1, "EDIT", vbNullString)不过还是建议用一个变量来保存父窗口的句柄 。顺便说一下,如果此时h2为0,那就是说,这个父窗口内没有第二个类名为"EDIT"的子窗口了 。
VB中findwindowex函数的用法 。。用法错误:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hwnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Sub Command1_Click()
Dim hwnd2 As Long
hwnd2 = FindWindow(vbNullString, "计算器")
MsgBox hwnd2, , "。"
hwnd2 = FindWindowEx(hwnd2, 0&, "edit", vbNullString)
MsgBox hWnd, , ""
End Sub
vb里的findwindowex api 怎么用?首先你这个程序必须正在运行,然后需要先获取输入框所在的父窗口的句柄,然后再获取子控件句柄
dim h0&,h1&
h0=findwindowex(0,0,classname,"abc")'其中的classname是类名,如果类名未知可以用vbnullstring替代,abc是窗体的标题
h1=findwindowex(h0,0,classname,vbnullstring)'对于搜索子控件,可以不提供类名和控件名
如果有多个输入框的话,就需要递归调用findwindowex这个函数
h1=findwindowex(h0,h1,classname,vbnullstring)'直到获取正确的句柄
向输入框传递消息可以用sendmessage或者postmessage,但是具体方法要视输入框类型而定
vb中API函数findwindow的详细用法vb中FindWindow函数可以用来返回窗体的句柄 。
1、VB6.0中的API声明:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
2、具体使用:
dim i as long
i=FindWindow(vbNullString,"窗体的标题")
注意:这里的vbNullString是空的,没有任何字符,即不传递 。和""空字符串是不一样的!
3、例子:
有一个标题名字是计算器的窗体或软件,获取这个计算器的句柄
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
Dim i As Long
i = FindWindow(vbNullString, "计算器")
msgbox& i'显示窗体句柄
End sub
vb里面用findwindowex查找不到东西能找到标签控件?那么这个窗体一定不是VB写的,VB的标签控件是找不到的
用findwindowex必须先用findwindow查到窗体的hwnd
再用findwindowex(hwnd,0,"类名","控件标题")
易语言静态编译错误换连接器比如vc98,应该是你用到的静态库的问题,或者换普通编译
易语言编译和静态编译的区别
文章插图
1、库文件和程序文件不同,编译是把支持库文件和程序分开来,如果给别人去用,别人却没安装易语言,就要把支持库文件带上给那人才能用 。但是静态编译是把支持库文件打包到程序里去.这样,如果对方没装易语言也照样可以正常使用和独立编译 。2、可执行文件的过程不同,静态编译是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库 。但是编译就是把可执行文件和支持库一起写出到外部,在需要的时候直接对其中一个支持库进行搜索某一条命令 。3、编译过程不同,通俗的说静态编译是将支持静态版的支持库静态链接(需要链接器,一般用VC6的)到EXE中去,库就在EXE中,用时不用释放 。PS:支持静态的支持库是易公司出5.0时重新整理并发布的 。和原来的不一样,而且通过链接器编译后,也和原来的独立编译大大的不一样,使静态编译出的EXE更像是VC的程序,只是像,并不是,
易语言怎么静态编译我一般遇到这种情况是刚刚运行易语言5秒以内,5秒过后就好了
不过一般不会有NB人5秒就写好一个程序了吧,所以这不算什么问题
我有几百套易语言源码和模块,欢迎大家交流,共同进步
随时共享
这是我们易语言人自己的交流群:132157144希望大家一起进步,本人随时解答各类疑问
还不懂得话,继续联系
易语言怎么静态编译?可以静态编译的易语言发给我 !已发送 注意查收~
易语言静态编译的问题链接库不支持皮肤组建用5.X只能普通编译了
也可以下载易语言4.14版本 用独立编译也可以只生成一个独立的exe程序
能静态编译就静态编译遇到不能静态编译就用4.14的独立编译
最好不要用皮肤增加程序大小还影响程序启动速度
要是觉得按钮不好看 启动窗口子程序下面代码
XP风格(#银色风格)
vb隐藏右下角图标(FindwindowEx) & 向已知句柄的窗口发送按键消息.定义一个模块, 内容为:
Option Explicit
Public Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function FindWindowa Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetForegroundWindow Lib "user32" () As Long
2. 给窗口加一个按钮, 在按钮的click事件里写以下内容:
Option Explicit
Private Sub Command1_Click()
Dim hwnd As Long
hwnd = GetForegroundWindow ' FindWindowa("Notepad", "新建 文本文档.txt - 记事本")
Dim str1 As String, len1 As Long
str1 = Space(255)'定义接收字串.
GetWindowText hwnd, str1, 1024
Do While hwnd0
hwnd = GetNextWindow(hwnd, 2) '只有2才表示找下一个窗口
len1 = GetWindowText(hwnd, str1, Len(str1))
If (InStr(1, str1, "记事", 1) > 0) Then
MsgBox "你要的窗口找到了, 它是:" + str1
Exit Sub'这一句看情况修改
End If
Loop
MsgBox "很遣憾, 没有你要找的窗口"
End Sub
3. 测试, 一定会通过..
FindWindowEx怎么获取没有标题的句柄针对这种没有标题的窗体的办法就是先枚举所有窗体,然后通过窗体的进程ID得到窗体标题 。
按键精灵里已经找到句柄,如何将句柄中的确定键按下?找到句柄后,用GetClientRect函数,获取窗口起始点坐标值信息,然后计算出从起始点到你确定键的坐标差,用movetoX+/-坐标差,Y+/-坐标差,就行了 。或者得出窗口确定键所在窗口内的坐标值,用后台插件点击也可,注意后台插件跟主屏坐标不同
vb获取已知句柄窗体的控件的句柄,请老师用findwindowex和enumchildwindow举个例子,声明,Getwindowsa是可以自定义的:
Private Declare Function Getwindowsa Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
按钮1的代码(command1):
Private Sub Command1_Click()
Dim windows As Long ‘windows也是自定义的
windows = Getwindowsa(vbNullString, "QQ的窗口名 。。不知道是什么,替换这个字符串") ‘赋值给windows
If windows = 0 Then ’这里是判断找到木有
MsgBox "对不起,没有找到窗口句柄"
Else
MsgBox "已找到窗口句柄,窗口句柄为:" & windows
End If
End Sub
vb 隐藏已知句柄的窗口 & vb FindWindowEx的用法隐藏窗口用ShowWindow 或者SetWindowPos
Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
用法ShowWindow a,SW_HIDE(SW_HIDE = 0)
FindWindowEx
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
hWnd1 ----------Long,在其中查找子的父窗口 。如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找)
hWnd2 ----------Long,从这个窗口后开始查找 。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口 。如设为零,表示从第一个子窗口开始搜索
lpsz1 ----------String,欲搜索的类名 。零表示忽略
lpsz2 ----------String,欲搜索的类名 。零表示忽略
托盘图标句柄不知道怎么搞
VB findwindowex 如何精确查找控件句柄用这个吧
findwinowex(me.Hwnd,0,"ListViewWndClass",vbnullstring)
VB API如何获取窗口内控件的句柄(急急急!)Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim n As POINTAPI
Dim a As Long
Private Sub Form_Load()
Timer1.Interval = 100
Label1.Caption = "移动鼠标指针"
End Sub
Private Sub Timer1_Timer()
GetCursorPos n
a = WindowFromPoint(n.x, n.y)
If a0 Then
Dim s As String
s = String(100, Chr(0))
GetWindowText a, s, 100
Label1.Caption = "目标标题或文本: " & Trim(s)
Label2.Caption = "目标句柄为 " & a
End If
End Sub
VB FindWindowEx 怎么找出 窗体控件的句柄?如果不用鼠标获取,可以先知道窗口的类名,用函数GetClassName,然后用FindWindow来取句柄
如何使用FindWindowEx获取窗体内控件句柄FindWindowEx(
Parent: HWND;{子窗口的父窗口句柄}
Child: HWND;{子窗口句柄}
ClassName: PChar; {类名}
WindowName: PChar {标题}
): HWND;
比如找Form1窗体的子窗体Form2里面名为"确定"的button
FindWindowEx(Form1.Handle,Form2.Handle,'TButton','确定');
窗体的handle也可以用FindWindow去找
易语言DLL命令怎么写呢我要弄打开文件在易语言左侧的窗口中找到“dll命令”,如图:然后在右侧单击鼠标右键选择“新DLL命令”即可 。填入正确的数据就好了 。
易语言中的 “Dll命令定义表“ 怎么使用啊那是写API的 。易语言很流行的模块,基础就是用的API写的,像易语言核心支持库的很多命令,也是用API写的 。但是核心支持库不可能概括所有API命令,所以就有了这个DLL命令定义表,用来扩展命令的,不至于让易语言局限于核心支持库的一些命令 。这个DLL命令定义表,在其他编程语言中是没有的,但是其他编程语言使用API都是先定义后使用,全部在源码里完成,易语言这是分开弄了个地方,好区分一些罢了 。学易语言之所以很好学,就是因为不必要使用繁琐的API基础命令一步步的编辑软件,而是使用类似核心支持库和模块的一些命令简化了操作的繁琐,而这样也局限了用户的发挥,所以真心想从易语言入手来学编程的话,最好是把DLL命令,也就是API研究透彻,这都是基础 。
易语言dll命令中的数据该怎么写在易语言左侧的窗口中找到“dll命令”,如图:
然后在右侧单击鼠标右键选择“新DLL命令”即可 。
填入正确的数据就好了 。
易语言定义DLL命令可以,反正DLL是你编写的,你想命名什么都行
如何模拟按钮的点击事件不用hook也可以实现啊 。步骤如下: 1. 用函数FindWindow找到记事本窗口,HWND notepad=FindWindow(NULL,"记事本窗口的标题"); 2. 然后FindWindowEx找到该按钮,HWND button=FindWindowEx(notepad,NULL,NULL,"按钮上的文字"); 3. 用GetWindowRect得到按钮的大小尺寸RECT rect;GetWindowRect(button,&rect); 4. 计算按钮的中心点坐标,再用SetCursorPos把鼠标移到该中心点位置POINT center;center.x = 0.5*(rect.left+rect.right);center.y = 0.5*(rect.top+rect.bottom);SetCursorPos(center.x, center.y); 5. 用mouse_event模拟鼠标点击事件:mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //按下鼠标左键mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//松开鼠标左键
如何获取外部程序窗口按钮被点击事件取到2个button的句柄 然后用API SendMessage发送 WM_LBUTTONDOWN和WM_LBUTTONUP模拟点击
用FindWindowEx怎样找到网页的按钮窗口,然后可以用SendMessage发送点击别逗了,网页的话老实用DOM对象访问吧 。
怎么用C/C++,DOS 或是其他的 实现找到其他程序的“退出”按钮,并实现点击这个按钮 。。HWND h = ::FindWindow(NULL,"目标窗口名");
HWND hwn = ::FindWindowEx(h,NULL,NULL,"按钮名");
SendMessage(hwnd,BM_CLICK,NULL,NULL);
用代码说话 先给采纳
请问怎么实现模拟其他窗口内按钮的点击事件,请给出示例不用hook也可以实现啊 。步骤如下:
1. 用函数FindWindow找到记事本窗口,
HWND notepad=FindWindow(NULL,"记事本窗口的标题");
2. 然后FindWindowEx找到该按钮,
HWND button=FindWindowEx(notepad,NULL,NULL,"按钮上的文字");
3. 用GetWindowRect得到按钮的大小尺寸
RECT rect;
GetWindowRect(button,&rect);
4. 计算按钮的中心点坐标,再用SetCursorPos把鼠标移到该中心点位置
POINT center;
center.x = 0.5*(rect.left+rect.right);
center.y = 0.5*(rect.top+rect.bottom);
SetCursorPos(center.x, center.y);
5. 用mouse_event模拟鼠标点击事件:
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //按下鼠标左键
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//松开鼠标左键
使用FindWindowEx函数,然后出现下面问题,求高手请教把你的FindWindowEx函数声明贴出来
FindWindowEx()函数为什么总是返回空?既然是FindWindowExW了,那就改成L"Button",这样的形式吧 。另外确定这个button在主窗口上吗?
c# 用 FindWindowEx 获取子窗体时 出异常}else/*正常删除子串的情况*/{j=i;while(S.ch[j-1+len]!='\0')/*把要删除子串后的字符串前移len个位置*/{ S.ch[j-1]=S.ch[j-1+len];j++;}S.len=S.len-len;/*修改字符串长度*/S.ch[S.len]='\0';/*存放字符串结束标志*/
FindWindowEx查找控件问题【findwindowexa】我这里有个指向哪显示其控件类的小工具,可以查看各种窗体或窗口的类名,要的话留下QQ我传你
- 红汤锅为什么先沸腾 红锅为什么会比汤锅更容易沸腾
- 法国特福发明不粘锅,开创易洁厨具产品先河 特福不粘锅有几个系列
- 冒险岛市场
- 三月街的风俗是白天进行贸易 三月街的风俗是什么
- 网易防沉迷认证官网 网易防沉迷实名认证官网
- 喝汤容易长胖吗
- 通俗易懂网络协议 pdu是什么
- 简单易学的烟丝制作方法 手卷烟丝怎么卷
- 易人北文集
- 冲喜新娘赔心交易