• 2024-07-31关于使用C#注入C++的封装DLL后打印内容乱码
    最近因需要,用C++写了个钩子的DLL,一切工作测试通过后,放到C#里使用P/Invoke调用,发现部分乱码,最后反复测试,才发现一个问题,原来SetWindowsHookEx这个函数,也是分A版和W版,最后换了就正常了,附上对比。。乱码[DllImport("user32.dll",SetLastError=true]publicstaticex
  • 2024-07-10C#的DllImport使用方法
    1.托管代码与非托管代码托管代码:我们编写的C#代码(也包括.net平台上的其他语言,如VB,J#等),首先经过编译器把代码编译成中间语言(IL),当方法被调用时,公共语言运行库CLR把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用使用。托管代码的源代码
  • 2024-07-07WPF single instance via mutex
    usingSystem;usingSystem.Collections.Generic;usingSystem.Configuration;usingSystem.Data;usingSystem.Diagnostics.Eventing.Reader;usingSystem.Linq;usingSystem.Runtime.InteropServices;usingSystem.Threading;usingSystem.Threading.Tasks;usingS
  • 2024-04-06C#让标题栏闪烁着动起来的方法
    目录1.API函数FlashWindow(1)添加命名空间(2)声明DllImport方法(3)FlashWindow函数2.P/Invoke3.再来一个示例        在Windows系统中,当程序在后台运行时,如果某个窗体的提示信息需要用户浏览,该窗体就会不停地闪烁,这样就会吸引用户的注意。同样,如果在自己的程序中使
  • 2024-03-27关于动态调用类库的一点实践
    由于应用需求,需要调用C的类库,本来是用[DllImport]中绝对路径的方式引入就行,但无奈该类库还有其他类库,也并非自己的程序提供,所以还是想采用动态的方式进行引入。Tips:由于是C的类库,不能采用Assembly.Load的方式,会抛出System.BadImageFormatException:“BadILformat“异常。DllIm
  • 2023-11-08dllimport 和 dllexport
    Dll在需要暴露接口的头文件里添加dllexport声明,比如,#defineDllExport__declspec(dllexport)classDllExportC{inti;virtualintfunc(void){return1;}};注意,禁止对可导出类的成员显式使用 dllimport 和 dllexport 特性。我们一般情况
  • 2023-10-27CAD Revit 二次开发开启控制台打印调试信息
    第一步:编写控制台帮助类,调用kernel32.dll中控制台API控制台帮助类publicclassConsoleHelper{privateconstuintSTD_INPUT_HANDLE=0xfffffff6;privateconstuintSTD_OUTPUT_HANDLE=0xfffffff5;privateconstuintSTD_ERROR_HANDLE
  • 2023-08-03c#的dllimport使用方法详解
    关于“C#的DllImport使用方法详解”的攻略如下:简介DllImport是C#中一个用于调用非托管代码的方法。它可以让我们在C#代码中调用一些使用一些C++或Win32API等编写的代码。使用方法DllImport的用法非常简单,我们只需要使用指定DllImport特性来声明一个需要调用的函数,然后在代码
  • 2023-08-01 WCF无法加载DLLImporte的dll(focas)
    WCF无法加载DLLImported的dll尝试将外部DLL放到路径C:\Windows\SysWOW64\inetsrv  DllImport1.托管代码与非托管代码在学习DllImport方法之前,先了解下托管代码和非托管代码的概念。我们编写的C#代码(不只是C#,也包括.net平台上的其他语言,如VB,J#等),首先经过编译器把代码编译
  • 2023-07-28C#动态调用C/C++的DLL
    C#调用C/C++的dll有两种方式,下边就写一下两种不同方式的调用方法。1.DllImport方式[DllImport("CalcDll")]publicexternintAdd(inta,intb);其中CalcDll为C++动态库,Add为动态库中的方法,使用DllImport引入需要加载的DLL,使用关键字extern修饰C++库中的方法,之后正常调用即可。
  • 2023-03-30用C#调用Windows API向指定窗口发送按键消息
    用C#调用WindowsAPI向指定窗口发送一、调用WindowsAPI。C#下调用WindowsAPI方法如下:1、引入命名空间:usingSystem.Runtime.InteropServices;2、引用需要使用的方法,格式:[DllImport("DLL文件")]方法的声明;[DllImport("user32.dll")]privatestaticexternboolShow
  • 2023-02-27c#读取INI文件和向ini文件写入数据
    //读取INI文件[DllImport("kernel32")]publicstaticexternintGetPrivateProfileString(stringsection,stringkey,stringdef,StringBuilderretVal,intsize,str
  • 2023-02-20平台调用 (P/Invoke):跨平台方案
      接前上一篇:平台调用(P/Invoke):DllImport特性说明  首先,我们知道C#和C/C++都是跨平台的,但是原理上他们是不一样的:  C#首先编译成一种中间语言(IL)的程序集,然后
  • 2022-11-19C#获取窗口句柄并修改窗口标题
    usingSystem.Runtime.InteropServices;//添加引用,才可以使用[DllImport("User32.dll")]namespace窗口句柄操作{internalclassProgram{[DllImport("Us
  • 2022-11-04__declspec(dllimport) 和 __declspec(dllexport)的使用详解、以及 XX_API 的含义
    1.C++代码里调用别人的库、或者写库给别人用、大概有如下的方法(只讨论windows系统的情况):----a)提供头文件h、静态库lib --》静态链接----b)提供头文件h、 
  • 2022-10-20C#向其实进程子窗体发送指令
    近日,想在自己的软件简单控制其它软件的最大化最小化,想到直接向进程发送指令,结果一直无效,经过Spy++发现,原来快捷方式在子窗体上,所以需要遍历子窗体在发送指令,以下为参考代码
  • 2022-09-29DEV C++创建64位DLL,再用C#调用入门测试
    1. DEVC++创建64位DLL  DEVC++新建--项目--dll--选择C项目---确定  C文件中添加1#include"devdll.h"2#include<windows.h>3/*在程序中添加
  • 2022-09-18使用 C# 承载 Flutter Desktop 进行插件开发
    FlutterSharpGoogle官方迟迟没有支持使用C#进行FlutterDesktop的插件开发,本Demo初步跑通,原创不易,如果对您有所帮助,请赐一个✨哈哈,详见https://github.com/Live