自己把在学习中得到的经验随时写下来。
---------------------------------
Cstring转DWORD
DWORD ID=_tcstol(iter->second.csStallId,0,16);
----------------------------------
VC中表示基地加偏移数据
int * p; p = (int *)0x001897D4; p=(int *)(*p+0x8); p=(int *)(*p+0x4);
-------------------------------------
线程过程函数中设置热键
DWORD WINAPI ThreadProc(LPVOID lpParameter) { hwndDLG=CreateDialog(hinst,MAKEINTRESOURCE(IDD_DIALOG_WG),NULL,(DLGPROC)DlgProc); RegisterHotKey(0,100,0,VK_HOME); MSG msg; while (GetMessage(&msg,0,0,0)) { switch(msg.message) { case WM_HOTKEY: ShowWindow(hwndDLG,SW_SHOW); break; } TranslateMessage(&msg); DispatchMessage(&msg); } UnregisterHotKey(0,100); return TRUE; }
---------------------------------
DLL注入后,失去焦点,用这个函数
SwitchToThisWindow(Hwnd,TRUE);
------------------------------------
计算两坐标的距离
int CCtrlCon::com_sam(float x1,float y1,float x2,float y2) { float x=fabs(x1-x2); float y=fabs(y1-y2); float z=sqrt(pow(x, 2) + pow(y, 2)); return (int)z; }
----------------------------------
字符转换的一点小问题
case WM_LBUTTONDOWN: int x = LOWORD(lParam); int y = HIWORD(lParam); WCHAR s[200]; swprintf_s(s, _T("x=%d,y=%d"), x, y); MessageBox(NULL, s, _T("提示"), NULL); return TRUE;
--------------------------------------
用户自定义消息
#define UM_TEST WM_USER+1
BEGIN_MESSAGE_MAP(CMFCApplication1Dlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_MESSAGE(UM_TEST, &CMFCApplication1Dlg::OnTest)//添加消息映射 ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication1Dlg::OnBnClickedButton1) END_MESSAGE_MAP()
LRESULT CMFCApplication1Dlg::OnTest(WPARAM w, LPARAM l) { AfxMessageBox(_T("非系统消息")); return 100; }
------------------------------------------------
记事本里添加控件
HWND hWnd = ::FindWindow(NULL, _T("无标题 - 记事本")); CWnd *p = CWnd::FromHandle(hWnd); m_wnd.CreateEx(WS_EX_CLIENTEDGE,L"Button", NULL, WS_CHILD | WS_VISIBLE|LVS_REPORT, CRect(150, 50, 300,100), p, 8921); p->SetDlgItemText(8921, L"按钮"); }
---------------------------------------
CHECKBOX选中
if (BST_CHECKED == IsDlgButtonChecked(IDC_HUAN))//#define BST_CHECKED 0x0001 { AfxMessageBox(_T("选中了")); } else { AfxMessageBox(_T("没选中")); }
----------------------------------------------------------------------------
调用DLL模块中的函数:
typedef int(*pFun)(int, int);//定义函数指针 pFun Myfun;//定义函数指针变量 HINSTANCE hModule = LoadLibrary(L"MyDll.dll");//加载DLL到内存中, 取得DLL模块的首地址, Myfun = (pFun)GetProcAddress(hModule, "Fun");//取得模块中Fun函数的地址,赋于函数指针 int a = Myfun(3, 5);//用函数指针直接以后可以调用DLL模块中的函数了
-------------------------------------------------------------------------------