社区
C#
帖子详情
求IntPtr详细使用方法
吃饭睡觉打小白
2009-12-24 05:36:58
如题
...全文
815
11
打赏
收藏
求IntPtr详细使用方法
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ProjectDD
2009-12-26
打赏
举报
回复
句柄的意思 查了一下,好象是 一个对象的 操作系统中的 ID是一个整数
我想操作系统肯定会根据这个ID 建立起一套映射,查找这个对象自身的一切资源与其相关性
yingkk
2009-12-26
打赏
举报
回复
自我感觉当某个控件被用来执行一些控件本身不支持的功能的时候就需要提供IntPtr也就是窗口句柄。比如用Panel来显示3D场景, 用Panel来播放电影。
wzhymxz
2009-12-26
打赏
举报
回复
给你一个实际的例子:
[DllImport( "gdi32.dll ")]
public static extern UInt32 SetPixel(IntPtr hdc, int X, int Y, Int32 crColor);
Dobzhansky
2009-12-26
打赏
举报
回复
大多用在跟 .net 底下的 os 平台互作时, 也可以跟其他原生库
下头的(原生的) 给你一个把柄,
以备后来你用这个把柄跟她对话,
她又不想你知道这个把柄到底有什么内涵.
往往是她们的内幕,
这样这个把柄就成了两边的一个信物,
见她如见人.
wzhymxz
2009-12-26
打赏
举报
回复
Intptr一般都是用来与API函数传递参数时或者获取句柄值是使用。
wzhymxz
2009-12-26
打赏
举报
回复
我就画矢量图的时候用这个!其他时候还真没用过!!!
RFEZGC
2009-12-26
打赏
举报
回复
在 win sdk中 所有 void* 类型的(包括被typedef的),结构类型的都 都可以是intptr,相当于sdk中的指针。
ProjectDD
2009-12-24
打赏
举报
回复
学习
吃饭睡觉打小白
2009-12-24
打赏
举报
回复
兄台,这些我都找的到哈,支持原创哦
十八道胡同
2009-12-24
打赏
举报
回复
C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。
资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。
所以,在调用的API函数中一定有类似窗体句柄这样的参数,那么当声明这个函数时,应该将它显式地声明为IntPtr类型。
例如,在一个C#程序中调用Win32API mciSendString函数控制光盘驱动器,这个函数的函数原型是:
MCIERROR mciSendString(
LPCTSTR lpszCommand,
LPTSTR lpszReturnString,
UINT cchReturn,
HANDLE hwndCallback
);
首先在C#中声明这个函数:
[DllImport("winmm.dll")]
private static extern long mciSendString(string a,string b,uint c,IntPtr d);
然后用这样的方法调用:
mciSendString("set cdaudio door open", null, 0, this.Handle);
也可以使用IntPtr.Zero将句柄设置为0;
或者使用类型强制转换:
mciSendString("set cdaudio door open", null, 0, (IntPtr)0 );
或者,使用IntPtr构造函数:
IntPtr a = new IntPtr(2121);
这里有两点比较重要:
一是在C#中声明Win32API时,一定要按照WinAPI的原型来声明,不要改变它的数据类型;
二是尽量不要过多使用类型强制转换或构造函数的方式初始化一个IntPtr类型的变量,这样会使程序变得难于理解并容易出错。
真相重于对错
2009-12-24
打赏
举报
回复
msdn
C#内存映射教程(代码)
本教程
详细
介绍了如何
使用
C#进行内存映射的基本操作,包括创建、打开、映射和关闭共享内存的过程。此外,还提供了一些示例代码来帮助理解具体的实现细节。掌握内存映射技术对于开发高性能的应用程序具有重要意义。
强制结束进程和关闭程序窗口 C#
本文将
详细
讲解如何
使用
C#语言来实现这一功能,结合“强制结束进程”和“关闭程序窗口”这两个核心知识点。 首先,让我们了解一下什么是进程。在计算机科学中,进程是程序的一次执行实例,它拥有独立的内存空间,...
C#模拟鼠标操作(移动 单击 双击等很多操作)
要查看关于特定
方法
的
详细
信息和参数的
详细
信息,请查看代码本身,因为它的注释很好。 Mouse.cs public static void LeftClick(); public static void RightClick(); public static void MiddleClick(); public ...
C#查找窗口句柄的
方法
- 为了处理跨进程和线程问题,可能需要
使用
`Invoke`或`BeginInvoke`
方法
。 - 窗口句柄可能会随时间变化,例如当窗口被创建、销毁或隐藏时,因此在长时间操作中,需要确保句柄的有效性。 五、资源推荐 在进行窗口...
C#调用DOS命令
方法
下面
详细
介绍几种常见
方法
: ####
方法
一:
使用
`Process`类直接调用命令行程序 这是最直接的
方法
,适用于需要调用单一命令或外部可执行文件的情况。例如,调用`ping.exe`命令检查网络连通性: ```csharp using ...
C#
111,120
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章