Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C# API操作实例

C# API操作实例

作者头像
zls365
发布于 2020-08-19 02:33:43
发布于 2020-08-19 02:33:43
68900
代码可运行
举报
文章被收录于专栏:CSharp编程大全CSharp编程大全
运行总次数:0
代码可运行

/*c#在调用c++方法或者window api时不能象调用c#本身写的dll类库那样直接通过引用dll就可以调用相应的方法, 而是要把要引用的dll放到bin中,现通过[DllImport("User32.dll")]引用*/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace API
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
    }
        [DllImport("User32.dll")]
        public static extern int MessageBoxA(int h, string m, string c, int type);
        [DllImport("User32.dll")]
        public static extern int MessageBox(int h, string m, string c, int type);
        [DllImport("User32.dll")]
        public static extern int GetDoubleClickTime();
        // public static extern int SendMessageA(int h, int m, int c, int type);
        private void button1_Click(object sender, EventArgs e)
        {
             MessageBoxA(0, "API Message Box", "API Demo", 0);
             MessageBox(0, "API Message Box", "API Demo", 0);
            MessageBox(0,GetDoubleClickTime().ToString(), "API Demo", 0);
            System.Windows.Forms.MessageBox.Show("111");
            // SendMessageA(0, 11, 22, 0);
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSharp编程大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
c#钩子学习笔记(一)
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
冰封一夏
2019/09/10
7470
c#中使用钩子
相信以前用过VB、Delphi,特别是VC的程序员应该对钩子程序都不陌生。在C#中我们同样可以使用钩子程序来实现特殊效果,比如当用户按下某个特殊键时提示,比如关闭应用程序前提示等。 当然使用方法相对VC来说要稍微复杂一点,有的地方还不太方便,下面的例子中实现两个基本功能: 1、按下Alt+F4时使窗口最小化 2、关闭应用程序前提示 不过目前只能捕获消息,不能屏蔽消息,我正在实验,也希望知道的高手能多多指教 一、加入winuser.h中的定义 因为钩子程序一般情况下都是在vc下使用的,在c#里面并没有对应的方法、结构等的定义,我们首先需要把winuser.h中的相关定义加入自己的类
冰封一夏
2019/09/10
1.2K0
c# 调用win32模拟点击的两种方法
第一种 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace WindowsApplication2 { public parti
lpxxn
2018/01/31
1.7K0
CSharp通过Websocket传输图片在WEB端显示及传递鼠标事件
这个代码示例提供了三个按钮,分别用于模拟鼠标的移动、点击和拖拽操作。在 btnMove_Click 中,我们首先获取当前鼠标光标的位置,并将其向右下角移动 10 个像素,然后等待 500 毫秒,最后将鼠标光标移回原来的位置。在 btnClick_Click 中,我们模拟了鼠标左键按下和抬起的事件。在 btnDrag_Click 中,我们模拟了鼠标的拖拽事件。
码客说
2023/05/31
8510
C# 进程间通讯
进程间通讯的方式有很多,常用的有共享内存(内存映射文件、共享内存DLL、剪切板等)、命名管道和匿名管道、发送消息等几种方法来直接完成,另外还可以通过socket口、配置文件和注册表等来间接实现进程间数据通讯任务。以上这几种方法各有优缺点,具体到在进程间进行大数据量数据的快速交换问题上,则可以排除使用配置文件和注册表的方法;另外,由于管道和socket套接字的使用需要有网卡的支持,因此也可以不予考虑。这样,可供选择的通讯方式只剩下共享内存和发送消息两种。
zls365
2021/01/13
1.6K0
C# 进程间通讯
C#读取“我的文档”等特殊系统路径及环境变量
返回“我的文档”路径字符串 Environment.GetFolderPath(Environment.SpecialFolder.Personal) 本技巧使用GetFolderPath方法来获取指
hbbliyong
2018/03/06
2.7K0
C#读取“我的文档”等特殊系统路径及环境变量
C# DllImport的用法
大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能。 DllImport所在的名字空间 using System.Runtime.InteropServices; MSDN中对DllImportAttribute的解释是这样的:可将该属性应用于方法。DllImportAttribute 属性提供对从非托管 DLL 导出的函数进行调用所必需的信息。作为最低要求,必须提供包含入口点的 DLL 的名称。 DllImport 属性定义如下: namespace System.Runtime.InteropServices {   [AttributeUsage(AttributeTargets.Method)]   public class DllImportAttribute: System.Attribute   {    public DllImportAttribute(string dllName) {…}    public CallingConvention CallingConvention;    public CharSet CharSet;    public string EntryPoint;    public bool ExactSpelling;    public bool PreserveSig;    public bool SetLastError;    public string Value { get {…} }   } }   说明:   1、DllImport只能放置在方法声明上。   2、DllImport具有单个定位参数:指定包含被导入方法的 dll 名称的 dllName 参数。   3、DllImport具有五个命名参数:    a、CallingConvention 参数指示入口点的调用约定。如果未指定 CallingConvention,则使用默认值 CallingConvention.Winapi。    b、CharSet 参数指示用在入口点中的字符集。如果未指定 CharSet,则使用默认值 CharSet.Auto。    c、EntryPoint 参数给出 dll 中入口点的名称。如果未指定 EntryPoint,则使用方法本身的名称。    d、ExactSpelling 参数指示 EntryPoint 是否必须与指示的入口点的拼写完全匹配。如果未指定 ExactSpelling,则使用默认值 false。    e、PreserveSig 参数指示方法的签名应当被保留还是被转换。当签名被转换时,它被转换为一个具有 HRESULT 返回值和该返回值的一个名为 retval 的附加输出参数的签名。如果未指定 PreserveSig,则使用默认值 true。    f、SetLastError 参数指示方法是否保留 Win32″上一错误”。如果未指定 SetLastError,则使用默认值 false。   4、它是一次性属性类。   5、此外,用 DllImport 属性修饰的方法必须具有 extern 修饰符。
全栈程序员站长
2022/07/23
1.1K0
[C# 开发技巧]如何防止程序多次运行
最近发现很多人在论坛中问到如何防止程序被多次运行的问题的,如: http://social.msdn.microsoft.com/Forums/zh-CN/6398fb10-ecc2-4c03-ab25-d03544f5fcc9, 所以这里就记录下来,希望给遇到同样问题的朋友有所参考的,同时也是对自己的一个积累。在介绍具体实现代码之前,我们必须明确解决这个问题的思路是什么的?下面只要分享我的一个思考的这个问题的方式:
乔达摩@嘿
2020/09/11
2.2K0
[C# 开发技巧]如何防止程序多次运行
C#操作INI配置文件示例
该文章介绍了如何用C#操作INI配置文件,包括读取和写入配置项。文章首先介绍了INI文件的结构和配置项的命名,然后讲解了如何在C#中读取和写入配置项。最后,文章提供了一个示例,演示了如何使用这些API来读取和写入配置项。
CNXY
2017/12/25
1.3K0
C#操作INI配置文件示例
[C#]自定义消息收发
原文链接:http://blog.csdn.net/humanking7/article/details/51035974
祥知道
2020/03/10
6500
C#控制键盘按键(大小写按键等)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace sn设置键盘大小写 { public partial class Form1
用户8671053
2021/11/02
1.5K0
Winform注册和注销全局快捷键
本文转载:http://www.cnblogs.com/scottckt/archive/2007/12/03/981105.html
跟着阿笨一起玩NET
2018/09/18
1.8K0
c# 控制职能运行单一实例,再次运行显示已经运行的实例
有这么个需求,软件只能运行一个实例,软件运行后可以让其隐藏运行 再次运行这个软件的时候就让正在运行的实例显示出来 ================================= 当软件隐藏后没办法拿到句柄 于是只有第一次运行的时候讲句柄保存下来,于是有了下面的 1 private void HideForm() 2 { 3 string handlestr = System.Diagnostics.Process.GetCurrentProcess().M
冰封一夏
2019/09/11
7070
c#中设置快捷键
最近找了一些资料,是讲在C#中设置快捷键运行方法或程序的 要设置快捷键必须使用user32.dll下面的两个方法。 BOOL RegisterHotKey(  HWND hWnd,  int id,  UINT fsModifiers,  UINT vk );   和 BOOL UnregisterHotKey(  HWND hWnd,  int id ); 转换成C#代码,那么首先就要引用命名空间System.Runtime.InteropServices;来加载非托管类user32.dll。于是有了
脑洞的蜂蜜
2018/02/01
1.1K0
VS2017生成DLL(C语言)文件并在C#中使用
下面我们将在VS2017生成dll文件(动态库文件)和lib文件(静态库文件),这里以C语言为例,用最简单的例子,来让读者了解如何生成dll文件(动态库文件)
zls365
2021/01/28
2.5K0
C#中使用SendMessage在进程间传递数据的实例
在解决方案下面新建三个项目:CopyDataStruct,Receiver和Sender。
zls365
2021/01/13
3.1K1
C#中使用SendMessage在进程间传递数据的实例
C# —— 利用Marshal.GetDelegateForFunctionPointer 来转换一个函数指针为一个委托
原来是为了在游戏外挂中发送键盘鼠标消息,自己写个sendmessage或者是postmessage又比较麻烦。于是google了一下,发现现在很多脚本工具都有这个功能,其中按键精灵的一个叫361度的插件已经有这个的实现,还验证过了。为什么不拿来己用呢? 首先分析一下按键精灵插件的接口,发现:
vv彭
2021/03/08
3.3K0
C# —— 利用Marshal.GetDelegateForFunctionPointer 来转换一个函数指针为一个委托
OffenSive Csharp Development Part1
公众号偶尔会发广告的时,想必老粉丝已经习惯了,一些新朋友可能有一些对广告有一些误解,广告标题、内容皆为投放商所定,如果觉得广告浪费时间大家可以不点进来,如果想赞助一下,可以点进来看一看,但请不要因为一个广告就在后台留言狂怼,所有的热爱都是在生活的前提上的,感谢理解。
鸿鹄实验室
2021/04/01
7470
OffenSive Csharp Development Part1
C#基于yolov3的行人检测
yolo_cpp_dll中的yolo_v2_class.cpp需要修改下构造函数detect_image
zls365
2020/08/19
1.3K0
C#基于yolov3的行人检测
C#_对内存的操作
最近一直不务正,老打算用C#写个外挂出来。 这方面对C#来说是个弱项,但并不表示无法做到。 下面写个简单的例子,和大家交流一下。 以windows中的扫雷为例,比如说读取雷的数量。 1.首先导入API(对底层的操作都要用API):
zls365
2021/03/16
8170
相关推荐
c#钩子学习笔记(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档