标签: sendmessage

Windows服务向用户窗口发送消息是否有特殊注意事项?

我必须编写一个监视事件的Windows服务应用程序(没有GUI),如果它发生,将向应用程序发送标准的Windows消息.应用程序的句柄将由DLL释放给服务,然后卸载,因此Windows消息是我们希望使用的方式.

但问题是服务是否需要做任何特殊的事情才能将SendMessage用于窗口句柄,因为它可能位于不同的屏幕上或Vista中.这是可能的,如果可以的话,我该怎么办?

winapi windows-services ipc sendmessage

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

获取表单处理程序时出错(Vb.net)

我有当前的代码:

Public Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function SendMessage(ByVal hWnd As HandleRef, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As String) As IntPtr
End Function

Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr

Public Function WindowHandle(ByVal sTitle As String) As Long
    WindowHandle = …
Run Code Online (Sandbox Code Playgroud)

vb.net math sendmessage findwindow

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

使用 PInvoke 从 C# 获取工具提示文本

我在 C# 中使用 PInvoke,尝试使用已知处理程序读取窗口中可见的工具提示,但是我尝试以这种方式检查的窗口应用程序因内存访问冲突错误而崩溃,或者根本不显示工具提示文本lpszText TOOLINFO 成员。

我正在使用回调调用EnumWindows,然后向该函数中的工具提示窗口发送一条消息:

public delegate bool CallBackPtr(IntPtr hwnd, IntPtr lParam);

