📄 inputatcmddlg.cpp
字号:
// InputATCMDDlg.cpp : implementation file
//
#include "stdafx.h"
#include "InputATCMD.h"
#include "InputATCMDDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WM_ICON_NOTIFY WM_USER + 10
HWND gFocus;//不知道为什么必须在这里而不是在类中
/////////////////////////////////////////////////////////////////////////////
// CInputATCMDDlg dialog
CInputATCMDDlg::CInputATCMDDlg(CWnd* pParent /*=NULL*/)
: CDialog(CInputATCMDDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CInputATCMDDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CInputATCMDDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CInputATCMDDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CInputATCMDDlg, CDialog)
//{{AFX_MSG_MAP(CInputATCMDDlg)
ON_WM_SYSCOMMAND()
ON_WM_QUERYDRAGICON()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONDBLCLK()
ON_WM_RBUTTONDBLCLK()
ON_WM_RBUTTONDOWN()
ON_WM_RBUTTONUP()
ON_WM_LBUTTONUP()
ON_COMMAND(IDM_SHOW_INPUTATCMD, OnShowInputATCmd)
ON_UPDATE_COMMAND_UI(IDM_SHOW_INPUTATCMD, OnUpdateShowInputATCmd)
ON_COMMAND(IDM_HIDE_INPUTATCMD, OnHideInputATCmd)
ON_UPDATE_COMMAND_UI(IDM_HIDE_INPUTATCMD, OnUpdateHideInputATCmd)
ON_COMMAND(IDM_EXIT, OnExit)
ON_WM_SHOWWINDOW()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CInputATCMDDlg message handlers
BOOL CInputATCMDDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// CenterWindow(GetDesktopWindow()); // center to the hpc screen
// TODO: Add extra initialization here
VERIFY(cSystray.Create(NULL, // Parent window
WM_ICON_NOTIFY, // Icon notify message to use
_T("Input Manager"), // tooltip
m_hIcon, // Icon to use
IDR_TRAY_MENU));
::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); //必须的
return TRUE; // return TRUE unless you set the focus to a control
}
BOOL CInputATCMDDlg::PreCreateWindow(CREATESTRUCT& cs)
{
DWORD dwExtendStyle=0;
DWORD dwStyle=0;
dwExtendStyle=GetWindowLong(this->m_hWnd,GWL_EXSTYLE);
dwExtendStyle |=WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE;
dwStyle=GetWindowLong(this->m_hWnd,GWL_STYLE);
//dwStyle |=DS_SYSMODAL;
cs.dwExStyle=dwExtendStyle;
cs.style=dwStyle;
return CDialog::PreCreateWindow(cs);
}
void CInputATCMDDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
CDialog::OnSysCommand(nID, lParam);
}
HCURSOR CInputATCMDDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CInputATCMDDlg::SendKey()
{
//Send AT
BYTE ATCmd[50];
int i=0;
int ilength=0;
ATCmd[0]='A';
ATCmd[1]='T';
ATCmd[2]=VK_ADD;//VK_OEM_PLUS;
ATCmd[3]='C';
ATCmd[4]='G';
ATCmd[5]='D';
ATCmd[6]='C';
ATCmd[7]='O';
ATCmd[8]='N';
ATCmd[9]='T';
ATCmd[10]=0xBB;//'=';
ATCmd[11]='1';
ATCmd[12]=0xBC;//VK_OEM_COMMA;//,
ATCmd[13]=0xFF;//VK_LSHIFT;
ATCmd[14]=0xDE;//VK_OEM_7;//"
ATCmd[15]='I';
ATCmd[16]='P';
ATCmd[17]=0xDE;//VK_OEM_7;
ATCmd[18]=0xFF;//VK_LSHIFT;
ATCmd[19]=0xBC;//VK_OEM_COMMA;//,
ATCmd[20]=0xFF;//VK_LSHIFT;
ATCmd[21]=0xDE;
ATCmd[22]='C';
ATCmd[23]='M';
ATCmd[24]='N';
ATCmd[25]='E';
ATCmd[26]='T';
ATCmd[27]=0xFF;//VK_LSHIFT;
ATCmd[28]=0xDE;//VK_OEM_7;
ATCmd[29]=VK_RETURN;
if(!(GetKeyState(VK_CAPITAL) && 0xFF))
{
keybd_event(VK_CAPITAL,0,0,0);
keybd_event(VK_CAPITAL,0,KEYEVENTF_KEYUP,0);
}
for(i=0;i<=29;i++)
{
switch(i)
{
case 14:
case 17:
case 20:
case 21:
case 28:
keybd_event(VK_LSHIFT,0,0,0);
keybd_event(ATCmd[i],0,0,0);
keybd_event(ATCmd[i],0,KEYEVENTF_KEYUP,0);
keybd_event(VK_LSHIFT,0,KEYEVENTF_KEYUP,0);
break;
default:
keybd_event(ATCmd[i],0,0,0);
keybd_event(ATCmd[i],0,KEYEVENTF_KEYUP,0);
break;
}
}
// sleep(1000);
Sleep(500);
ATCmd[0]='A';
ATCmd[1]='T';
ATCmd[2]='D';
ATCmd[3]=VK_SPACE;
ATCmd[4]=VK_MULTIPLY;
ATCmd[5]='9';
ATCmd[6]='9';
ATCmd[7]='3';//35;//'#';
ATCmd[8]=0xBA;//;
ATCmd[9]=VK_RETURN;
for(i=0;i<=9;i++)
{
switch(i)
{
case 7:
keybd_event(VK_LSHIFT,0,0,0);
keybd_event(ATCmd[i],0,0,0);
keybd_event(ATCmd[i],0,KEYEVENTF_KEYUP,0);
keybd_event(VK_LSHIFT,0,KEYEVENTF_KEYUP,0);
break;
default:
keybd_event(ATCmd[i],0,0,0);
keybd_event(ATCmd[i],0,KEYEVENTF_KEYUP,0);
break;
}
}
Sleep(2000);
//Send OK to close the windows
//hdc=::GetWindowDC(gFocus);
RECT rect;
if(::GetWindowRect(gFocus, &rect))
{
mouse_event(MOUSEEVENTF_MOVE,rect.right-40,rect.top+8,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,rect.right-40,rect.top+8,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,rect.right-40,rect.top+8,0,0);
}
}
void CInputATCMDDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
ReleaseFocus();
SendKey();
}
void CInputATCMDDlg::OnLButtonDblClk(UINT nFlags, CPoint point)
{
OnLButtonDown(nFlags, point);
}
BOOL CInputATCMDDlg::PreTranslateMessage(MSG* pMsg)
{
HWND wnd = ::GetForegroundWindow();
if(IsWindow(wnd))
{
if(wnd != this->m_hWnd)
{
if(gFocus != wnd)
{
if(IsWindow(gFocus))
{
// AttachThreadInput(
// GetWindowThreadProcessId(m_hWnd,NULL),
// GetWindowThreadProcessId(gFocus,NULL),
// FALSE);
gFocus=::GetFocus();
}
gFocus = wnd;
// AttachThreadInput(
// GetWindowThreadProcessId(m_hWnd,NULL),
// GetWindowThreadProcessId(gFocus,NULL),
// TRUE);
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CInputATCMDDlg::OnRButtonDblClk(UINT nFlags, CPoint point)
{
OnLButtonDown(nFlags, point);
}
void CInputATCMDDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
OnLButtonDown(nFlags, point);
}
void CInputATCMDDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
ReleaseFocus();
}
void CInputATCMDDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
ReleaseFocus();
}
void CInputATCMDDlg::ReleaseFocus()
{
if(IsWindow(gFocus))
{
HWND wnd = ::GetForegroundWindow();
if(IsWindow(wnd))
{
if(wnd == gFocus)
{
return;
}
}
::SetForegroundWindow(gFocus);
::SetFocus(gFocus);
}
}
void CInputATCMDDlg::OnOK()
{
ShowWindow(SW_HIDE);
}
void CInputATCMDDlg::OnCancel()
{
ShowWindow(SW_HIDE);
}
void CInputATCMDDlg::OnShowInputATCmd()
{
ShowWindow(SW_SHOW);
}
void CInputATCMDDlg::OnUpdateShowInputATCmd(CCmdUI* pCmdUI)
{
pCmdUI->Enable(!IsWindowVisible());
}
void CInputATCMDDlg::OnHideInputATCmd()
{
ShowWindow(SW_HIDE);
}
void CInputATCMDDlg::OnUpdateHideInputATCmd(CCmdUI* pCmdUI)
{
pCmdUI->Enable(IsWindowVisible());
}
void CInputATCMDDlg::OnExit()
{
CDialog::OnOK();
}
void CInputATCMDDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
if(bShow)
{
cSystray.SetMenuDefaultItem(IDM_HIDE_INPUTATCMD, FALSE);
}
else
{
cSystray.SetMenuDefaultItem(IDM_SHOW_INPUTATCMD, FALSE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -