 |
不堵塞的等待函数
|
|
| |
| void CUtil::Wait(int nDelay, UINT nMsgFilter)
{
DWORD nStartTime = GetTickCount();
while (true)
{
DWORD nEndTime = GetTickCount();
if (nEndTime - nStartTime > (DWORD) nDelay)
break;
continue;
PumpMessages(NULL, nMsgFilter);
}
}
void CUtil::PumpMessages(HWND hWnd, UINT nMsgFilter)
{
MSG msg;
// Handle dialog messages
while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
//需要过滤的消息
if(nMsgFilter && nMsgFilter == msg.message)
{
continue;
}
if(!::IsDialogMessage(hWnd, &msg))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg); ...
|
|
| 作者:不祥 bluejoe张贴于2004-03-10 14:55:04.0,共阅读1987次,回复1次 |
|
|
 |
隐藏任务栏
|
|
| |
| ShowWindow(FindWindow(TEXT("Shell_TrayWnd"),NULL),SW_HIDE);
|
|
| 作者:不祥 jerry张贴于2004-05-11 20:45:57.0,共阅读3131次,回复3次 |
|
|
 |
创建唯一实例的程序
|
|
| |
| 用以创建唯一实例的程序,防止重复执行。
在应用类里面定义变量HANDLE m_hOneInstance;
BOOL CPlanningApp::InitInstance()
{
m_hOneInstance = ::CreateMutex(NULL, FALSE, "SOFTWARE.CAS.PLANNING");
if(GetLastError() == ERROR_ALREADY_EXISTS )
{
::MessageBox(NULL, _T("对不起!该程序已经运行,请勿重复执行该程序。"), "错误", MB_ICONERROR);
return FALSE;
}
...
}
|
|
| 作者:白乔 bluejoe张贴于2007-01-16 13:19:26.0,共阅读1765次,回复0次 |
|
|
 |
检测PE文件加壳信息用的特征码!含DEMO和源码
|
|
| |
| 我们只要知道PE的入口点地址.就可以进行匹配,我以经用它做了一个像stud_PE那样能检测PE文件外壳信息的程序,能有效检测170多种
相关DEMO和源代码[48,493字节]
//定义特征码结构体
/////////////////////////////////////////////////////////////////////////////
typedef struct _Feature
{
public:
LPCTSTR Pos; //相对于入口点的偏移
LPCTSTR Fea; //特征码
LPCTSTR Info; //壳信息
bool IsOrdered; //是否是顺序的.
}Feature,*PFeature;
Feature g_ShellInfoTab[] =
{
{"01020304050607090B0C","8B4424085683E8744875","Microsoft Visual C++ Private Version 2",0},
{"010203040508","8B4424088374","Microsoft Visual C++ Private Version 1",0},
{"0102030408090D" ...
|
|
| 作者:不祥 windy张贴于2004-08-05 10:32:58.0,共阅读11860次,回复5次 |
|
|
 |
根据进程ID杀死进程
|
|
| |
| HANDLE h=OpenProcess(PROCESS_ALL_ACCESS,TRUE, nProcessID);
if(h!=NULL)
{
TerminateProcess(h,0);
}
可以结合帖子 /showTip.jsp?tipid=3168 做出类似任务管理器样的东东....
|
|
| 作者:不祥 jerry张贴于2004-09-04 17:55:48.0,共阅读3037次,回复0次 |
|
|
 |
遍历系统中的进程
|
|
| |
| HANDLE hProcessSnap = NULL;
PROCESSENTRY32 pe32;
//获得当前进程快照
hProcessSnap = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
if( hProcessSnap == INVALID_HANDLE_VALUE )
{
return TRUE;
}
pe32.dwSize = sizeof(PROCESSENTRY32);
//列据进程名称
if( Process32First (hProcessSnap,&pe32) )
{
do
{
//这里获得可以获得进程的相关信息, 具体请查MSDN的 PROCESSENTY32结构
MessageBox(NULL, pe32.szExeFile, "遍历进程", MB_OK);
}while(Process32Next (hProcessSnap,&pe32));
}
else
{
...
|
|
| 作者:不祥 jerry张贴于2004-09-04 17:44:44.0,共阅读3706次,回复0次 |
|
|
 |
关机代码
|
|
| |
| //判断操作系统版本
OSVERSIONINFO osVer;
osVer.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
::GetVersionEx(&osVer);
//操作系统为win2000
if(osVer.dwPlatformId==VER_PLATFORM_WIN32_NT)
{
// Get a token for this process.
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
MessageBox("OpenProcessToken Error");
// Get the LUID for the shutdown privilege.
LookupP ...
|
|
| 作者:不祥 jerry张贴于2004-03-10 21:15:52.0,共阅读1879次,回复0次 |
|
|
 |
自定义消息
|
|
| |
| #define MY_MSG WM_USER+1
再在message map中
ON_MESSAGE(MY_MSG,OnGoodbye)
加在CPP文件的头上
BEGIN_MESSAGE_MAP(CTest, CView)
ON_MESSAGE(MY_MSG , OnGoodbye)
//{{AFX_MSG_MAP(CTest)
ON_WM_LBUTTONDOWN()
ON_WM_RBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
在类申明中加
afx_msg void myFunction();
加在头文件这个位置:
eg:// Generated message map functions
protected:
//{{AFX_MSG(CEx07aView)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG
afx_msg LRESULT OnGoodbye(WPARAM wParam ...
|
|
| 作者:不祥 jerry张贴于2004-03-10 21:10:41.0,共阅读1770次,回复0次 |
|
|
 |
PE格式效验
|
|
| |
| //打开文件
OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.hwndOwner = hWnd;
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFilter = "Executable Files (*.exe, *.dll)\0*.exe;*.dll\0All Files\0*.*\0\0";
ofn.lpstrFile = buffer;
ofn.nMaxFile = MAX_FILE_LENGTH;
ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_LONGNAMES | OFN_EXPLORER | OFN_HIDEREADONLY ;
GetOpenFileName(&ofn);
HANDLE hFile = CreateFile(buffer,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
//获得文件的内存映射句柄
HANDLE hMapping = Cr ...
|
|
| 作者:不祥 jerry张贴于2004-03-09 22:08:03.0,共阅读1853次,回复0次 |
|
|
|