static void Main(string[] args)
{
  callBackPtr = new CallBackPtr(Report);

  IntPtr hWnd = WindowFromPoint(<mouse coordinates point>);

  if (hWnd != IntPtr.Zero)
  {
        Console.Out.WriteLine("Window with handle " + hWnd +
                              " and class name " +
                              getWindowClassName(hWnd));

        EnumWindows(callBackPtr, hWnd);

        Console.Out.WriteLine();
  }


  public static bool Report(IntPtr hWnd, IntPtr lParam)
  {
        String windowClassName = getWindowClassName(hWnd);

        if (windowClassName.Contains("tool") &&
             GetParent(hWnd) == lParam)
        {
            string szToolText = new string(' ', 250); …
Run Code Online (Sandbox Code Playgroud)

c# pinvoke tooltip sendmessage

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

发送没有SendMessage和PostMessage的密钥

是否有可能发送键没有一个程序SendMessage和PostMessageAPI?

delphi winapi postmessage sendmessage sendkeys

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

SendMessage的正确声明是什么?如何转换我的代码以使用其参数?

我对各种声明SendMessage感到困惑.我怎么知道哪一个是正确的?

在我的c#winforms应用程序(Windows 7)中,我使用以下内容;

public class NativeMethods
{
    [DllImport("user32.dll")]
    // Currently uses 
    public static extern int SendMessage(IntPtr hWnd, uint wMsg, int wParam, int lParam);
    // Think I should probably be using 
    // public static extern int SendMessage(IntPtr hWnd, uint wMsg, UIntPtr wParam, IntPtr lParam);
}
Run Code Online (Sandbox Code Playgroud)

但是调用SendMessage的代码是

 NativeMethods.SendMessage(this.tv.Handle, 277, 1, 0);
Run Code Online (Sandbox Code Playgroud)

我如何确定要使用的参数,以便我可以切换到另一个声明?

c# winapi interop dllimport sendmessage

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

如何在php中解析json mailgun sendmessage响应?

这是我的代码:

$this->view->assign('mail', $mail);
         $mg = new Mailgun($this->getMailgunAPIKey());
         $domain = "sandbox1111.mailgun.org";  
         $res =  $mg->sendMessage($domain, array('from'    => 'bob@sandbox3445.mailgun.org', 
                            'to'      => 'mee@xxxxx.com', 
                            'subject' => $mail->getSubject(), 
                            'text'    => $mail->getBody()));
         var_dump( $res); 
Run Code Online (Sandbox Code Playgroud)

这是 var_dump 打印出来的内容:

object(stdClass)#228 (2) { ["http_response_body"]=> object(stdClass)#223 (2) { ["message"]=> string(18) "Queued. Thank you." ["id"]=> string(52) "<20131211155824.31559.48115@sandbox1111.mailgun.org>" } ["http_response_code"]=> int(200) }
Run Code Online (Sandbox Code Playgroud)

我尝试过var_dump( json_decode($res));,但打印出 NULL。例如,如何访问 [“http_response_code”]?

回答:

  var_dump( $res); 
         echo __LINE__.'<br/><br/>';
         var_dump( $res->http_response_body );
         echo __LINE__.$res->http_response_code.'<br/><br/>';
         echo $res->http_response_body->message.'<br/><br/>';
Run Code Online (Sandbox Code Playgroud)

印刷

object(stdClass)#228 (2) { ["http_response_body"]=> object(stdClass)#223 (2) { ["message"]=> string(18) "Queued. Thank you." …
Run Code Online (Sandbox Code Playgroud)

php parsing json sendmessage mailgun

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

使用SetParent将窗口嵌入外部进程的消息循环问题

我的Windows应用程序有一个标签界面.每个选项卡都会呈现一些UI内容.众所周知,如果我在主线程中进行非常耗时的for循环而不让其他人处理任何Windows消息,那么应用程序将被冻结.在冻结期间,我无法切换标签.

我受到了谷歌Chrome的多进程架构的启发.我尝试使用SetParent到嵌入过程到另一个过程.更具体一点:流程A是主人.它可以创建无限的工作流程.每个工作进程都有自己的消息循环.如果进程B被冻结,则不应冻结进程A和任何其他工作进程.

其实我错了:如果我点击按钮工作进程B在主线程中不间断地执行大量UI工作,不仅会阻止进程B的UI,还会阻止进程A的UI,直到我的测试代码结束.

有人可以分享一些灯吗?

delphi user-interface multithreading sendmessage blocking

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

PostMessage 和 HWND_BROADCAST

我正在尝试通过以下方式向所有窗口发送消息:

PostMessage( HWND_BROADCAST, 0x0401, 0, 0 );
or
SendMessage( HWND_BROADCAST, 0x0401, 0, 0 );
Run Code Online (Sandbox Code Playgroud)

问题是,没有窗口收到此消息。Windows 有自己的线程。问题是...如何向我的应用程序中的所有窗口发送消息,或者为什么此功能不起作用...

提前致谢。

c winapi postmessage broadcast sendmessage

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

MFC 向按钮发送消息(子级到父级)

我想从子窗口(CDialog)向父窗口(CFormview)发送消息。如果我按下子窗口上的取消按钮,对话框应该退出,程序应该继续执行父窗口上的停止按钮的代码。

void ChildDialog::OnBnClickedCancel()
{
    CDTParentView *pButtonWnd = (CDTParentView *)AfxGetMainWnd();
    pButtonWnd->OnBnClickedbuttonStop();
    CDialogEx::OnCancel();
}
Run Code Online (Sandbox Code Playgroud)

但是这个objore.cpp中有一个错误:

BOOL CObject::IsKindOf(const CRuntimeClass* pClass) const
{
    ENSURE(this != NULL);
    // it better be in valid memory, at least for CObject size
    ASSERT(AfxIsValidAddress(this, sizeof(CObject)));

    // simple SI case
    CRuntimeClass* pClassThis = GetRuntimeClass(); <------- error

    ENSURE(pClassThis);
    return pClassThis->IsDerivedFrom(pClass);
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我,有什么问题吗?也许发布一个更好的想法来发送按钮单击的消息?

c++ mfc parent button sendmessage

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

.SendMessage崩溃Unity C#

我正在使用OverlapSphere来检测对象的某个半径内的所有碰撞器.然后我过滤掉了一些我不在乎的东西.剩下的几个,我尝试向这些对象发送消息以更新其渲染颜色.每当它发送消息时,团结就会冻结.我试着做一些研究,我能找到的最好的东西是无限循环可以冻结它.但我认为没有潜力.这是代码:

发送消息的对象:

void sendmyMessage(bool status)
{
    Collider[] tiles = Physics.OverlapSphere(gameObject.transform.position, 10);

    int i = 0;
    while (i < tiles.Length)
    {
        if(tiles[i].tag == "Tile")
        {
            //turn light on
            if (status == true)
            {
                tiles[i].SendMessage("Highlight", true);
                i++;
            }

            //turn light off
            if (status == false)
            {
                tiles[i].SendMessage("Highlight", false);
                i++;
            }
        }     
    }
}
Run Code Online (Sandbox Code Playgroud)

对象接收消息:

void Highlight(bool status)
{
    //turn light on
    if(status == true)
    {
        gameObject.GetComponent<Renderer>().material.color = new Color(0, 0, 0);
    }

    //turn light off
    if(status == false)
    {
        gameObject.GetComponent<Renderer>().material.color = new …
Run Code Online (Sandbox Code Playgroud)

c# sendmessage unity-game-engine

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