比如我列出所有的进程,当我选择某个进程时,然后列出所有这个进程主窗口下的子窗口。然后获得子窗体的属性集合(就象spy++那样),该怎么做?
还有我也想用最开始说的那样,先列出主窗口的控件,然后获得控件的句柄。
两种方法我都想知道是否可行,怎么做。
注:两种方法都要在C#.NET下开发,而且另外的进程编写的语言都不知道
14 个解决方案
#1
如果你不会API,windows消息机制,你还是先了解一下先吧。C#干不了全部。
#2
无法获得别的进程的控件,我用自己写的WINSPY得到另一进程的控件句柄,但无法得到控件本身
用Control.FromHandle返回的是NULL
要得到别的进程控件的标题,类名简单,就是先得到指定窗口句柄,然后用EnumChildWindows
public delegate bool CallBack(IntPtr hwnd, IntPtr lParam);
[DllImport("user32.Dll")]
public static extern bool EnumChildWindows(IntPtr hWndParent,CallBack pfn, IntPtr lParam);
只要在你的CALLBACK中使用API的GetWindowText,GetClassName就行了,哈哈要不要把我的代码全给你呢?
用Control.FromHandle返回的是NULL
要得到别的进程控件的标题,类名简单,就是先得到指定窗口句柄,然后用EnumChildWindows
public delegate bool CallBack(IntPtr hwnd, IntPtr lParam);
[DllImport("user32.Dll")]
public static extern bool EnumChildWindows(IntPtr hWndParent,CallBack pfn, IntPtr lParam);
只要在你的CALLBACK中使用API的GetWindowText,GetClassName就行了,哈哈要不要把我的代码全给你呢?
#3
哈哈,多谢谢一把手。
我的编程只需要控件的句柄,因为编程的时候我不能确定要发消息给哪子窗口,所以我要列出窗口标题给用户选择。我开始是不太想用API,觉得很麻烦。
多谢你的回答,嘿嘿,我对你的WINSPY的代码很感兴趣,不知道你是怎么获得别的进程的控件集合的
我的编程只需要控件的句柄,因为编程的时候我不能确定要发消息给哪子窗口,所以我要列出窗口标题给用户选择。我开始是不太想用API,觉得很麻烦。
多谢你的回答,嘿嘿,我对你的WINSPY的代码很感兴趣,不知道你是怎么获得别的进程的控件集合的
#4
MARK
#5
顶
#6
还有,昨天我对一个进程的主窗口进行EnumChildWindows的枚举,怎么有时候能枚举到7个,有时候怎么1个也找不到,请问可能是什么原因呢?和EnumChildWindows有关系吗?
我是先GetProcesses(),然后找出我要的进程,再handle=por.Handle获得句柄,
再EnumChildWindows(handle,callback,IntPtr.Zero,0)
我是先GetProcesses(),然后找出我要的进程,再handle=por.Handle获得句柄,
再EnumChildWindows(handle,callback,IntPtr.Zero,0)
#7
我用spy++查看那个进程的主窗口,竟然没有发现它的子窗口,但是那个窗口名名有好多按钮个输入框的呀!!
#8
还是用我的WINSPY吧,现在功能不是很多,反正能实现你的要求,留下QQ
我送你代码,反正我送给好多网友了,我没空间,只能用QQ给你,不要信箱,我不写信的
我送你代码,反正我送给好多网友了,我没空间,只能用QQ给你,不要信箱,我不写信的
#9
恩
感谢呀
我的MSN:zsuyb@hotmail.com
你的?
感谢呀
我的MSN:zsuyb@hotmail.com
你的?
#10
[up]
#11
学习ing
#12
朋友,我没MSN啊,很早前用的那个忘了密码了,给个QQ吧
谁有空间也可以说一下,我放上去,以免大家重复开发
不过拒绝信箱
谁有空间也可以说一下,我放上去,以免大家重复开发
不过拒绝信箱
#13
给我QQ号,收到代码且你自己看就明白了,代码中用了好多API,今晚我改了一下,也可以得到密码框的内容了,其实就是把原来getwindowtext换成sendmessage
#14
恩。多谢了
QQ:22261318
QQ:22261318
#1
如果你不会API,windows消息机制,你还是先了解一下先吧。C#干不了全部。
#2
无法获得别的进程的控件,我用自己写的WINSPY得到另一进程的控件句柄,但无法得到控件本身
用Control.FromHandle返回的是NULL
要得到别的进程控件的标题,类名简单,就是先得到指定窗口句柄,然后用EnumChildWindows
public delegate bool CallBack(IntPtr hwnd, IntPtr lParam);
[DllImport("user32.Dll")]
public static extern bool EnumChildWindows(IntPtr hWndParent,CallBack pfn, IntPtr lParam);
只要在你的CALLBACK中使用API的GetWindowText,GetClassName就行了,哈哈要不要把我的代码全给你呢?
用Control.FromHandle返回的是NULL
要得到别的进程控件的标题,类名简单,就是先得到指定窗口句柄,然后用EnumChildWindows
public delegate bool CallBack(IntPtr hwnd, IntPtr lParam);
[DllImport("user32.Dll")]
public static extern bool EnumChildWindows(IntPtr hWndParent,CallBack pfn, IntPtr lParam);
只要在你的CALLBACK中使用API的GetWindowText,GetClassName就行了,哈哈要不要把我的代码全给你呢?
#3
哈哈,多谢谢一把手。
我的编程只需要控件的句柄,因为编程的时候我不能确定要发消息给哪子窗口,所以我要列出窗口标题给用户选择。我开始是不太想用API,觉得很麻烦。
多谢你的回答,嘿嘿,我对你的WINSPY的代码很感兴趣,不知道你是怎么获得别的进程的控件集合的
我的编程只需要控件的句柄,因为编程的时候我不能确定要发消息给哪子窗口,所以我要列出窗口标题给用户选择。我开始是不太想用API,觉得很麻烦。
多谢你的回答,嘿嘿,我对你的WINSPY的代码很感兴趣,不知道你是怎么获得别的进程的控件集合的
#4
MARK
#5
顶
#6
还有,昨天我对一个进程的主窗口进行EnumChildWindows的枚举,怎么有时候能枚举到7个,有时候怎么1个也找不到,请问可能是什么原因呢?和EnumChildWindows有关系吗?
我是先GetProcesses(),然后找出我要的进程,再handle=por.Handle获得句柄,
再EnumChildWindows(handle,callback,IntPtr.Zero,0)
我是先GetProcesses(),然后找出我要的进程,再handle=por.Handle获得句柄,
再EnumChildWindows(handle,callback,IntPtr.Zero,0)
#7
我用spy++查看那个进程的主窗口,竟然没有发现它的子窗口,但是那个窗口名名有好多按钮个输入框的呀!!
#8
还是用我的WINSPY吧,现在功能不是很多,反正能实现你的要求,留下QQ
我送你代码,反正我送给好多网友了,我没空间,只能用QQ给你,不要信箱,我不写信的
我送你代码,反正我送给好多网友了,我没空间,只能用QQ给你,不要信箱,我不写信的
#9
恩
感谢呀
我的MSN:zsuyb@hotmail.com
你的?
感谢呀
我的MSN:zsuyb@hotmail.com
你的?
#10
[up]
#11
学习ing
#12
朋友,我没MSN啊,很早前用的那个忘了密码了,给个QQ吧
谁有空间也可以说一下,我放上去,以免大家重复开发
不过拒绝信箱
谁有空间也可以说一下,我放上去,以免大家重复开发
不过拒绝信箱
#13
给我QQ号,收到代码且你自己看就明白了,代码中用了好多API,今晚我改了一下,也可以得到密码框的内容了,其实就是把原来getwindowtext换成sendmessage
#14
恩。多谢了
QQ:22261318
QQ:22261318