求C#中使用PostMessage的一个实例。

hui_play 2010-05-26 04:14:02
我使用C#向另一个程序发消息,不知道该怎么整,PostMessage如何引用以及PostMessage的四个参数具体定义。
千万别复制,我看所有的帖子都是复制的,统一的回答,让我脑袋疼。谢谢各位了。在线等
...全文
570 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-05-26
  • 打赏
  • 举报
回复
[DllImport( "user32.dll ", CharSet = CharSet.Unicode)]
public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, string lParam);
hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
  HWND.BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。
  NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样。
  Msg:指定被寄送的消息。
  wParam:指定附加的消息特定的信息。
  IParam:指定附加的消息特定的信息。
hui_play 2010-05-26
  • 打赏
  • 举报
回复
xiaozhi_5638,前两个参数一个是另一个窗口句柄,另一个是消息内容,那第三个还第四个写零可以吗?
还有就是消息内容的那个参数,我要传的是字符串。是否要进行转换、
[Quote=引用 2 楼 xiaozhi_5638 的回复:]
[dllimport("user32.dll")]//引入user32.dll

public static extern intptr postmessage(intptr hwnd, int msg, int wparam, int lparam);//hwnd是另一个窗口句柄,msg消息ID
[/Quote]
兔子-顾问 2010-05-26
  • 打赏
  • 举报
回复
声明
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
public const int WM_CLOSE = 0x10;


调用
PostMessage(Handle, WM_CLOSE, 0, 0);
请叫我卷福 2010-05-26
  • 打赏
  • 举报
回复
如果另一个程序是C# Winform的话,可以在form类或者其他控件类的WndProc()方法中截获消息ID为msg的消息,然后处理
请叫我卷福 2010-05-26
  • 打赏
  • 举报
回复
[dllimport("user32.dll")]//引入user32.dll

public static extern intptr postmessage(intptr hwnd, int msg, int wparam, int lparam);//hwnd是另一个窗口句柄,msg消息ID
whslovexyp 2010-05-26
  • 打赏
  • 举报
回复
不知道这样做行不
用C++的FindWindow找到句柄
HWND FindWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName
);
再调用如下
Message msg = Message.Create(获取到的句柄,
MsgWindow.WM_CUSTOMMSG,
(IntPtr)e.X,
(IntPtr)e.Y);
MessageWindow.SendMessage(ref msg);

110,538

社区成员

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

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

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