HotKey,SendMessage,PostMessage基础
来源:互联网 发布:ubuntu怎么进入root 编辑:程序博客网 时间:2024/06/14 15:16
/****** 单文档中使用HotKey和OnChar ******/
/****** testView.h ******/
public:
virtual ~CTestView();
virtual void OnInitialUpdate();
protected:
//{{AFX_MSG(CTestView)
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
//}}AFX_MSG
afx_msg LONG OnHotKey(WPARAM wParam,LPARAM lParam);
DECLARE_MESSAGE_MAP()
/****** testView.cpp ******/
BEGIN_MESSAGE_MAP(CTestView, CView)
//{{AFX_MSG_MAP(CTestView)
ON_WM_CHAR()
//}}AFX_MSG_MAP
ON_MESSAGE(WM_HOTKEY,OnHotKey)
// Standard printing commands
//.......
END_MESSAGE_MAP()
/*注册热键*/
void CTestView::OnInitialUpdate()
{
ASSERT(NULL != GetSafeHwnd());
//Register热键
#ifdef _DEBUG //debug版本
int nRet = RegisterHotKey(GetSafeHwnd(),199,MOD_CONTROL,'I'); //热键 ctrl + i
if(!nRet)
AfxMessageBox(_T("RegisterHotKey 0 false"));
nRet = RegisterHotKey(GetSafeHwnd(),201,MOD_ALT,'B'); //热键 alt + b
nRet = RegisterHotKey(GetSafeHwnd(),203,MOD_ALT,'E'); //热键 alt + e
if(!nRet)
AfxMessageBox(_T("RegisterHotKey 1 false"));
#else //release版本
RegisterHotKey(GetSafeHwnd(),199,MOD_CONTROL,'I'); //热键 ctrl + i
RegisterHotKey(GetSafeHwnd(),201,MOD_ALT,'B'); //热键 alt + b
RegisterHotKey(GetSafeHwnd(),203,MOD_ALT,'E'); //热键 alt + e
#endif
}
/*处理键盘消息*/
void CTestView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(GetKeyState(VK_CONTROL) & 0x8000)
{
if(nChar == 2) /*Ctrl+b*/
{ AfxMessageBox("您按了组合键:Ctrl+b");
}
else if(nChar == 5) /*Ctrl+e*/
{ AfxMessageBox("您按了组合键:Ctrl+e");
}
else if (nChar == 9) /*Ctrl+i*/
{
AfxMessageBox("您按了组合键:Ctrl+i");
}
}
CView::OnChar(nChar, nRepCnt, nFlags);
}
/*接收组合键消息*/
LONG CTestView::OnHotKey(WPARAM wParam,LPARAM lParam)
{
UINT fuModifiers = (UINT) LOWORD(lParam); // key-modifier flags
UINT uVirtKey = (UINT) HIWORD(lParam); // virtual-key code
//判断响应了什么热键
if( MOD_CONTROL == fuModifiers && 'I' == uVirtKey )
{
AfxMessageBox(_T("你按下了组合键 ctrl + i"));
}
else if( MOD_ALT == fuModifiers && 'B' == uVirtKey )
{
AfxMessageBox(_T("你按下了组合键 alt + b"));
}
else if( MOD_ALT == fuModifiers && 'E' == uVirtKey )
{
AfxMessageBox(_T("你按下了组合键 alt + e"));
}
else
{
AfxMessageBox(_T("你按下了未知热键"));
}
return 0;
}
////////////////////////////////////////////////////////////////////////////
/****** 对话框中使用HotKey ******/
/****** FDiskDlg.h ******/
//{{AFX_VIRTUAL(CFDiskDlg)
public:
virtual BOOL DestroyWindow();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
//{{AFX_MSG(CFDiskDlg)
virtual BOOL OnInitDialog();
afx_msg void OnHotKey(WPARAM wp,LPARAM lp);
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
/****** FDiskDlg.cpp ******/
BEGIN_MESSAGE_MAP(CFDiskDlg, CDialog)
//{{AFX_MSG_MAP(CFDiskDlg)
ON_MESSAGE(WM_HOTKEY,OnHotKey)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CFDiskDlg::OnInitDialog()
{
::RegisterHotKey(m_hWnd,199,MOD_ALT,'X');
::RegisterHotKey(m_hWnd,201,MOD_ALT,'Z');
SetTimer(0,80,NULL);
return TRUE;
}
void CFDiskDlg::OnHotKey(WPARAM wp,LPARAM lp)//热键
{
if(wp==199)
{
//if(IsWindowVisible())
ShowWindow(SW_HIDE);
//else
//ShowWindow(SW_SHOWNORMAL);
//ShowWindow(SW_SHOW);
}
if (wp ==201)
{
ShowWindow(SW_SHOW);
}
}
BOOL CFDiskDlg::DestroyWindow()
{
//::UnregisterHotKey(m_hWnd,199);//释放注册的热键
//::UnregisterHotKey(m_hWnd,201);//释放注册的热键
return CDialog::DestroyWindow();
}
void CFDiskDlg::OnTimer(UINT nIDEvent)
{
//定时执行的任务
CDialog::OnTimer(nIDEvent);
}
////////////////////////////////////////////////////////////////////////////
/*向记事本文件发消息*/
HWND hwnd=::FindWindow(NULL,"无标题 - 记事本");
//HWND hedit = ::GetDlgItem(hwnd, 0x0000000F);
HWND hedit = FindWindowEx(hwnd, NULL, "edit", NULL);
::PostMessage(hedit,WM_KEYUP,'1',0); /*向记事本发消息*/
::SendMessage(hwnd,WM_CLOSE,0,0); /*关闭记事本文件*/
/****** testView.h ******/
public:
virtual ~CTestView();
virtual void OnInitialUpdate();
protected:
//{{AFX_MSG(CTestView)
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
//}}AFX_MSG
afx_msg LONG OnHotKey(WPARAM wParam,LPARAM lParam);
DECLARE_MESSAGE_MAP()
/****** testView.cpp ******/
BEGIN_MESSAGE_MAP(CTestView, CView)
//{{AFX_MSG_MAP(CTestView)
ON_WM_CHAR()
//}}AFX_MSG_MAP
ON_MESSAGE(WM_HOTKEY,OnHotKey)
// Standard printing commands
//.......
END_MESSAGE_MAP()
/*注册热键*/
void CTestView::OnInitialUpdate()
{
ASSERT(NULL != GetSafeHwnd());
//Register热键
#ifdef _DEBUG //debug版本
int nRet = RegisterHotKey(GetSafeHwnd(),199,MOD_CONTROL,'I'); //热键 ctrl + i
if(!nRet)
AfxMessageBox(_T("RegisterHotKey 0 false"));
nRet = RegisterHotKey(GetSafeHwnd(),201,MOD_ALT,'B'); //热键 alt + b
nRet = RegisterHotKey(GetSafeHwnd(),203,MOD_ALT,'E'); //热键 alt + e
if(!nRet)
AfxMessageBox(_T("RegisterHotKey 1 false"));
#else //release版本
RegisterHotKey(GetSafeHwnd(),199,MOD_CONTROL,'I'); //热键 ctrl + i
RegisterHotKey(GetSafeHwnd(),201,MOD_ALT,'B'); //热键 alt + b
RegisterHotKey(GetSafeHwnd(),203,MOD_ALT,'E'); //热键 alt + e
#endif
}
/*处理键盘消息*/
void CTestView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(GetKeyState(VK_CONTROL) & 0x8000)
{
if(nChar == 2) /*Ctrl+b*/
{ AfxMessageBox("您按了组合键:Ctrl+b");
}
else if(nChar == 5) /*Ctrl+e*/
{ AfxMessageBox("您按了组合键:Ctrl+e");
}
else if (nChar == 9) /*Ctrl+i*/
{
AfxMessageBox("您按了组合键:Ctrl+i");
}
}
CView::OnChar(nChar, nRepCnt, nFlags);
}
/*接收组合键消息*/
LONG CTestView::OnHotKey(WPARAM wParam,LPARAM lParam)
{
UINT fuModifiers = (UINT) LOWORD(lParam); // key-modifier flags
UINT uVirtKey = (UINT) HIWORD(lParam); // virtual-key code
//判断响应了什么热键
if( MOD_CONTROL == fuModifiers && 'I' == uVirtKey )
{
AfxMessageBox(_T("你按下了组合键 ctrl + i"));
}
else if( MOD_ALT == fuModifiers && 'B' == uVirtKey )
{
AfxMessageBox(_T("你按下了组合键 alt + b"));
}
else if( MOD_ALT == fuModifiers && 'E' == uVirtKey )
{
AfxMessageBox(_T("你按下了组合键 alt + e"));
}
else
{
AfxMessageBox(_T("你按下了未知热键"));
}
return 0;
}
////////////////////////////////////////////////////////////////////////////
/****** 对话框中使用HotKey ******/
/****** FDiskDlg.h ******/
//{{AFX_VIRTUAL(CFDiskDlg)
public:
virtual BOOL DestroyWindow();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
//{{AFX_MSG(CFDiskDlg)
virtual BOOL OnInitDialog();
afx_msg void OnHotKey(WPARAM wp,LPARAM lp);
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
/****** FDiskDlg.cpp ******/
BEGIN_MESSAGE_MAP(CFDiskDlg, CDialog)
//{{AFX_MSG_MAP(CFDiskDlg)
ON_MESSAGE(WM_HOTKEY,OnHotKey)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CFDiskDlg::OnInitDialog()
{
::RegisterHotKey(m_hWnd,199,MOD_ALT,'X');
::RegisterHotKey(m_hWnd,201,MOD_ALT,'Z');
SetTimer(0,80,NULL);
return TRUE;
}
void CFDiskDlg::OnHotKey(WPARAM wp,LPARAM lp)//热键
{
if(wp==199)
{
//if(IsWindowVisible())
ShowWindow(SW_HIDE);
//else
//ShowWindow(SW_SHOWNORMAL);
//ShowWindow(SW_SHOW);
}
if (wp ==201)
{
ShowWindow(SW_SHOW);
}
}
BOOL CFDiskDlg::DestroyWindow()
{
//::UnregisterHotKey(m_hWnd,199);//释放注册的热键
//::UnregisterHotKey(m_hWnd,201);//释放注册的热键
return CDialog::DestroyWindow();
}
void CFDiskDlg::OnTimer(UINT nIDEvent)
{
//定时执行的任务
CDialog::OnTimer(nIDEvent);
}
////////////////////////////////////////////////////////////////////////////
/*向记事本文件发消息*/
HWND hwnd=::FindWindow(NULL,"无标题 - 记事本");
//HWND hedit = ::GetDlgItem(hwnd, 0x0000000F);
HWND hedit = FindWindowEx(hwnd, NULL, "edit", NULL);
::PostMessage(hedit,WM_KEYUP,'1',0); /*向记事本发消息*/
::SendMessage(hwnd,WM_CLOSE,0,0); /*关闭记事本文件*/
- HotKey,SendMessage,PostMessage基础
- SendMessage,PostMessage
- SendMessage & PostMessage
- PostMessage,SendMessage
- PostMessage & SendMessage
- sendmessage postmessage
- PostMessage - SendMessage
- sendmessage,postmessage
- sendmessage postmessage
- PostMessage,SendMessage
- sendmessage postmessage
- SendMessage && PostMessage
- PostMessage Or SendMessage
- PostMessage, SendMessage 之区别
- SendMessage() PostMessage() SendMessageTimeout()
- SendMessage和PostMessage
- PostMessage和SendMessage区别
- SendMessage 和 PostMessage
- http://topic.csdn.net/u/20091028/23/b5a8884a-778f-4535-8779-ae6453ada88e.html
- 常用的休眠函数
- 剃须刀
- MySQL Explain作用(ZZ)
- Factorial hdu 1124
- HotKey,SendMessage,PostMessage基础
- equals方法和==的用途:
- 确定对象在被使用前被初始化(Make sure that objects are initialized before they’re used)——effective c++学习笔记
- 严重: Dispatcher initialization failed java.lang.RuntimeException
- 转 java+jsp 问答笔记
- 确定对象在被使用前被初始化(Make sure that objects are initialized before they’re used)——effective c++学习笔记
- 转 java+jsp 问答笔记
- 选择排序(二)--树形选择排序
- 顺序表的实现