c#用FindWindow与SendMessage进行线程通信的问题

15641300456 2009-03-09 11:06:03

[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(
int hWnd, // handle to destination window
int Msg, // message
int wParam, // first message parameter
ref COPYDATASTRUCT lParam // second message parameter
);

[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern int FindWindow(string lpClassName, string
lpWindowName);


使用WINDOW_HANDLER = FindWindow(null, @"Foxmail");得到窗体句柄,然后SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds);发送消息这个没问题。
只是如果把这个窗口隐藏,只留下任务栏图标就无法得到当前窗口的句柄。

这种情况下应该如何处理?

PS:不过如果你知道他未隐藏之前的句柄,在它隐藏时同样还可以与它通信。
不过如果它一直没有显示过窗口就没有办法了。
...全文
179 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
15641300456 2009-03-11
  • 打赏
  • 举报
回复
使用 _Process.MainWindowHandle 同样会在窗口 隐藏时无法得到句柄
zgke 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 linaren 的回复:]
用进程取得进程的窗口
[/Quote]

System.Diagnostics.Process _Process = System.Diagnostics.Process.GetProcessById(进程ID);

使用 _Process.MainWindowHandle
linaren 2009-03-11
  • 打赏
  • 举报
回复
用进程取得进程的窗口

111,126

社区成员

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

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

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