C# 以编程方式双击系统托盘图标Windows xp/7

C# 以编程方式双击系统托盘图标Windows xp/7,c#,c++,winapi,windows-7,windows-xp,C#,C++,Winapi,Windows 7,Windows Xp,如何以编程方式双击Windows xp/7中的系统托盘图标并打开应用程序窗口?是要打开自己应用程序的程序吗?然后,您可以向该进程发送消息以强制其打开 本文可能会帮助您在进程之间发送消息。 你不能。使用Spy++看起来“用户升级通知区域”无法单击按钮,您无法控制可查看的图标。您可以使用它向操作系统发送输入并双击特定位置: void MouseMove (double x, double y ) { double fx = x*65535.0f; double fy = y*655

如何以编程方式双击Windows xp/7中的系统托盘图标并打开应用程序窗口?

是要打开自己应用程序的程序吗?然后,您可以向该进程发送消息以强制其打开

本文可能会帮助您在进程之间发送消息。
你不能。使用Spy++看起来“用户升级通知区域”无法单击按钮,您无法控制可查看的图标。

您可以使用它向操作系统发送输入并双击特定位置:

void MouseMove (double x, double y ) 
{
    double fx = x*65535.0f;
    double fy = y*65535.0f;
    INPUT  Input={0};
    Input.type      = INPUT_MOUSE;
    Input.mi.dwFlags  = MOUSEEVENTF_MOVE|MOUSEEVENTF_ABSOLUTE;
    Input.mi.dx = (long)fx;
    Input.mi.dy = (long)fy;
    ::SendInput(1,&Input,sizeof(INPUT));
}
void lClick(){
    INPUT Input={0};
    // left down
    Input.type = INPUT_MOUSE;
    Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
    ::SendInput(1,&Input,sizeof(INPUT));
    ::ZeroMemory(&Input,sizeof(INPUT));
    // left up
    Input.type = INPUT_MOUSE;
    Input.mi.dwFlags  = MOUSEEVENTF_LEFTUP;
    ::SendInput(1,&Input,sizeof(INPUT));
}
然后在图标所在的位置调用mousemove,然后单击两次。
但这意味着程序任务栏图标不会移动。。。取决于程序是什么,以及您是否了解计算机。

您试图以错误的方式解决此问题。向应用程序发送一条消息,要求其打开。不要尝试双击图标。在WindowsXP和Windows7中,你不可能让它可靠地工作。