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

时间:2011-07-27 10:32:26

标签: c# c++ winapi windows-7 windows-xp

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

3 个答案:

答案 0 :(得分:1)

您想要打开自己的应用程序吗?然后,您可以向此过程发送消息以强制它打开。

本文可以帮助您在进程之间发送消息。 send message to other process

答案 1 :(得分:1)

你做不到。使用Spy ++看起来“用户升级通知区域”无法单击按钮,您无法控制哪些图标可见。

答案 2 :(得分:0)

您可以使用http://msdn.microsoft.com/en-us/library/ms646310.aspx向操作系统发送输入并双击特定位置:

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,然后单击两次。 但这会暗示程序任务栏图标不会移动...取决于程序是什么,以及您是否知道计算机。