/////////////////////////////////////////// MyPePlug.h ///////////////////////////////////////////////////////////
#ifdef MYPEPLUG
#else
#define MYPEPLUG extern "C" __declspec(dllimport)
#endif
MYPEPLUG void LoadPlug(const DWORD reversed,
HWND hWnd,
UINT msg,
WPARAM wParam,
LPARAM lParam);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////// MyPePlug.cpp//////////////////////////////////////////////////////////////
#include <Windows.h>
#define MYPEPLUG extern "C" __declspec(dllexport)
#include "MyPePlug.h "
bool flag = true;
void MySetLayeredWindowAttributes(HWND hWnd)
{
SetWindowLong(hWnd,GWL_EXSTYLE,
GetWindowLong(hWnd,GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)fun(hWnd,0,128,2);
FreeLibrary(hInst);
}
}
void LoadPlug(const DWORD reversed, HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg) {
case WM_COMMAND:
if(wParam == 118)//这是我自己通过资源添加的一个菜单的id
{
//由于我的vc++的sdk是老版本,所以没有SetLayeredWindowAttributes函数,如果你的sdk
//是新版本,就不用我这么麻烦了,你就可以直接调用SetLayeredWindowAttributes函数了
MySetLayeredWindowAttributes(hWnd);
}
else if(wParam == 119)
{
if(flag)
{
SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);
flag=false;
}
else
{
SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);
flag=true;
}
}
}
}
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)