C#真的无法解决用SendMessage获取checkbox状态吗

如题所述

关于用C#来进行一些GUI操作,最好的做法还是用.net本身自带Automation库,该库应该是最强大的GUI操作库了,所有的windows控件都可以用这个来操作,用法非常简单,例如你这个获取checkbox状态的,我写了个函数:
bool GetCheckBoxState(string windowName, string controlName)
{
AutomationElement desktop = AutomationElement.RootElement;
AutomationElement window = desktop.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, windowName));
AutomationElement checkbox = window.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, controlName));
return ((TogglePattern)checkbox.GetCurrentPattern(TogglePattern.Pattern)).Current.ToggleState == ToggleState.On;
}
不论你是用MFC,还是C# winform,还是WPF,用以上代码都可以准确获取checkbox的状态,而且该库还有一个配套的工具,叫UISpy,这个工具可以获取控件的各个属性以及该控件所拥有的操作方法,直接照着这个工具所获取的信息就可以写出代码来,十分容易
温馨提示:内容为网友见解,仅供参考
无其他回答

C#真的没法解决用SendMessage获取checkbox状态吗
1.发送BM_CLICK可以选中checkbox。但是发送BM_SETCHECK就不行。2.发送BM_GETSTATE无法获取checkbox的状态。

C#真的无法解决用SendMessage获取checkbox状态吗
不论你是用MFC,还是C# winform,还是WPF,用以上代码都可以准确获取checkbox的状态,而且该库还有一个配套的工具,叫UISpy,这个工具可以获取控件的各个属性以及该控件所拥有的操作方法,直接照着这个工具所获取的信息就可以写出代码来,十分容易

vc++如何让checkbox处于选中状态
((Button*)(GetDlgItem( IDC_CHECK1 )))->SetCheck( 1 ) ; \/\/IDC_CHECK is ID for control

Access或VBVBA获取了窗体或控件的句柄Hwnd如果用API设置焦点到这个控件...
Access或VB VBA 获取了窗体或控件的句柄 Hwnd, 如果用API 设置焦点到这个控件或窗体上 可使用以下的代码,要准确定位焦点 1. 使用VB API SendMessage来实现 简易使用SendMessage,比SetFocus更为底层,调用速度快Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As...

vb6(SP6) 通用控件5.0的listview中的checkbox listview中添加控件...
l = SendMessage(ListView1.hwnd, LVM_FIRST + 54, 0, l)End Sub 2、每个项目后面都添加一个按钮或者checkbox是不可以的,windows系统层面上没有提供这个功能,并且你加上了也没有相关的API能获得其状态。3、VC可以,VB做不到,VC的思路是,创建一个对话框资源,然后把自定义的功能加入到对话框...

jquery怎样获取多个复选框的值?
可以参考下面的代码:(document).ready(function(){ varchecked=[];("#submitButton").click(function(){ ('input:checkbox:checked').each(function(){ checked.push($(this).val());});alert(checked);});});

相似回答