RealPath:
WebPath:
2017/02/12 02:24 (JST) 更新
ライブラリ作成 >>

DLL作成

Contents

モジュール定義ファイル(defファイル)を作成

LIBRARY WindowProcessDll

EXPORTS
    HookForProcess @1
    UnhookForProcess @2

プロジェクト設定

[リンカ] - [入力] - [モジュール定義ファイル] = <.defファイル名>

関数の定義

__stdcall 付きで定義する。

BOOL __stdcall HookForProcess()
{
    return 1;
}

DllMainを定義

BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD dwReason, LPVOID lpvReserved)
{
    g_hInstDll = hInstDll;

    switch(dwReason){
    case DLL_PROCESS_ATTACH: // 初期化処理 //
        break;
    case DLL_PROCESS_DETACH: // 終了処理 //
        break;
    }
    return TRUE;
}

DLLプロジェクトのReleaseビルドでlibが生成されない

[リンカ] - [入力] - [モジュール定義ファイル] の設定し忘れ

VBから利用

Declare Function Hoge Lib "xxxx.dll" alias "HookForProcess" (ByVal str As String) As Long

Dim str As String
str = String(256, vbNullChar)
Hoge(str)
str = Left$(str, InStr(str, vbNullChar) - <span></span>1)

例:VS2013 Susie Plug-in

関数プロトタイプ

int __declspec(dllexport) __stdcall GetPluginInfo(int infono, LPSTR buf, int buflen);

関数定義

int __stdcall GetPluginInfo(int infono, LPSTR buf, int buflen)
{
    ...
}

defファイル

EXPORTS
    GetPluginInfo
    IsSupported

例:VS2013 DllTest

関数プロトタイプ

#define EXPORT extern "C" __declspec(dllexport)

EXPORT int SetHook();

関数定義

EXPORT int SetHook()
{
    ...
}

defファイル

LIBRARY DllTest

SECTIONS
    MY_DATA READ WRITE SHARED

EXPORTS
    MyHookProc    @1
    SetHook        @2
    ResetHook    @3