如果通过窗口句柄获得窗口类或给未知名称已知类窗体发消息。

圣骑士 2010-06-30 08:38:39
A程序需要像B程序发送消息,B程序的标题不确定(一直变),但是知道B程序的类,我通过FindWindow(destProcessClassName, null);获得第一个窗口句柄,然后通过GetWindow(ParenthWnd, 2);遍历后面的类,试图通过句柄获得GUID,如果是我要得就发送消息。请问如果通过返回的句柄获得GUID。

如果有其它方法得到已知窗口类的句柄,也请说明(根据名称就算了,名称未知),谢谢。
...全文
182 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
whowhen21 2010-06-30
  • 打赏
  • 举报
回复
获取GUID?发送消息好像没用到GUID啊,不是窗体或控件的Handle吗,PostMessage这个API么
***********************************************************
欢迎使用 CSDN 小秘书
.Net 学习QQ群,欢迎加入: 67784580
***********************************************************
兔子-顾问 2010-06-30
  • 打赏
  • 举报
回复
获得句柄的GUID?

Process[] processes = Process.GetProcesses();//获得所有进程
//遍历
foreach (Process p in processes)
{
//没窗口的直接略过
if (p.MainWindowHandle == IntPtr.Zero) continue;
//p
//可以获得每个进程
Form f = Form.FromHandle(p.MainWindowHandle) as Form;//进程主窗体,GUID?不知道你说的是什么。
}


没太看懂你意思。猜的。不知道这是不是你要的。
圣骑士 2010-06-30
  • 打赏
  • 举报
回复
最后还是用了API函数GetClassName获得了类名,算是基本解决了问题。

继续询问获得GUID?谁直到回复一下。

我之所以想拿到GUID,是因为无论通过类名,还是标题名,都会有很多匹配的,而GUID号是唯一的,我想只给一个程序发,而不是找到好多匹配的然后广播出去。
GUID就是c#中默认创建windows应用程序AssemblyInfo.cs中
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("9058bd8e-9451-4be0-be51-edf55019eeac")]

继续询问获得GUID?谁直到回复一下

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