C#中 如何写一个类得到引用该类的程序的窗口句柄,并通过这些句柄对窗口里的控件属性设置?

给个思路也好啊~~谢谢了,分不多,希望大家帮忙
我迷惑的地方有:
1.我写了一个类,引用该类的时候这个类怎么读到当前程序的所有窗口句柄?用This肯定不行嘛,怎么表达?
2.有了句柄后怎么弄得到控制控件的属性呢?

或者还有没有别的办法可以控制各窗体的控件属性?[如在需要的时候设置["textbox.visiabe=false"]

第1个回答  2008-12-08
第一个问题很简单 在该类的构造函数里让使用者传入使用对象就行了

当然如果要有很多 可以传入arraylist之类的吧 这是最笨的方法了
然后向窗口发消息就行了
第2个回答  2008-12-08
第一个问题不知道
我是通过以下的代码获得和设置子窗口的属性:
Form f = new Form();
其中 groupBox2 、tb_send_msg都是f的控件的name
f.Text = "Talking with " + targetname+"...";

f.Controls["groupBox2"].ResumeLayout(false);
f.Controls["groupBox1"].ResumeLayout(false);
f.Controls["groupBox2"].PerformLayout();
f.ResumeLayout(false);
f.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.childrenform_FormClosing);
f.Controls["groupBox2"].Controls["tb_send_msg"].KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_send_msg_KeyDown);
f.Controls["groupBox2"].Controls["tb_send_msg"].TextChanged += new System.EventHandler(this.tb_send_msg_TextChanged);

childrenforms.Add(f);
f.Show();
TextBox tb = (TextBox)f.Controls["groupBox2"].Controls["tb_send_msg"];
tb.TabIndex = 0;本回答被提问者采纳

c# 获得一个程序的窗口句柄,并且修改它的标题
第一步:获取目标窗口句柄 首先引用命名空间:using System.Runtime.InteropServices; [DllImport("user32.dll", EntryPoint = "FindWindow")] public static extern IntPtr FindWindow( string lpClassName, string lpWindowName );利用FindWindow获得目标窗口句柄 第一个参数是类名,第二个...

如何用C#获取外部程序(VC写的)窗口中某个按钮的句柄并执行点击操作?
IntPtr lb = FindWindowByIndex(mwh,3);if (lb == IntPtr.Zero)throw new Exception("Unable to find listbox1");else Console.WriteLine("Handle to listbox1 is " + lb);} 方法:\/\/通过索引查找相应控件句柄 static IntPtr FindWindowByIndex(IntPtr hwndParent,int index){ if (index =...

怎么用C#获取指定窗口的句柄
public static extern int WindowFromPoint(int xPoint,int yPoint );只要能够获取鼠标的位置,然后调用该函数就可以得到窗口句柄。获取鼠标位置,需要使用鼠标钩子,本文使用已经设计好的鼠标钩子类,关于该类的详细信息见参考资料。启动VS,新建C# WinForm项目,如图:怎么用C#获取指定窗口的句柄 引用Win32Api...

C#得到窗口句柄后遍历窗口控件句柄
GetHandle(this.Controls);然后所有的句柄就保存到handleList里面了.

C#获取当前窗体句柄及该窗体里的信息
C#获取当前窗体句柄及该窗体里的信息可以参考以下的代码:FindWindow(lpClassName, {窗口的类名} lpWindowName: PChar {窗口的标题} ): HWND; {返回窗口的句柄; 失败返回 0} \/\/FindWindowEx 比 FindWindow 多出两个句柄参数:FindWindowEx(Parent: HWND; {要查找子窗口的父窗口句柄} Child: HWND; ...

C#自定义类中如何获取主窗口的控件引用
global::WindowsApplication1.Properties.Resources是通过一个绝对的地址引用到程序的资源文件,是文件。控件是什么?其实就是一段代码的封装,再加上显示样式,不是资源文件,所以我觉得应该找不到。您有3中方法,我十分赞成第一种,其余不是太懂,晕晕的。原因:窗体其实也是一个类,控件只不过是类中的...

C# 根据进程ID获取进程主窗口句柄
\/\/\/ 子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndPareRt窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。 \/\/\/ 要查找的窗口的类名,如果设为null,表...

c#获取一个程序的所有窗口后识别出指定类名的句柄(主程序打开的窗口标题...
handle. HANDLE WINAPI GetProcessHandleFromHwnd( HWND hwnd, ); 这个函数通过窗口句柄获得进程句柄。有了进程句柄,PID是不是就知道怎么获得了?什么?不知道?那我告诉你,GetProcessId可以通过进程句柄获得进程ID: DWORD WINAPI GetProcessId( __in HANDLE Process );

用C#操作API实现填写桌面窗体内的textbox,并点击窗体内按钮
1.打开要操作的程序 2.把这个程序窗口置顶!也就算是激活了(主窗口的句柄你可以得到!)3.获得这个窗口在屏幕上的位置信息(程序窗口左上角的坐标值)设为(x,y)4.获得你要操作的按钮在窗口上的坐标信息(a,b),那么这个按钮在整个屏幕里的坐标值就是(x+a,y+b)5.移动鼠标到(x+a,y+b)这个...

如何在C#中,在一个类里调用另外一个类的方法
public void MethodB A.MethodA();\/\/第一种方式 如果MethodA()没有加static关键字 则使用 new A().MethodA();} 语言结构 类:一个基本的C#类中包含数据成员、属性、构造器和方法。属性可以是静态或实例成员。在C#中类的声明与C++和Java很相似。但是,不像C++,C#结构体与类是不支持继承多个父...

相似回答