int i=74;
void CDnf_KeyDlg::Sethook()
{
keybd_event(74,MapVirtualKey(74,0),0,0);
Sleep(10);
keybd_event(74,MapVirtualKey(74,0),KEYEVENTF_KEYUP,0);
keybd_event(79,MapVirtualKey(79,0),0,0);
Sleep(10);
keybd_event(79,MapVirtualKey(79,0),KEYEVENTF_KEYUP,0);
}
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
switch (wParam)
{
case 74: Sethook(); //这里说error C2065: 'Sethook' : undeclared identifier?我明明定义了啊
break;
}
return CallNextHookEx(0,code,wParam,lParam);
}
BOOL CDnf_KeyDlg::OnInitDialog()
{
.......................
.......................
SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,0,GetCurrentThreadId());
return TRUE; // return TRUE unless you set the focus to a control
}
VC++6 高手来帮忙看下..
答案:4 悬赏:80
解决时间 2021-04-27 23:55
- 提问者网友:践踏俘获
- 2021-04-27 17:20
最佳答案
- 二级知识专家网友:留下所有热言
- 2021-04-27 17:40
KeyboardProc是一个回调函数,并不是类中的成员函数,不能直接调用类中成员函数,只能通过域名来调用。
switch (wParam)
{
case 74: Sethook(); //这里说error C2065: 'Sethook' : undeclared identifier?我明明定义了啊
break;
}
这里应该写成
switch (wParam)
{
case 74: CDnf_KeyDlg::Sethook();
break;
}
这样就可以调用了。
switch (wParam)
{
case 74: Sethook(); //这里说error C2065: 'Sethook' : undeclared identifier?我明明定义了啊
break;
}
这里应该写成
switch (wParam)
{
case 74: CDnf_KeyDlg::Sethook();
break;
}
这样就可以调用了。
全部回答
- 1楼网友:星星坠落
- 2021-04-27 20:47
KeyboardProc是一个回调函数,不是CDnf_KeyDlg类的成员函数。
而这个回调函数调用的Sethook函数是类的成员函数。
如果Sethook是静态的可以这样调用
CDnf_KeyDlg::Sethook();
- 2楼网友:傲娇菇凉
- 2021-04-27 19:54
1. 下载filetool.exe,并解压
2. 打开vc6.0,点击file-openworkspace,选择刚解压出来的filetool.dsw,并确定
3. 点击bulid(组建)-buildfiletool.dll,生成filetool.dll文件
4. 在vc6.0中点击tools(工具)-customize(定制)
5. 在出现的“customize(定制)”对话框中,点击add-ins and macro files(附加项和宏文件)标签
6. 点击browse(浏览),在文件类型下选 dll , 定位刚才生成的dll文件,点击确定,然后点击ok保存设置(这里要用管理员身份运行vc)
7.此时vc中会出现一个上面只有两个图标的工具栏,点击其右上角的“x”按钮将其关闭,然后关闭vc6.0并重新启动程序此时打开vc6会有一个浮动工具栏(a o),点击a就是添加文件到工程,点击o就是打开文件
余:如果没有出现,右击工具栏附近,选择toolbar1
8. 还是在vc6.0中点击tools(工具)-customize(定制)
9. 在customize(定制)对话框中点击keboard(键盘)标签
10. 从category(类别)的下拉菜单框中选择file(文件)
11.在commands(命令)窗口中选择fileopen
12.在current keys(当前键)窗口中选择ctrl+o条目,并点击remove(移去)
13.从category(类别)的下拉菜单框中选择project(工程)
14.在commands(命令)窗口中选择insertfilesintoproject,如果之前给它注册了快捷键,则按照上面所说步骤移除之,默认情况下它是没有快捷键的
15.从category(类别)的下拉菜单框中选择add-ins
16.这时commands窗口中应该已经多出了addfiletoproject和openfile两个条目,可以给它们分配快捷键了,选择 openfile条目,然后点击press new shortcut key(按下新快捷键)输入框,按下想设置的快捷键或快捷键组合(如打开文件默认的快捷键ctrl+o),点击assign(分配)可以以同样的方法为其它的命令设置快捷键最后,还应该在菜单栏内做相应的改动,移除无法使用的旧open命令,换上新的:
17. 在vc6.0中点击tools(工具)-customize(定制)(然后点击一下toolbars或者commands,这样才能下一步)
18. 点击vc6.0工具栏上的file菜单,并将弹出菜单中的open命令拖拽至弹出菜单之外(出现一个差号时释放,别弄错了给它拖到其他菜单中去了)并释放
19. 点击project(工程)菜单,并将弹出菜单中的add to project(添加到工程)命令拖拽至弹出菜单之外并释放
20. 在customize(定制)对话框中选择commands(命令)标签
21. 在category(类别)列表中选择add-ins
22. 点击file菜单,将openfile命令(图标为字母o)拖动到之前open命令所在位置.点击project(工程)菜单,将addfiletoproject命令(图标为字母a)拖动到之前add to projec命令所在位置。
这样,vc6.0中无法打开文件和无法向工程中添加文件的问题就解决了。
- 3楼网友:滚刀废物浮浪人
- 2021-04-27 18:46
楼主思路好混乱呢
先告诉你一个最基本的错误
键盘钩子只能在Dll链接库中使用 在这种程序中根本用不了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息