当前位置: 首页 > 编程语言 > C#

如何在c#中使用user32.dll从类“ThunderRT6ListBox”的窗口中检索值分享

时间:2023-04-11 11:53:41 C#

中的extern桌面应用程序检索信息。我知道如何从文本框(类“编辑”)中提取文本,但我不知道如何从类名为“ThunderRT6ListBox”和“ThunderRT6ComboBox”的控件中提取值。我怎样才能做到这一点?我有这段代码可以从文本框中提取文本:FindWindow(字符串lpClassName,字符串lpWindowName);[DllImport("user32.dll",SetLastError=true,CharSet=CharSet.Auto)]publicstaticexternintGetClassName(IntPtrhWnd,StringBuilderlpClassName,intnMaxCount);[DllImport("user32.dll",EntryPoint="SendMessageTimeout",SetLastError=true,CharSet=CharSet.Auto)]publicstaticexternuintSendMessageTimeoutText(IntPtrhWnd,intMsg,intcountOfChars,StringBuilder文本,uint标志,uintuTImeoutj,单位结果);[DllImport("user32.dll",CharSet=CharSet.Ansi,SetLastError=true,ExactSpelling=true)]staticinternalexternboolEnumChildWindows(IntPtrhWndParent,funcCallBackChildfuncCallBack,IntPtrlParam);[DllImport("user32.dll",CharSet=CharSet.Auto,SetLastError=false)]staticexternIntPtrSendMessage(IntPtrhWnd,uintMsg,IntPtrwParam,StringBuilderlParam);constintLB_GETCOUNT=0x018B;constintLB_GETTEXT=0x0189;publicstaticstringGetText(IntPtrhwnd){vartext=newStringBuilder(1024);如果(SendMessageTimeoutText(hwnd,0xd,1024,text,0x2,1000,0)!=0){returntext.ToString();}返回””;}}publicfoo(){IntPtr值=newIntPtr(0x019C086A);//使用Spy++定位IDStringcaption=ModApi.GetText(value);}更新1:从ListBox读取的方法:publicstaticListGetListBoxContents(IntPtrlistBoxHwnd){intcnt=(int)SendMessage(listBoxHwnd,LB_GETCOUNT,IntPtr.Zero,null);列表listBoxContent=newList();for(inti=0;i

最新推荐
猜你喜欢