向获取窗口句柄过程传送的句柄到底是哪一个获取窗口句柄的句柄

扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
文档 视图 框架窗口 关系和消息传送 句柄
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口到底怎么获得窗口句柄?_按键精灵吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:33,409贴子:
到底怎么获得窗口句柄?收藏
Plugin hwnd=Window.MousePoint()我是9,这句貌似无效。。
//代码Dim HwndHwnd = Plugin.Window.MousePoint()Delay 100s = Plugin.Window.GetClientRect(hwnd)XYArray = Split(s, &|&, -1, 1)dx = XYArray(0)dy = XYarray(1)Delay 100Rem s//点击“1V1”。//(插入到3v3版的“点击开始游戏”前即可变为3v3版)Call Plugin.Bkgnd.MoveTo(967-dx,385-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,967-dx,385-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,967-dx,385-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,967-dx,385-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,967-dx,385-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,967-dx,385-dy)Delay 50//———————————//点击开始游戏。Call Plugin.Bkgnd.MoveTo(Hwnd,1012-dx, 594-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,1012-dx, 594-dy)Delay 50//———————————//点击弹窗的“确定”,防止误操作/bug。Call Plugin.Bkgnd.MoveTo(Hwnd,570-dx,457-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,570-dx,457-dy)Delay 50//———————————
//点击选随机英雄。Call Plugin.Bkgnd.MoveTo(Hwnd,421-dx,166-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50//———————————//点击弹窗的“确定”,防止误操作/bug。Call Plugin.Bkgnd.MoveTo(Hwnd,570-dx,457-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,570-dx,457-dy)Delay 50//———————————//确定英雄选择。Call Plugin.Bkgnd.MoveTo(Hwnd,631-dx,682-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,631-dx,682-dy)Delay 50//———————————//挡板作用。取消误点到的卡牌。Call Plugin.Bkgnd.MoveTo(Hwnd,1029-dx,740-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,1029-dx,740-dy)Delay 50//———————————//点击弹窗的“确定”,防止误操作/bug。Call Plugin.Bkgnd.MoveTo(Hwnd,570-dx,457-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,570-dx,457-dy)Delay 50//———————————//点击选随机英雄。Call Plugin.Bkgnd.MoveTo(Hwnd,421-dx,166-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50//———————————//点击弹窗的“确定”,防止误操作/bug。Call Plugin.Bkgnd.MoveTo(Hwnd,570-dx,457-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,570-dx,457-dy)Delay 50//———————————//确定英雄选择。Call Plugin.Bkgnd.MoveTo(Hwnd,631-dx,682-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,631-dx,682-dy)Delay 50//———————————//挡板作用。取消误点到的卡牌。Call Plugin.Bkgnd.MoveTo(Hwnd,1029-dx,740-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,1029-dx,740-dy)Delay 50//———————————//点击弹窗的“确定”,防止误操作/bug。Call Plugin.Bkgnd.MoveTo(Hwnd,570-dx,457-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,570-dx,457-dy)Delay 50//——————————— //点击选随机英雄。Call Plugin.Bkgnd.MoveTo(Hwnd,421-dx,166-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50//———————————//点击弹窗的“确定”,防止误操作/bug。Call Plugin.Bkgnd.MoveTo(Hwnd,570-dx,457-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,570-dx,457-dy)Delay 50//———————————//确定英雄选择。Call Plugin.Bkgnd.MoveTo(Hwnd,631-dx,682-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,631-dx,682-dy)Delay 50//———————————//挡板作用。取消误点到的卡牌。Call Plugin.Bkgnd.MoveTo(Hwnd,1029-dx,740-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,1029-dx,740-dy)Delay 50//———————————//点击弹窗的“确定”,防止误操作/bug。Call Plugin.Bkgnd.MoveTo(Hwnd,570-dx,457-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,570-dx,457-dy)Delay 50//———————————//点击选随机英雄。Call Plugin.Bkgnd.MoveTo(Hwnd,421-dx,166-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,166-dy)Delay 50//———————————//点击弹窗的“确定”,防止误操作/bug。Call Plugin.Bkgnd.MoveTo(Hwnd,570-dx,457-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,570-dx,457-dy)Delay 50//———————————//确定英雄选择。Call Plugin.Bkgnd.MoveTo(Hwnd,631-dx,682-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,631-dx,682-dy)Delay 50//———————————//挡板作用。取消误点到的卡牌。Call Plugin.Bkgnd.MoveTo(Hwnd,1029-dx,740-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,1029-dx,740-dy)Delay 50//———————————//点击弹窗的“确定”,防止误操作/bug。Call Plugin.Bkgnd.MoveTo(Hwnd,570-dx,457-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,570-dx,457-dy)Delay 50//———————————
//点击“结束回合”。Call Plugin.Bkgnd.MoveTo(Hwnd,1080-dx,645-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,1080-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1080-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1080-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1080-dx,645-dy)Delay 50Call Plugin.Bkgnd.MoveTo(Hwnd,1036-dx,645-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,1036-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1036-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1036-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1036-dx,645-dy)Delay 50//———————————//战斗结束时,自动领取钱袋和宝箱。Call Plugin.Bkgnd.MoveTo(Hwnd,456-dx,614-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,456-dx,614-dy)Delay 50Call Plugin.Bkgnd.MoveTo(Hwnd,780-dx,631-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,780-dx,631-dy)Delay 50//———————————//复活时,选择技能并点击确定。Call Plugin.Bkgnd.Moveto(Hwnd, 402-dx, 298-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,402-dx,298-dy)Delay 50Call Plugin.Bkgnd.Moveto(Hwnd, 649-dx, 291-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,649-dx,291-dy)Delay 50Call Plugin.Bkgnd.Moveto(Hwnd, 650-dx, 478-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,650-dx,478-dy)Delay 50Call Plugin.Bkgnd.Moveto(Hwnd, 402-dx, 298-dy)Call Plugin.Bkgnd.LeftClick(Hwnd, 402-dx, 298-dy)Delay 50Call Plugin.Bkgnd.Moveto(Hwnd, 650-dx, 478-dy)Call Plugin.Bkgnd.LeftClick(Hwnd, 650-dx, 478-dy)Delay 50Call Plugin.Bkgnd.Moveto(Hwnd, 402-dx, 298-dy)Call Plugin.Bkgnd.LeftClick(Hwnd, 402-dx, 298-dy)Delay 50Call Plugin.Bkgnd.Moveto(Hwnd, 649-dx, 291-dy)Call Plugin.Bkgnd.LeftClick(Hwnd, 649-dx, 291-dy)Delay 50Call Plugin.Bkgnd.Moveto(Hwnd, 650-dx, 478-dy)Call Plugin.Bkgnd.LeftClick(Hwnd, 650-dx, 478-dy)Delay 50//———————————//点击“英雄升级”。Call Plugin.Bkgnd.MoveTo(Hwnd,421-dx,580-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,421-dx,580-dy)Delay 20Call Plugin.Bkgnd.MoveTo(Hwnd,641-dx,580-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,641-dx,580-dy)Delay 20Call Plugin.Bkgnd.MoveTo(Hwnd,857-dx,580-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,857-dx,580-dy)Delay 20//———————————//点击“结束回合”。Call Plugin.Bkgnd.MoveTo(Hwnd,1080-dx,645-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,1080-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1080-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1080-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1080-dx,645-dy)Delay 50Call Plugin.Bkgnd.MoveTo(Hwnd,1036-dx,645-dy)Call Plugin.Bkgnd.LeftClick(Hwnd,1036-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1036-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1036-dx,645-dy)Delay 20Call Plugin.Bkgnd.LeftClick(Hwnd,1036-dx,645-dy)Delay 50//———————————Goto s
这么多看的头疼三言两语说不完总结成一句话了何不用大漠插件
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
使用签名档&&
为兴趣而生,贴吧更懂你。或1060人阅读
一、获取窗口句柄基于类名或窗口名称:&
Win32 API 提供用于获取与一个控制台应用程序相关联的窗口句柄没有直接方法。但是,您可以获得通过调用 FindWindow() 窗口句柄。此函数可检索窗口句柄基于类名或窗口名称。&
调用以确定当前的控制台标题 GetConsoleTitle()。然后提供当前的控制台标题,以 FindWindow()。
因为多个窗口可能具有相同的标题,您应更改当前的控制台窗口标题,以一个唯一的标题。这将有助于防止将返回错误的窗口句柄。若要更改当前的控制台窗口标题中使用
SetConsoleTitle()。下面是此过程:
调用 GetConsoleTitle() 保存当前控制台窗口标题。
调用 SetConsoleTitle() 若要更改控制台标题到唯一的标题。
若要确保窗口标题的调用 Sleep(40) 已更新。
如果操作失败,调用 FindWindow NULL uniquetitle),以获取该 HWND 此调用将返回 HWND--或 NULL。
从步骤 1,要还原原始的窗口标题检索调用 SetConsoleTitle() 具有值。
您应该测试结果的 HWND。例如对于您可以测试以查看是否返回的 HWND 与当前进程在 HWND 上调用 GetWindowText() 并将结果与 GetConsoleTitle() 进行比较。
生成的 HWND 是不能保证是适用于所有的窗口句柄操作。
下面的函数检索当前控制台应用程序窗口句柄 (HWND)。如果此函数成功,返回值是控制台窗口的句柄。如果将失败函数返回值为 NULL。某些错误检查被省略,为简洁起见。
HWND GetConsoleHwnd(void)
#define MY_BUFSIZE 1024 // Buffer size for console window titles.
HWND hwndF
// This is what is returned to the caller.
char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated
// WindowTitle.
char pszOldWindowTitle[MY_BUFSIZE]; // Contains original
// WindowTitle.
// Fetch current window title.
GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
// Format a &unique& NewWindowTitle.
wsprintf(pszNewWindowTitle,&%d/%d&,
GetTickCount(),
GetCurrentProcessId());
// Change current window title.
SetConsoleTitle(pszNewWindowTitle);
// Ensure window title has been updated.
Sleep(40);
// Look for NewWindowTitle.
hwndFound=FindWindow(NULL, pszNewWindowTitle);
// Restore original window title.
SetConsoleTitle(pszOldWindowTitle);
return(hwndFound);
二、使用GetConsoleWindow函数:
作者:Defanive
博客:(/Console_App)
窗口,都有其唯一的句柄(hWnd)。得到了窗口句柄,能够做很多事情。控制台程序,若能在窗口效果上下文章,那么这个第三方工具将会很成功。
网上给出的常用方法:
HWND hw=FindWindow(&ConsoleWindowClass&,NULL);
这不失为一个好方法,但是单从Class方面入手保险度不高。
API函数FindWindow有两个参数,类名与窗口标题。当不提供窗口标题的时候,返回的句柄为同类窗口中Z序最高的窗口句柄。虽然说执行只是一瞬间,但是保险起见,还是提供下标题窗口,更保险。
char strTitle[255];
GetConsoleTitle(strTitle, 255);
HWND hw=FindWindow(&ConsoleWindowClass&,strTitle);
当然,如果要精益求精,还有更保险的办法,用 Kernel32.dll 中部分未公布的API。在用 eXeScope 导出 Kernel32.dll 中控制台相关的API之后,发现有一个名为GetConsoleWindow的API。查找参考了部分资料后,提供如下代码,能够动态载入这个API并获得窗口句柄。
首先需要全局声明:
typedef HWND (WINAPI *PROCGETCONSOLEWINDOW)();
PROCGETCONSOLEWINDOW GetConsoleW
然后再Main()函数开头中输入以下内容:
HMODULE hKernel32 = GetModuleHandle(&kernel32&);
GetConsoleWindow = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32,&GetConsoleWindow&);
完成了动态载入API函数GetConsoleWindow的任务。需要使用时可如下:
HWND cmd=GetConsoleWindow();
个人认为,使用API函数GetConsoleWindow是最安全,也是最好的方法。在更大的控制台编程中,可能随时需要用到AttachConsole来改变程序的宿主控制台,这个时候再用前两种方法就不够好了。尽管载入的代码很长,但是通用性更高。
三、控制台中使用程序输出回车键
&INPUT key[1] = {0};
& key[0].type = INPUT_KEYBOARD;
& key[0].ki.wVk = VK_RETURN;
& key[0].ki.dwFlags = 0;
& key[0].ki.time = 0;
& key[0].ki.wScan = 0;//VK_RETURN;
& key[0].ki.dwExtraInfo = 0;
& SendInput(1, key, sizeof(key));
keybd_event(0xd,0,0,0);
& &获取控制台的句柄(HWND)后,可以使用这个句柄,向控制台发送Enter键的ASCLL消息。
&&SendMessage(hwndFound,WM_CHAR,0x0d,0);
其中方法(1)(2),可能会影响到其他的应用程序,方法(3)验证没有出现影响其它应用程序的现象。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:52863次
排名:千里之外
原创:22篇
转载:26篇
评论:22条
(2)(3)(1)(7)(1)(1)(2)(2)(1)(2)(1)(2)(3)(1)(7)(1)(1)(1)(5)(4)}

我要回帖

更多关于 mfc获得窗口句柄 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信