作者linxiaoxi (葡萄神手)
看板C_Sharp
标题Re: [问题] 请问 这回圈在哪?
时间Thu Aug 18 17:07:37 2011
※ 引述《charles0203 (Mango)》之铭言:
: 最近在学API
: API的GetWindowText
: 这程式大概是 根据视窗title 来找到 该视窗介的控件
: 在表单上 建立一个button 就好了
: 我不懂的是 究竟是怎样产生回圈效果
: 让他可以不断执行 後面这行:
: Console.WriteLine(" Contains text of contro:"+ editText);
: 程式是用XP的 音量控制 来测试的
: 程式码:
: using System;
: using System.Text;
: using System.Windows.Forms;
: using System.Runtime.InteropServices;
: namespace user32_api_test1
: {
: public partial class Form1 : Form
: {
: [DllImport("User32.dll")]
: public static extern Int32 FindWindow(String lpClassName, String
: lpWindowName);
: [DllImport("User32.dll")]
: public static extern Boolean EnumChildWindows(int hWndParent,
: Delegate lpEnumFunc, int lParam);
: [DllImport("User32.dll")]
: public static extern Int32 GetWindowText(int hWnd, StringBuilder s,
: int nMaxCount);
: [DllImport("User32.dll")]
: public static extern Int32 GetWindowTextLength(int hwnd);
: [DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
: public static extern int GetDesktopWindow();
: int hWnd;
: public delegate int Callback(int hWnd,int lParam);
: public Form1()
: {
: InitializeComponent();
: }
: private void button2_Click(object sender, EventArgs e)
: {
: }//
: private void button1_Click(object sender, EventArgs e)
: {
: Callback myCallBack = new Callback(EnumChildGetValue);
: hWnd = FindWindow(null, "主音量");
: if(hWnd == 0)
: {
: MessageBox.Show("Please Start Calling Window Application");
: }
: else
: {
: EnumChildWindows(hWnd,myCallBack,0);
: }
: }
: public int EnumChildGetValue(int hWnd,int lParam)
: {
: StringBuilder formDetails = new StringBuilder(256);
: int txtValue;
: string editText="";
: txtValue =GetWindowText(hWnd,formDetails,256);
: editText = formDetails.ToString().Trim();
: Console.WriteLine(" Contains text of contro:"+ editText);
: return 1;
: }
: }//
: }
: Thanks in advance for any help
调用EnumChildWindows这个API的时候
直到调用到最后一个子窗体或者回调函数返回false
否则会一直枚举下去
所以除非想列举所有子窗体
否则,如果找子窗体中的其中一个
可以在回调函数EnumChildGetValue中做判断
如果相等,则返回0,这样枚举方法就中止不再枚举之后的子窗体
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.202.244.1
1F:推 charles0203:感谢解答XDDDD 08/18 17:57