winform的图如下
报错信息如下,抛出了Win32Exception
窗体代码如下
public partial class Form1 : Form
{
[DllImport("C:\\Users\\Dell-pc\\Desktop\\ConsoleApplication1\\Debug\\ConsoleApplication1.dll")]
protected static extern bool BeginHook();
[DllImport("C:\\Users\\Dell-pc\\Desktop\\ConsoleApplication1\\Debug\\ConsoleApplication1.dll")]
protected static extern bool FinishHook();
string str="";
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
BeginHook();
}
private void button2_Click(object sender, EventArgs e)
{
FinishHook();
}
protected override void WndProc(ref System.Windows.Forms.Message msg)
{
str = str + msg.WParam + "\n";
label1.Text = str;
}
}
这里导入了自己写的dll
dll的cpp文件代码
#include "stdafx.h"
#include "ConsoleApplication1.h"
#include <windows.h>
HMODULE hThisDllModule;
#pragma data_seg("test")
HHOOK hHook=NULL;
HWND hMainWindow=NULL;
#pragma data_seg()
LRESULT CALLBACK HandleHookMessage(int nCode, WPARAM wParam, LPARAM lParam)
{
PostMessage(hMainWindow, nCode, wParam, lParam);
return ::CallNextHookEx(hHook, nCode, wParam, lParam);
}
CONSOLEAPPLICATION1_API BOOL WINAPI BeginHook()
{
hHook=::SetWindowsHookEx(WH_KEYBOARD, HandleHookMessage, hThisDllModule, 0);
return true;
}
CONSOLEAPPLICATION1_API BOOL WINAPI FinishHook()
{
return ::UnhookWindowsHookEx(hHook);
}
dll的h文件
#ifdef CONSOLEAPPLICATION1_EXPORTS
#define CONSOLEAPPLICATION1_API __declspec(dllexport)
#else
#define CONSOLEAPPLICATION1_API __declspec(dllimport)
#endif
CONSOLEAPPLICATION1_API BOOL WINAPI BeginHook();
CONSOLEAPPLICATION1_API BOOL WINAPI FinishHook();
用了def文件
LIBRARY
EXPORTS
BeginHook
FinishHook
SECTIONS
test Read Write Shared
代码如上,这个应该是窗体代码中有哪里出错了所以启动不了窗体,但是我看不出哪里出错了,求大神指点指点