zoukankan      html  css  js  c++  java
  • Dll 入口函数

    代码

    BOOL WINAPI DllMain ( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved )
    {
        // 分别处理各种通知
        switch( fdwReason ) 
        { 
        
    case DLL_PROCESS_ATTACH:
                
    // 为新进程初始化,只能进行1次
                
    // 如果加载失败则返回FALSE
                MessageBox(0, TEXT("DLL_PROCESS_ATTACH"), TEXT(""), MB_OK);
                
    break;
            
    case DLL_THREAD_ATTACH:
           ::MessageBox(
    0, TEXT("DLL_THREAD_ATTACH"), TEXT(""), MB_OK);
                
    // 执行线程初始化操作
                break;
            
    case DLL_THREAD_DETACH:
           ::MessageBox(
    0, TEXT("DLL_THREAD_DETACH"), TEXT(""), MB_OK);
                
    // 执行线程清理操作
                break;
            
    case DLL_PROCESS_DETACH:
                
    // 执行清理操作
           ::MessageBox(0, TEXT("DLL_PROCESS_DETACH"), TEXT(""), MB_OK);
               
    break;
        }
        
    return TRUE;
    }

    俩个测试代码

    DWORD WINAPI MyThreadFunc(LPVOID p)
    {
        
    return 0;
    }


    void CDllMainDlg::OnBnClickedButton1()
    {
        
    // TODO: 在此添加控件通知处理程序代码
        HMODULE h;
        h 
    = LoadLibrary(TEXT("DLLSample.dll"));

        DWORD ThreadId;
        CloseHandle(CreateThread(NULL, 
    0&MyThreadFunc, NULL, 0&ThreadId));
        
    //FreeLibrary(h);
    }

    void CDllMainDlg::OnBnClickedButton2()
    {
        
    // TODO: 在此添加控件通知处理程序代码
        DWORD ThreadId;
        CloseHandle(CreateThread(NULL, 
    0&MyThreadFunc, NULL, 0&ThreadId));
    }

     

    DLL_PROCESS_ATTACH 进程第一次加载DLL时会触发

    DLL_PROCESS_DETACH   1  进程已经加载DLL 2 进程卸载DLL(包括进程关闭) 3 非使用TerminateProcess 函数关闭进程

    DLL_THREAD_DETACH   1 进程已经加载DLL 2 创建新线程

    DLL_THREAD_DETACH   1  进程已经加载DLL 2 ExitThread撤消线程 3 非使用TerminateThread函数关闭进程

    本来DELPHI也可以这样使用的,但是一直没找到我想到的结果

  • 相关阅读:
    sql语句开发使用---update
    获取弹出框的句柄,关闭弹出框
    水晶报表使用,解决相同数据库不同服务器使用同一个水晶报表模板问题?
    第一章 什么是SQL Server Integration Services (ssis) 系统。
    在 win 10 中使用sql 2012 附加低版本数据失败的解决办法。
    窗体间传值 委托应用
    有点小激动
    Adam
    SVN Unable to connect to a repository at URL问题解决
    C#基础---IComparable用法,实现List<T>.sort()排序
  • 原文地址:https://www.cnblogs.com/chengxin1982/p/1747748.html
Copyright © 2011-2022 走看看