中易网

VC++6 高手来帮忙看下..

答案:4  悬赏:80  
解决时间 2021-04-27 23:55
  • 提问者网友:践踏俘获
  • 2021-04-27 17:20
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
}
最佳答案
  • 二级知识专家网友:留下所有热言
  • 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;
}
这样就可以调用了。
全部回答
  • 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链接库中使用 在这种程序中根本用不了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息