标签: postmessage

确定窗口消息队列深度

我们有一个应用程序使用窗口消息队列将数据从套接字传递到消费者HWND(以~2100Hz的速率).此应用程序已工作超过2年.最近,我们的应用程序已经开始出现问题,我们的应用程序没有触发/执行WM_TIMER.我认为这是由于数据被泵入消息队列.

我的问题是有一种方法可以确定给定线程/ HWND的消息队列中有多少未决消息?

winapi postmessage message-queue

2
推荐指数
1
解决办法
1577
查看次数

未处理的 postMessage 会泄漏内存吗?

我有一个页面可以作为一个独立的网页或在一个特殊的“看门狗框架”中工作,它将定期使用 window.top.postMessage('message', '*');

问题是,如果页面作为独立网页加载,将无法捕获这些消息。用户可能会一次打开该页面数小时甚至数天。

这些未捕获的消息是否会消失得无影无踪,或者它们是否被排队或类似的事情导致内存泄漏?

javascript memory-leaks postmessage

2
推荐指数
1
解决办法
897
查看次数

TForm.Handle线程安全吗?

我经常将主窗体句柄传递给其他线程,以便它们可以将消息发送回主线程.我在2013年9月28日看到,Remy Lebeau说:

... TWinControl.Handle属性也不是线程安全的.您应该使用TApplication.Handle属性,或使用AllocateHWnd()创建自己的窗口.

这个回答有关传递字符串的问题.

手柄属性如何不安全?它是否在程序的生命周期中发生变化?

delphi multithreading postmessage

2
推荐指数
1
解决办法
216
查看次数

如何在 Puppeteer 中监听 postMessage 消息?

https://github.com/GoogleChrome/puppeteer/blob/master/examples/custom-event.js展示了如何定义自己的事件,但没有展示如何将事件数据传输回 Puppeteer 外部的代码。

例如,如果我想postMessage使用 Puppeteer 读取代码中页面的事件数据来启动页面,您会如何做?

相关: https: //github.com/GoogleChrome/puppeteer/issues/2366

events message google-chrome postmessage puppeteer

2
推荐指数
1
解决办法
3750
查看次数

postMessage() 到子窗口无法发布

我正在尝试将消息从父窗口发布到它打开的子窗口。然而,该消息并未被发布。

在父窗口脚本中:

function editAnnotation(annotKey){
    var annotString = annotToString();

    //open up the child window addAnnot.html.
    var editAnnotWindow = window.open("editAnnot.html", "Ratting","width=200,height=400,0,status=0,scrollbars=1");

    //send a message containing all the info from the current field. This message will cause all the fields to be prepopulated w info from annotation
    editAnnotWindow.postMessage(annotString, '*');
}
Run Code Online (Sandbox Code Playgroud)

在子窗口脚本中:

window.onload = addListeners();

/***********************************************************************
*
* Function that adds listeners for messages
*
*/
function addListeners() {

  console.log("addListeners() called");
  window.addEventListener('message', parseMessage, false);//listens for messages from the index.html file page

}


function parseMessage(event){ …
Run Code Online (Sandbox Code Playgroud)

javascript postmessage

2
推荐指数
1
解决办法
2805
查看次数

delphi:通过 64 位的 postmessage 发送一个类

我想让我的应用程序兼容 64 位。我正在努力处理 PostMessage 和 LPARAM。我通过 PostMessage 发送一个类的实例。我想知道将值test_data转换为 LPARAM 是否正确。

请看一下下面的代码:

// Data to send 
TMyData=class
  Data1: string;
  Data2: byte;
  Data3: TDateTime;
end;

// send
procedure TTestClass1.PostTestData(AData1: string; AData2: byte; AData3: TDateTime);
var
  test_data: TMyData;
begin
  test_data:= TMyData.Create;

  test_data.Data1:= AData1;
  test_data.Data2:= AData2;
  test_data.Data3:= AData3;

  PostMessage(my_handle,WM_MY_MESSAGE,0,LPARAM(test_data));
end;


// receive
procedure TTestClass2.Message_WM_MY_MESSAGE(var Msg: TMessage);
var
  test_data: TMyData;
begin
  test_data := TMyData(Msg.LParam); // is this also compatible with 64 Bit?

  try
    // Do some work
  finally
    test_data.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

上面的代码兼容64位吗?

delphi 64-bit postmessage

2
推荐指数
1
解决办法
944
查看次数

哪个更快:SetEvent,SendMessage,PostMessage

环境:Win32,C/C++

所有三个(3)都可以用于线程向main()发信号通知它已经完成了一个操作.

但哪一个是所有人中最快的信号?

嗯...

c winapi postmessage sendmessage

1
推荐指数
1
解决办法
4594
查看次数

Postmessage LParam截断

我的应用程序有一个工作线程,我使用PostMessage将字符串发送到主线程.对于1条消息,字符串在到达主线程中的消息处理程序时被截断.

字符串在工作线程中由一串原始数据构成,如下所示.它在最后的'20'结束.

'01010000000030000102000008850008855343414E204544474520000000000000000000'

解码到我要发送的字符串中它看起来像这样,这是正确的:

'0100 0.50000 LSB0288.588.5SCAN EDGE'

创建"SCAN EDGE"部分并发布它的代码是:tmp和s_out是字符串

x := 35;
for i := 1 to 10 do
begin
  tmp := '$' + copy(s,x,2);
  TryStrToInt(tmp,dec);
  s_out := s_out + chr(dec);
  x := x + 2;
end;
PostMessage(MainHandle,UM_CLONE, UM_756, Integer(PChar(s_out)));
Run Code Online (Sandbox Code Playgroud)

主线程中的消息处理程序是:i是一个字符串

i := pChar(msg.LParam);
Run Code Online (Sandbox Code Playgroud)

当它到达主线程时,我在调试器中看起来像这样:

'0100 0.50000 LSB0288.588.5SCAN EDG'#0

我怎么能纠正这个?

delphi multithreading postmessage delphi-7

1
推荐指数
1
解决办法
2295
查看次数

发送没有SendMessage和PostMessage的密钥

是否有可能发送键没有一个程序SendMessagePostMessageAPI?

delphi winapi postmessage sendmessage sendkeys

1
推荐指数
1
解决办法
1465
查看次数

window.postmessage()在不同选项卡中的应用程序之间进行通信

是否有机会使用window.postmessage()在同一浏览器的不同选项卡中的两个不同应用程序之间进行通信?

我知道你可以在应用程序和iFrame之间做到这一点,但不同的标签呢?

更新:

案例场景:

  1. 用户在一个选项卡中播放来自vk.com的音频

  2. 用户开始在另一个标签页面中播放来自youtube.com的视频

  3. youtube.com将postmessage()发送到视频开始播放的vk.com

  4. vk.com使音频保持沉默

谢谢

javascript cross-platform postmessage cross-domain

1
推荐指数
1
解决办法
3831
查看次数