
如何在Win32应用程序添加按钮
我在做Hook键盘记录,想把钩子的按键记录保存在txt,添加按钮发送。邮件模块写好了,按钮启动不会写。。。。代码如下//KeyHookApp.cpp文件#include"...
我在做Hook键盘记录,想把钩子的按键记录保存在txt,添加按钮发送。邮件模块写好了,按钮启动不会写。。。。代码如下
// KeyHookApp.cpp文件
#include "resource.h"
#include "KeyHookApp.h"
#include "../09KeyHookLib/KeyHookLib.h"
#include <Windows.h>
#pragma comment(lib, "09KeyHookLib")
CMyApp theApp;
BOOL CMyApp::InitInstance()
{
CMainDialog dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
return FALSE;
}//对CMyApp的声明
CMainDialog::CMainDialog(CWnd* pParentWnd):CDialog(IDD_MAIN, pParentWnd)
{
}
BEGIN_MESSAGE_MAP(CMainDialog, CDialog)
ON_MESSAGE(HM_KEY, OnHookKey)
END_MESSAGE_MAP()//消息映射
BOOL CMainDialog::OnInitDialog()
{ //初始化对话框
SetIcon(theApp.LoadIcon(IDI_MAIN), FALSE);//本成员函数用于设置按钮的图标。
::SetWindowPos(m_hWnd, HWND_TOPMOST, 10,10,
600, 400,SWP_NOREDRAW|SWP_NOMOVE);//该函数改变一个子窗口,弹出式窗口或顶层窗口的尺寸,位置和Z序。
if(!SetKeyHook(TRUE, 0, m_hWnd))
MessageBox("安装钩子失败!");
return TRUE;
}
void CMainDialog::OnCancel()
{
// 卸载钩子
SetKeyHook(FALSE);
CDialog::OnCancel();
return;
}
long CMainDialog::OnHookKey(WPARAM wParam, LPARAM lParam)
{
// 此时参数wParam为用户按键的虚拟键码,
// lParam参数包含按键的重复次数、扫描码、前一个按键状态等信息
char szKey[80];
::GetKeyNameText(lParam, szKey, 80);
CString strItem;
strItem.Format(" %s", szKey);
// 添加到编辑框中
CString strEdit;
GetDlgItem(IDC_KEYMSG)->GetWindowText(strEdit);
GetDlgItem(IDC_KEYMSG)->SetWindowText(strItem + strEdit);
::MessageBeep(MB_OK);
return 0;
} 展开
// KeyHookApp.cpp文件
#include "resource.h"
#include "KeyHookApp.h"
#include "../09KeyHookLib/KeyHookLib.h"
#include <Windows.h>
#pragma comment(lib, "09KeyHookLib")
CMyApp theApp;
BOOL CMyApp::InitInstance()
{
CMainDialog dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
return FALSE;
}//对CMyApp的声明
CMainDialog::CMainDialog(CWnd* pParentWnd):CDialog(IDD_MAIN, pParentWnd)
{
}
BEGIN_MESSAGE_MAP(CMainDialog, CDialog)
ON_MESSAGE(HM_KEY, OnHookKey)
END_MESSAGE_MAP()//消息映射
BOOL CMainDialog::OnInitDialog()
{ //初始化对话框
SetIcon(theApp.LoadIcon(IDI_MAIN), FALSE);//本成员函数用于设置按钮的图标。
::SetWindowPos(m_hWnd, HWND_TOPMOST, 10,10,
600, 400,SWP_NOREDRAW|SWP_NOMOVE);//该函数改变一个子窗口,弹出式窗口或顶层窗口的尺寸,位置和Z序。
if(!SetKeyHook(TRUE, 0, m_hWnd))
MessageBox("安装钩子失败!");
return TRUE;
}
void CMainDialog::OnCancel()
{
// 卸载钩子
SetKeyHook(FALSE);
CDialog::OnCancel();
return;
}
long CMainDialog::OnHookKey(WPARAM wParam, LPARAM lParam)
{
// 此时参数wParam为用户按键的虚拟键码,
// lParam参数包含按键的重复次数、扫描码、前一个按键状态等信息
char szKey[80];
::GetKeyNameText(lParam, szKey, 80);
CString strItem;
strItem.Format(" %s", szKey);
// 添加到编辑框中
CString strEdit;
GetDlgItem(IDC_KEYMSG)->GetWindowText(strEdit);
GetDlgItem(IDC_KEYMSG)->SetWindowText(strItem + strEdit);
::MessageBeep(MB_OK);
return 0;
} 展开
1个回答
展开全部
其实用MFC多好,很多东西系统直接给你写好了。
WIN32的话,需要自己生命Button类对象,然后调用Create函数动态创建一个按钮,设定资源ID和坐标位置,
然后就是写消息响应了。
WIN32的话,需要自己生命Button类对象,然后调用Create函数动态创建一个按钮,设定资源ID和坐标位置,
然后就是写消息响应了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询