新年快乐,写外挂呢?我想,这是你要的解决方案,有空交流交流,在下QQ:2465690 请笑纳 (^_^)
//得到自己进程内的子窗体
HWND GetMyHwnd()
{
HWND hwnd = FindWindow(类名,窗体标题);
DWORD pid = 0;
GetWindowThreadProcessId(hwnd,&pid);
DWORD thisid = GetCurrentProcessId();
if(thisid!=pid)
{
do
{
hwnd = GetWindow(hwnd,GW_HWNDNEXT);
GetWindowThreadProcessId(hwnd,&pid);
char mytext[MAX_PATH];
GetWindowText(hwnd,mytext,MAX_PATH);
if(strcmp(mytext,窗体标题)!=0)
continue;
}while(thisid!=pid);
}
return hwnd;
}
如果是其他进程内寻找子窗体 则使用:
HWND GetMyHwnd(DWORD thisid)
{
HWND hwnd = FindWindow(类名,窗体标题);
DWORD pid = 0;
GetWindowThreadProcessId(hwnd,&pid);
if(thisid!=pid)
{
do
{
hwnd = GetWindow(hwnd,GW_HWNDNEXT);
GetWindowThreadProcessId(hwnd,&pid);
char mytext[MAX_PATH];
GetWindowText(hwnd,mytext,MAX_PATH);
if(strcmp(mytext,窗体标题)!=0)
continue;
}while(thisid!=pid);
}
return hwnd;
}
这是一个vb用findwindow等api找到其它窗口,并且更改其它窗口的文本的源码:
>
它是一个子窗口,没有标题,每次登陆时类名就变了,怎么得到它的窗口句柄呢?用Findwindow没用啊!
你是什么语言??VB还是C++?
给你个VB CODE :
Function GetQQpath()
Dim ps, s '获取QQ进程所存在的路径
s = "qqexe"
For Each ps In GetObject("winmgmts:\\\root\cimv2:win32_process")instances_ '循环进程
If UCase(psName) = UCase(s) Then
Form1Label1Caption = psexecutablepath
GoTo q
End If
Next
q:
End Function
这个可以用知道进程名就可以知道程序路径了,原理很简单。自己摸索、
(针对新手: 结果显示在label1上面。否则会出现缺少对象)
以上就是关于根据类名和标题直接找到子窗口的句柄的API全部的内容,包括:根据类名和标题直接找到子窗口的句柄的API、用VB或VB.NET用API函数FindWindow获取一个当前XX窗口句柄、通过api获取窗口句柄是通过类名和标题得到,如果我软件标题不固定。还有什么其它的方法得到窗口句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)