搜了一下PostMessage:
PostMessage 函数功能:该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回。消息队列里的消息通过调用GetMessage和PeekMessage取得。
函数原型:B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
参数
hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
HWND.BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。
NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样。
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:需要以 HWND_BROADCAST方式通信的应用程序应当用函数 RegisterwindwosMessage来获得应用程序间通信的独特的消息。
如果发送一个低于WM_USER范围的消息给异步消息函数(PostMessage.SendNotifyMessage,SendMesssgeCallback),消息参数不能包含指针。否则,操作将会失败。函数将再接收线程处理消息之前返回,发送者将在内存被使用之前释放。
HWND hWnd是窗口句柄,可以是:form1、form2或form3等?
PostMessage 函数功能:该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回。消息队列里的消息通过调用GetMessage和PeekMessage取得。
函数原型:B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
参数
hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
HWND.BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。
NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样。
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:需要以 HWND_BROADCAST方式通信的应用程序应当用函数 RegisterwindwosMessage来获得应用程序间通信的独特的消息。
如果发送一个低于WM_USER范围的消息给异步消息函数(PostMessage.SendNotifyMessage,SendMesssgeCallback),消息参数不能包含指针。否则,操作将会失败。函数将再接收线程处理消息之前返回,发送者将在内存被使用之前释放。
HWND hWnd是窗口句柄,可以是:form1、form2或form3等?
解决方案 »
- 文件检索能否实现汉字拼音模糊查询?
- 上周老孟庆双百,今日亮剑来学习
- 窗口释放问题
- 编译能通过,但调试时出错,请问这 是什么原因呢?我是初学者,请各位大师指点,急,谢谢!
- adoconnection控件连接oracle数据库
- 求敲击键盘代码!
- SQLServer表中有八个Chat型字段,怎样用SQL语句汇总出符号条件的数据的个数?
- error:can not insert or delete from grid ------(急 急) 马上给分
- 求救:Windows系统支持对文件操作的外壳扩展功能对应的接口是什么?
- 在delphi中使用ADO
- 在Windows 7下开发的程序在Windows XP下不能运行
- 请教,我是菜鸟 如何读取记录数
当然,得这个窗口有句柄...
procedure WMProcess(var Msg: TMessage); message WM_ MyMessage;
FWindowHandle := Classes.AllocateHWnd(WMProcess);这个可以创建类的句柄
对,正是如此!
你可以试一下,
procedure WMProcess(var Msg: TMessage); message WM_ MyMessage; procedure WMProcess(var Msg: TMessage); message WM_ MyMessage;
begin
ShowMessage('Hello World!');
end;procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(Form1.Handle,MyMessage,0,0);
end;
begin
ShowMessage('Hello World!');
end;procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(Form1.Handle,MyMessage,0,0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(Form1.Handle,form2.close;,0,0); //Button1不知写在那里?
end;
应该是这样的吧?
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(Form1.Handle,WM_Close;,0,0); //Button1不知写在那里?
end;