程序主要代码部分:
typedef void(*SetHook)(void);
void process()
{
HINSTANCE hdll;
hdll = LoadLibrary(L"C:\\Users\\Cool Jie\\Documents\\Visual Studio 2013\\Projects\\SetwindowHook DLL\\Release\\SetwindowHook DLL.dll");
SetHook sethook;
if (hdll == NULL)
{
FreeLibrary(hdll);//shi fang dll
MessageBox(h1, L"加载dll失败!", L"erro", NULL);
}
else
{
sethook = (SetHook)GetProcAddress(hdll, "ll");
sethook();
}
}
dll代码部分:
// dllmain.cpp : 定义 DLL 应用程序的入口点。
include "stdafx.h"
include<windows.h>
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
LRESULT CALLBACK KeyboardProce(
int code,
WPARAM wParam,
LPARAM lParam
)
{
if ((wParam == VK_F8) && ((lParam << 31) == 0))
{
MessageBox(NULL, L"你按下了", L"", NULL);
}
return CallNextHookEx(NULL, code, wParam, lParam);
}
void Sethook()
{
HWND hwnd = FindWindow(L"WTWindow", L"测试");
if (!hwnd)
{
MessageBox(NULL, L"请先运行软件.", L"erro", MB_OK);
return;
}
DWORD Pid, Tid;
Tid = GetWindowThreadProcessId(hwnd, &Pid);
SetWindowsHookEx(WH_KEYBOARD, KeyboardProce, GetModuleHandle(L"SetwindowHook DLL.dll"), Tid);
}
void ll()
{
MessageBox(NULL, L"hello.", L"erro", MB_OK);
return;
}
我只是想调用dll里面的ll函数 让他弹出消息框 不知道哪里写错了调用就停止运行.
望大神指教
在工程中新建个def文件写入:
LIBRARY "SetwindowHook DLL" //你的工程名
EXPORTS //导出
ahjie //函数名