C#操作窗口类句柄操作.docx

上传人:b****6 文档编号:4487746 上传时间:2022-12-01 格式:DOCX 页数:8 大小:15.54KB
下载 相关 举报
C#操作窗口类句柄操作.docx_第1页
第1页 / 共8页
C#操作窗口类句柄操作.docx_第2页
第2页 / 共8页
C#操作窗口类句柄操作.docx_第3页
第3页 / 共8页
C#操作窗口类句柄操作.docx_第4页
第4页 / 共8页
C#操作窗口类句柄操作.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

C#操作窗口类句柄操作.docx

《C#操作窗口类句柄操作.docx》由会员分享,可在线阅读,更多相关《C#操作窗口类句柄操作.docx(8页珍藏版)》请在冰豆网上搜索。

C#操作窗口类句柄操作.docx

C#操作窗口类句柄操作

实现过程:

过程一:

找到当前鼠标位置的句柄

您的使用2个WinAPI(俺喜欢自己封装下来用):

ViewCode

[Dlllmport("",EntryPoint="GetCursorPos")]

publicstaticexternboolGetCursorPos(outPointpt);

[DllImport("",EntryPoint="WindowFromPoint")]

publicstaticexternIntPtrWindowFromPoint(Pointpt);

田日田日田EndexOf;

}

publicoverridestringToString()

{

StringBuilderresult=newStringBuilder();

for(WinHWNDwinHandle=this;winHandle!

=null;winHandle=

{

("{0}:

{1};"‘Escape,

if==-1)break;

}

().TrimEnd(';');

privatestaticstring

{

string[]sMarks=(';'returnsMarks[].Split(}

privatestaticstring

{

string[]sMarks=(';'

string[]sChildMarks=

for(inti=0;i<;i++){sChildMarks[i]=sMarks[i];

}

returnsChildMarks;

}

.是不是都匹配

foreach(IntPtrbaseHwnd{

IntPtrhandle=baseHwnd;

for(inti=;i>=0;i--)

{

GetBaseMark(string

);

':

')[0];

[]GetChildMarks(

);

newstring[];

inbaseHwnds)

sMark)

stringsMark)

 

string[]sChildMark=sChildMarks[i].Split(':

');

try

{

1])];

handle=(handle,UnEscape(sChildMark[O]))[(sChildMark[

}

catch

{

break;

}

if(i==0)returnnewWinHWND(handle);

}

continue;

}

returnnull;

}

#region转义

privatestaticstringEscape(stringarg)

{

(":

","\\:

").Replace(";","\\;");

}

{

("\\:

",":

").Replace("\\;",";");

}

#endregion

publicstaticWinHWNDGetWinHWND()

{

returnnewWinHWND()));

}

}

WinAPI

上全部代码,里面加了窗口的部分属性,扩展其他的属性,自己发挥吧,就是搞

BViewCode

usingSystem;

usingusingnamespaceInformationCollectionDataFill

{

publicclassWinAPI

{

#regionWinodwsAPI

[DllImport("",EntryPoint="FindWindow")]

privatestaticextern

IntPtrFindWindow(

stringIpCIassName,stringIpWindowName);

[Dlllmport("",EntryPoint="FindWindowEx")]

privatestaticexternIntPtrFindWindowEx(IntPtrhwndParent,lntPtrhwndChildAfter,

nglpszWindow);

[DllImport("",EntryPoint="SendMessage")]

privatestaticexternintSendMessage(IntPtrhWnd,intMsg,IntPtrwParam,string

[DllImport("",EntryPoint="GetParent")]

publicstaticexternIntPtrGetParent(lntPtrhWnd);

[DllImport("",EntryPoint="GetCursorPos")]

publicstaticexternboolGetCursorPos(outPointpt);

[DllImport("",EntryPoint="WindowFromPoint",CharSet=,ExactSpelling=true

publicstaticexternIntPtrWindowFromPoint(Pointpt);

[DllImport("",CharSet=]

publicstaticexternintGetClassName(IntPtrhWnd,StringBuilderlpCIassName,

[DllImport("",CharSet=]

publicstaticexternintGetWindowText(lntPtrhWnd,[Out,MarshalAs]StringBuilderlpString,

t);

stringlpszClass,stri

lParam);

)]

intnMaxCount);

intnMaxCoun

[DllImport(

"",CharSet=]

 

publicstaticexternint

GetWindowRect(lntPtrhwnd.

refRectanglerc);

[DllImport("",CharSet=]

refRectanglerc);

publicstaticexternintGetClientRect(lntPtrhwnd,

[DllImport("",CharSet=]

intx,inty,intnWidth,intnHeight,boolbRepaint);

publicstaticexternintMoveWindow(lntPtrhwnd,

[DllImport("",CharSet=,SetLastError=true,ExactSpelling=true)]

publicstaticexternintScreenToClient(lntPtrhWnd,refRectanglerect);

#endregion

#region圭寸装API方法

ndexOf;

}

privateRectangleGetRect()

{

if==null)returndefault(Rectangle);

RectangleclientSize=;

RectangleclientPoint=

returnnewRectangle,,,;

}

publicstaticWinHWNDGetWinHWND()

{

returnnewWinHWND()));}

publicoverridestring

{

StringBuilderresult=

for(WinHWNDwinHand{

("{0}:

{1};"‘Escape,if==-1)break;

}

().TrimEnd(';');

}

privatestaticstring

{

string[]sMarks=(';'returnsMarks[].Split(}

privatestaticstring

{

string[]sMarks=(';'

string[]sChildMarks=

for(inti=0;i<;i++){

ToString()

newStringBuilder();this;winHandle!

=

GetBaseMark(string

);

':

')[0];

[]GetChildMarks(

);

newstring[];

null;winHandle=

sMark)

stringsMark)

 

sChildMarks[i]=sMarks[i];

}

returnsChildMarks;

}

.是不是都匹配

foreach(IntPtrbaseHwndinbaseHwnds)

{

IntPtrhandle=baseHwnd;

for(inti=;i>=0;i--)

{

string[]sChildMark=sChildMarks[i].Split(':

');

try

{

1])];

handle=(handle,UnEscape(sChildMark[0]))[(sChildMark[

}

catch

{

break;

}

if(i==0)returnnewWinHWND(handle);

}

continue;

}

returnnull

}

#region转义

privatestaticstring

{

(":

","\\:

").Replace(

}

privatestaticstring

{

("\\:

",":

").Replace(

}

#endregion

}

}

Escape(stringarg)

"\\;"

);

UnEscape(stringarg)

"\\;"

);

效果:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1