社区
C#
帖子详情
求IntPtr详细使用方法
吃饭睡觉打小白
2009-12-24 05:36:58
如题
...全文
824
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#模拟鼠标操作(移动 单击 双击等很多操作)
WinAPI-Wrapper 模拟鼠标点击 用于模拟鼠标移动、点击、窗口操作等的Windows API包装器类。 API 下面是一些可用的
方法
的总结。有更多的
方法
和类,比下面列出的要多,但目的是要大致了解包装器能做什么。要查看关于特定
方法
的
详细
信息和参数的
详细
信息,请查看代码本身,因为它的注释很好。 Mouse.cs public static void LeftClick(); public static void RightClick(); public static void MiddleClick(); public static void LeftDown(); public static void LeftUp(); public static void RightDown(); public static void RightUp(); public static void MiddleDown(); public static void MiddleUp(); public static void Move(
int
x,
int
y); public static void LeftDrag(Po
int
po
int
1, Po
int
po
int
2,
int
int
erval,
int
lag); Window.cs public static bool DoesExist(string windowTitle); public static
Int
Ptr
Get(string windowTitle); public static
Int
Ptr
GetFocused(); public static void SetFocused(
Int
Ptr
hWnd); public static bool IsFocused(
Int
Ptr
hWnd); public static void Move(
Int
Ptr
hWnd,
int
x,
int
y); public static void Resize(
Int
Ptr
hWnd,
int
width,
int
height); public static void Hide(
Int
Ptr
hWnd); public static void Show(
Int
Ptr
hWnd); public static Rectangle GetDimensions(
Int
Ptr
hWnd); public static Size GetSize(
Int
Ptr
hWnd); public static Po
int
GetLocation(
Int
Ptr
hWnd); public static string GetTitle(
Int
Ptr
hWnd); public static void SetTitle(
Int
Ptr
hWnd, string title); public static void Maximize(
Int
Ptr
hWnd); public static void Minimize(
Int
Ptr
hWnd); public static void Normalize(
Int
Ptr
hWnd); public static Bitmap Screenshot(
Int
Ptr
hWnd); public static void RemoveMenu(
Int
Ptr
hWnd); public static void Close(
Int
Ptr
hWnd); public static void DisableCloseButton(
Int
Ptr
hWnd); public static void DisableMaximizeButton(
Int
Ptr
hWnd); public static void DisableMinimizeButton(
Int
Ptr
hWnd); public static void EnableMouseTransparency(
Int
Ptr
hWnd); public static Po
int
ConvertToWindowCoordinates(
Int
Ptr
hWnd,
int
x,
int
y); public static Po
int
GetCoordinateRelativeToWindow(
Int
Ptr
hWnd); Desktop.cs public static Bitmap Screenshot(); public static void HideTaskBar(); public static void ShowTaskBar(); public static
int
GetWidth(); public static
int
GetHeight();
使用
在windows api文件夹中编译代码会产生一个.dll文件。任何引用这个.dll的ccode都可以
使用
包装器。
C#查找窗口句柄的
方法
C#查找窗口句柄,方便操作窗口。传递数据等。用windows API。WINDOWS上的好资源,早下载早受益。做开发离不了。
C#调用DOS命令
方法
C#调用DOS命令
方法
C#
111,121
社区成员
642,536
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章