c语言获取窗口句柄
A. c语言找到窗口句柄,然后进行后台鼠标键盘操作
窗口处理函数中加入WM_MOUSEMOVE消息,然后编写鼠标消息处理函数OnMouseMove,当然,鼠标消息不止这一个,具体请查看msdn
键盘:添加WM_KEYDOWN/WM_KEYUP/WM_CHAR消息,这三个消息的具体请查看msdn,然后就可以编写消息消息处理函数了!
B. C语言中的findwindow()函数参数是什么
1.函数说明:FindWindow,Win32 API函数。
FindWindow函数返回与指定字符串相匹配的窗口类名或窗口名的最顶层窗口的窗口句柄。这个函数不会查找子窗口。
2.函数原型:
HWND FindWindow( LPCTSTR lpClassName,
LPCTSTR lpWindowName
);3.参数说明:
lpClassName
指向一个以null结尾的、用来指定类名的字符串或一个可以确定类名字符串的原子。如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子。这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。
lpWindowName
指向一个以null结尾的、用来指定窗口名(即窗口标题)的字符串。如果此参数为NULL,则匹配所有窗口名。
4返回值:
如果函数执行成功,则返回值是拥有指定窗口类名或窗口名的窗口的句柄。
如果函数执行失败,则返回值为 NULL 。可以通过调用GetLastError函数获得更加详细的错误信息。5.使用示例:HWND hWndRcv = ::FindWindow(NULL,"123");if(hWndRcv != NULL){ AfxMessageBox("找到123窗口");}
C. 求助:C语言如何输出句柄
句柄就是一种资源的序号,一般是个无符号整数而已,比如文件句柄,就是系统提供一组可以打开文件的数据结构(实际上是结构数组),句柄就是数组下标。
所谓输出句柄,你可以将句柄当作函数调用的返回值,或者打印出来看也不是不可以。
D. c语言findwindows怎么用的
Find Window的函数原型:
FindWindow(
lpClassName, {窗口的类名}
lpWindowName: PChar {窗口的标题}
): HWND; {返回窗口的句柄; 失败返回 0}
C语言测试代码(假如要查系统自带的 放大镜 窗口,前提是已经打开放大镜窗口):
HWND h = FindWindow(NULL, "放大镜");
if(0 == h)
{
ShowMessage("can't find 放大镜");
}
else
{
ShowMessage(IntToStr(h)); //查找到窗口,并且打印出该窗口的句柄
}
E. C语言中如何获得当前进程句柄,谢谢!
DWORD PID;
PID = GetProcessPID(L"test.exe");
//获取进程pid函数
DWORD GetProcessPID(LPCTSTR pName)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE == hSnapshot) {
return NULL;
}
PROCESSENTRY32 pe = { sizeof(pe) };
BOOL fOk;
for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe)){
if (!_tcsicmp(pe.szExeFile, pName)) {
CloseHandle(hSnapshot);
return pe.th32ProcessID;
}
}
return NULL;
}
//由进程pid获取进程句柄,置顶
HWND hh = GetProcessTopWindows(PID);
HWND GetProcessTopWindows(DWORD dwPID){
count = 0;
EnumWindows((WNDENUMPROC)EnumWndProc, (LPARAM)dwPID);
if(count > 0) {
//cout << "窗口句柄是:" << nhWnd[count -1] << endl;//输出句柄,可用spy++工具核对
return (nhWnd[count -1]);
}
return NULL;
}
别忘了添加对应头文件。